gsoc tcptest - tcp/ip regression test

27
GSoC tcptest - TCP/IP Regression Test Victor Hugo Bilouro Google Summer of Code O que é o Google Summer of Code? A instituição: "The FreeBSD Project" Sistemas Unix Porque foi a plataforma escolhida FreeBSD - Por que será que o Google tem 10k+ instalações em suas redes de produção? Teste de software no mundo código aberto Tipos de testes mais usados TCP/IP Uma visão de alto nível dessa suíte de protocolos TCP/IP Regression Test – tcptest (python)

Upload: victor-bilouro

Post on 25-Dec-2014

1.402 views

Category:

Technology


0 download

DESCRIPTION

Google Summer of Code project made in python presentation

TRANSCRIPT

Page 1: GSoC tcptest - TCP/IP Regression Test

GSoC tcptest - TCP/IP Regression Test

Victor Hugo Bilouro

Google Summer of Code   O que é o Google Summer of Code?     A instituição: "The FreeBSD Project"

Sistemas Unix    Porque foi a plataforma escolhida    FreeBSD - Por que será que o Google tem 10k+ instalações em     suas redes de produção? 

Teste de software no mundo código aberto   Tipos de testes mais usados

TCP/IP   Uma visão de alto nível dessa suíte de protocolos    TCP/IP Regression Test – tcptest (python)

 

Page 2: GSoC tcptest - TCP/IP Regression Test

GSoC tcptest - TCP/IP Regression Test

Victor Hugo Bilouro

–O que é o Google Summer of Code?

–Quais são os objetivos do

programa?

–Como funciona o GSoC?

–Pagamento

–Projetos participantes

–Estatísticas do GSoC

Google Summer of Code   O que é o Google Summer of Code?

Page 3: GSoC tcptest - TCP/IP Regression Test

GSoC tcptest - TCP/IP Regression Test

Victor Hugo Bilouro

O que é o Google Summer of Code?

O Google Summer of Code é um programa criado para incentivar alunos de faculdade a participar do desenvolvimento de projetos open source

Google Summer of Code   O que é o Google Summer of Code?

Page 4: GSoC tcptest - TCP/IP Regression Test

GSoC tcptest - TCP/IP Regression Test

Victor Hugo Bilouro

Quais são os objetivos do programa?Inspirar desenvolvedores a participar de projetos código aberto.

Prover a alunos de faculdade financiamento para trabalhar em

seus projetos de faculdade.Trazer mais código aberto criado e distribuido em beneƒício de

todos. Ajudar os projetos código aberto a identificar e envolver novos

desenvolvedores e commiters.

Google Summer of Code   O que é o Google Summer of Code?

Page 5: GSoC tcptest - TCP/IP Regression Test

GSoC tcptest - TCP/IP Regression Test

Victor Hugo Bilouro

Como funciona o GSoC?Princípios

O verão como oportunidade de trabalhosTrabalhando no verão com projetos código abertoExposição com o mundo real

Anuncio > organizações > alunos/orgs > org rank > google slots

> adequação > codificação > avaliação > codificação > avaliação

final.

Google Summer of Code   O que é o Google Summer of Code?

Page 6: GSoC tcptest - TCP/IP Regression Test

GSoC tcptest - TCP/IP Regression Test

Victor Hugo Bilouro

Projetos participantes

Sistemas Operacionais

Mobiles

Bancos de dados

Internet e Redes

Video, foto e TV

Multimídia, Audio e Música

Trabalhos Científicos e publicações

Tecnologias Web

Games

Google Summer of Code   O que é o Google Summer of Code?

Page 7: GSoC tcptest - TCP/IP Regression Test

GSoC tcptest - TCP/IP Regression Test

Victor Hugo Bilouro

OrganizaçõesGoogle

MINIXDebian Gentoo openSUSE

PostgreSQLMySQL

PHPPython Software FoundationThe Perl FoundationMono ProjectThe Eclipse Foundation Subclipse

SubversionMercurial

The Apache Foundation WebKitDjangoJoomla Plone FoundationZope Foundation, IncWordPressMoinMoin Wiki Project

The FreeBSD Project The NetBSD Project

The X.Org FoundationGNOME KDEThe Mozilla ProjectThe Wine ProjectNmap GIMP

Page 8: GSoC tcptest - TCP/IP Regression Test

GSoC tcptest - TCP/IP Regression Test

Victor Hugo Bilouro

Estatísticas

Organizações

2006 ==> 100

2007 ==> 130

2008 ==> 177*

Estudantes

2006 ==> 630

2007 ==> 900

2008 ==> 1125

*contadas na página http://code.google.com/soc/2008/ em 17/09/08 as 11:23h

Google Summer of Code   O que é o Google Summer of Code?

Page 9: GSoC tcptest - TCP/IP Regression Test

GSoC tcptest - TCP/IP Regression Test

Victor Hugo Bilouro

Google Summer of Code   O que é o Google Summer of Code?     A instituição: "The FreeBSD Project"

Sistemas Unix    Porque foi a plataforma escolhida    FreeBSD - Por que será que o Google tem 10k+ instalações em     suas redes de produção? 

Teste de software no mundo código aberto   Tipos de testes mais usados

TCP/IP   Uma visão de alto nível dessa suíte de protocolos    TCP/IP Regression Test – tcptest (python)

 

Page 10: GSoC tcptest - TCP/IP Regression Test

GSoC tcptest - TCP/IP Regression Test

Victor Hugo Bilouro

A instituição: "The FreeBSD Project"

19 Estudantes em 2008

“The FreeBSD Project” é uma organização grande e madura.

Inicio-se 15 anos atrás, em 1993, mas é baseado no trabalhado

realizado na faculdade de Berkeley, já com 30 anos (1978).

Atualmente por volta de 300 desenvolvedores tem acesso de

escruta ao sistema de controle de versão de produção;

Milhares com acesso aos servidores Perforce para experimentos

e/ou desenvolvimento de software para o freebsd; (gsoc)

Mentoring ativo. Não só GsoC, Mailing, blogs, ircs.

Google Summer of Code   A instituição: "The FreeBSD Project"

Page 11: GSoC tcptest - TCP/IP Regression Test

GSoC tcptest - TCP/IP Regression Test

Victor Hugo Bilouro

Google Summer of Code   O que é o Google Summer of Code?     A instituição: "The FreeBSD Project"

Sistemas Unix    Porque foi a plataforma escolhida    FreeBSD - Por que será que o Google tem 10k+ instalações em     suas redes de produção? 

Teste de software no mundo código aberto   Tipos de testes mais usados

TCP/IP   Uma visão de alto nível dessa suíte de protocolos    TCP/IP Regression Test – tcptest (python)

 

Page 12: GSoC tcptest - TCP/IP Regression Test

GSoC tcptest - TCP/IP Regression Test

Victor Hugo Bilouro

Pilha TCP/IP confiável

Codigo fonte aberto e livre

Facilidade de programação e debug

Facilidade de configuração do tcp/ip

Sistemas Unix    Porque foi a plataforma escolhida

 

Porque foi a plataforma escolhida

Page 13: GSoC tcptest - TCP/IP Regression Test

GSoC tcptest - TCP/IP Regression Test

Victor Hugo Bilouro

Google Summer of Code   O que é o Google Summer of Code?     A instituição: "The FreeBSD Project"

Sistemas Unix    Porque foi a plataforma escolhida    FreeBSD - Por que será que o Google tem 10k+ instalações em     suas redes de produção? 

Teste de software no mundo código aberto   Tipos de testes mais usados

TCP/IP   Uma visão de alto nível dessa suíte de protocolos    TCP/IP Regression Test – tcptest (python)

 

Page 14: GSoC tcptest - TCP/IP Regression Test

GSoC tcptest - TCP/IP Regression Test

Victor Hugo Bilouro

Relevancia para o Google: O Google tem milhares de

dispositivos baseados no FreeBSD ajudando a rodar as redes de

produção, MacOS X laptops e alguns servidores FreeBSD de teste e

monitoramento.

Pesquisas no FreeBSD envolvendo segurança, redes e outras

áreas tem sido regularmente adotadas no Google e nos 30 de

história por outros sistemas código aberto..

Um exemplo recente foi o JEMalloc. usado no Firefox e largamente

usado no Google.

Segundo a Google este é um momento excelente para o FreeBSD.

Grandes empresas já usam em suas soluções embedded: juniper,

NetApp, Force 10 e Cisco.

Sistemas Unix    FreeBSD - Por que será que o Google tem 10k+ instalações em     suas redes de produção?

 FreeBSD - 10k+ instalações no Google?

Page 15: GSoC tcptest - TCP/IP Regression Test

GSoC tcptest - TCP/IP Regression Test

Victor Hugo Bilouro

Sistemas Unix    FreeBSD - Por que será que o Google tem 10k+ instalações em     suas redes de produção?

 FreeBSD - 10k+ instalações no Google?

http://bsd.slashdot.org/bsd/08/03/06/1313218.shtml

Page 16: GSoC tcptest - TCP/IP Regression Test

GSoC tcptest - TCP/IP Regression Test

Victor Hugo Bilouro

Sistemas Unix    FreeBSD - Por que será que o Google tem 10k+ instalações em     suas redes de produção?

 FreeBSD - 10k+ instalações no Google?

http://bsd.slashdot.org/bsd/08/03/06/1313218.shtml

Page 17: GSoC tcptest - TCP/IP Regression Test

GSoC tcptest - TCP/IP Regression Test

Victor Hugo Bilouro

Google Summer of Code   O que é o Google Summer of Code?     A instituição: "The FreeBSD Project"

Sistemas Unix    Porque foi a plataforma escolhida    FreeBSD - Por que será que o Google tem 10k+ instalações em     suas redes de produção? 

Teste de software no mundo código aberto   Tipos de testes mais usados

TCP/IP   Uma visão de alto nível dessa suíte de protocolos    TCP/IP Regression Test – tcptest (python)

 

Page 18: GSoC tcptest - TCP/IP Regression Test

GSoC tcptest - TCP/IP Regression Test

Victor Hugo Bilouro

Teste de Unidade

Teste de Regressão

Teste de Performance / Estresse

Teste de Segurança

Teste de Internacionalização

Homologação? Release Candidate

Teste de software no mundo código aberto   Tipos de testes mais usados

 Tipos de testes mais usados

Page 19: GSoC tcptest - TCP/IP Regression Test

GSoC tcptest - TCP/IP Regression Test

Victor Hugo Bilouro

Google Summer of Code   O que é o Google Summer of Code?     A instituição: "The FreeBSD Project"

Sistemas Unix    Porque foi a plataforma escolhida    FreeBSD - Por que será que o Google tem 10k+ instalações em     suas redes de produção? 

Teste de software no mundo código aberto   Tipos de testes mais usados

TCP/IP   Uma visão de alto nível dessa suíte de protocolos    TCP/IP Regression Test – tcptest (python)

 

Page 20: GSoC tcptest - TCP/IP Regression Test

GSoC tcptest - TCP/IP Regression Test

Victor Hugo Bilouro

TCP/IP   Uma visão de alto nível dessa suíte de protocolos

Uma visão de alto nível dessa suíte de

protocolosTCP/UDP

Exemplo básico

•[userland] browser solicita conexão tcp com o servidor

•[os] three way handshake

•[userland] browser solicita conteúdo

•[os] solicita e retorna ao browser

•[os] encerra a conexão

Page 21: GSoC tcptest - TCP/IP Regression Test

GSoC tcptest - TCP/IP Regression Test

Victor Hugo Bilouro

Google Summer of Code   O que é o Google Summer of Code?     A instituição: "The FreeBSD Project"

Sistemas Unix    Porque foi a plataforma escolhida    FreeBSD - Por que será que o Google tem 10k+ instalações em     suas redes de produção? 

Teste de software no mundo código aberto   Tipos de testes mais usados

TCP/IP   Uma visão de alto nível dessa suíte de protocolos    TCP/IP Regression Test – tcptest (python)

 

Page 22: GSoC tcptest - TCP/IP Regression Test

GSoC tcptest - TCP/IP Regression Test

Victor Hugo Bilouro

TCP/IP   TCP/IP Regression Test – tcptest (python)

TCP/IP Regression Test – tcptest (python)

O que é?

•Ferramenta de teste

Tecnologias:

•python > pyrex > libpcap > pcs > unittest > tcptest

•Como funciona:

•libpcap > pyrex > pcs > tcptest

•Exemplo

Page 23: GSoC tcptest - TCP/IP Regression Test

GSoC tcptest - TCP/IP Regression Test

Victor Hugo Bilouro

#constants self.thisside = 0 self.thatside = 1

self.tcb = tcptest.tcb() self.tcb.ip = { self.thisside : pcs.inet_atol("10.211.55.210") , \ self.thatside : pcs.inet_atol("10.211.55.220")}

self.tcb.ipid = { self.thisside : random.randrange(1, (1<<16)-1) , \ self.thatside : 0}

self.tcb.tcpport = { self.thisside : random.randrange(50000, 60000) , \ self.thatside : 9}

self.tcb.tcpsequence = { self.thisside : random.randrange(1,(1<<32)-1),\ self.thatside : 0}

self.tcb.ether = \ { self.thisside : ethernet.ether_atob("00:1c:42:9d:57:c9") , \ self.thatside : ethernet.ether_atob("00:1c:42:db:c5:22") }

self.tcb.output = { self.thisside : pcs.PcapConnector("ed0") , \ self.thatside : pcs.PcapConnector("ed0") }

Page 24: GSoC tcptest - TCP/IP Regression Test

GSoC tcptest - TCP/IP Regression Test

Victor Hugo Bilouro

def threewayhandshakenoopt(self, tcb, from_, to):

# #--->Sending SYN (ipsyn, tcpsyn) = createsyn(self, tcb, from_, to) createwritepacket(self, tcb, ipsyn, tcpsyn, from_, to) # #--->Receivinig SYN + ACK (ipsynack, tcpsynack) = receive(self, tcb, from_, to) #Some blackmagic to use assertSequenceAcknowledgmentOK at SYN tcb.tcpsequence[ to ] = tcpsynack.sequence assertSequenceAcknowledgmentOK(self, tcb, tcpsynack, from_, to) assertSynPresent(self, tcpsynack) tcb.tcpsequence[ to ] = tcpsynack.sequence + 1

# #-->Sending ACK (ipack, tcpack) = createip(self, tcb, from_, to) createwritepacket(self, tcb, ipack, tcpack, from_, to)

Page 25: GSoC tcptest - TCP/IP Regression Test

GSoC tcptest - TCP/IP Regression Test

Victor Hugo Bilouro

def createsyn(self, tcb, from_, to): """Create tcp syn flag expertise"""

(ip, tcp) = createip(self, tcb, from_, to)

#business tcp.syn = 1 tcp.ack = 0 tcb.tcpsequence[ from_ ] += 1

return (ip, tcp)

def createip(self, tcb, from_, to): """Create ip packet tcp is also created here""" ip1 = ipv4.ipv4()

ip1.version = 4 ip1.hlen = 5 ip1.tos = 0 ip1.id = tcb.ipid[ from_ ] ip1.flags = 0 ip1.offset = 0 ip1.ttl = 64 ip1.protocol = pcs.IPPROTO_TCP ip1.src = tcb.ip[ from_ ] ip1.dst = tcb.ip[ to ] ip1.length = len(ip1.bytes)

# tcp here tcp1 = createtcp(self, tcb, ip1, from_, to) ip1.length = len(ip1.bytes) + len(tcp1.bytes) #ip1.checksum = ip_cksum(ip1) #doind this at checkout(createwritepacket) return (ip1, tcp1)

Page 26: GSoC tcptest - TCP/IP Regression Test

GSoC tcptest - TCP/IP Regression Test

Victor Hugo Bilouro

def createtcp(self, tcb, ip, from_, to): """Create tcp packet""" tcp1 = tcp.tcp()

tcp1.sport = tcb.tcpport[ from_ ] tcp1.dport = tcb.tcpport[ to ] tcp1.sequence = tcb.tcpsequence[ from_ ] tcp1.ack_number = tcb.tcpsequence[ to ] tcp1.offset = 5 tcp1.urgent = 0 tcp1.ack = 1 tcp1.push = 0 tcp1.reset = 0 tcp1.syn = 0 tcp1.fin = 0 tcp1.window = (1<<16)-1 tcp1.urg_point = 0 #tcp1.options #tcp1.checksum = tcp_cksum(tcp1 , ip) #doind this at checkout(createwrite) return tcp1

def createwritepacket(self, tcb, ip, tcp, from_, to): ether = createethernet(self, tcb, from_, to) tcp.checksum = tcp_cksum(tcp , ip)

ip.length = len(ip.bytes) + len(tcp.bytes) ip.checksum = ip_cksum(ip) packet = pcs.Chain([ ether, ip, tcp ]) tcb.output[ from_ ].write(packet.bytes, len(packet.bytes))

Page 27: GSoC tcptest - TCP/IP Regression Test

GSoC tcptest - TCP/IP Regression Test

Victor Hugo Bilouro

Obrigado!Perguntas?

Contatos

Victor Bilouroemail: [email protected] (msn, gtalk)site: bilouro.comcurrículo: bilouro.com/curriculo.docresume: bilouro.com/resume.doc