Post on 25-Dec-2014
description
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)
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?
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?
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?
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?
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?
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
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?
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)
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"
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)
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
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)
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?
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
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
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)
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
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)
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
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)
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
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") }
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)
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)
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))
GSoC tcptest - TCP/IP Regression Test
Victor Hugo Bilouro
Obrigado!Perguntas?
Contatos
Victor Bilouroemail: bilouro@bilouro.com (msn, gtalk)site: bilouro.comcurrículo: bilouro.com/curriculo.docresume: bilouro.com/resume.doc