Roteiro O que é ......
Transcrição
Roteiro O que é ......
08/08/2010 Plataforma de Redes Reconfigurável (netFPGA) Cesar Augusto C. Marcondes Professor Adjunto – UFSCar PhD UCLA 2008 MSc UFRJ 2003 CCO-129 Hardware Reconfigurável para Redes de Computadores e Internet do Futuro Slides baseados na Escola de Primavera de netFPGA 2010 – Cambridge UK Roteiro O que é netFPGA? Como preparar designs integrados de HW e SW Roteador de Referencia do netFPGA Configuração de um Lab netFPGA Pipeline de Referencia Abordando netFPGA em classe Desenvolvimento de Projetos do netFPGA Projetos Já Desenvolvidos em netFPGA Um Exemplo de Estimadores Passivos em TCP O que é ......... Projeto de Hardware Aberto (Stanford – Nick McKeown – EE/CS) Software de Redes executando em um PC comum Um acelerador em hardware construído através de hardware reconfigurável FPGA conduzindo os enlaces Gigabit 1 08/08/2010 Quem, Como, e Por que? Quem usa o netFPGA? estudantes professores Pesquisadores Por que eles usam o netFPGA? Para medir o desempenho de sistemas Internet Para prototipar novos sistemas de rede Como eles usam o netFPGA? Para executar um roteador típico Para construir seus módulos a partir das referencias roteador IPv4 NIC de 4-portas switch Ethernet Executando o Roteador (Router Kit) Desenvolvimento no user-space, comutação a taxa física 4x1GE OSPF BGP Memory CPU My Protocol user kernel Routing Table PCI “Mirror” Fwding Table Packet Buffer 1GE FPGA IPv4 Router 1GE Memory 1GE 1GE Melhorando os Módulos de Referencia PW-OSPF CPU Memory Java GUI Front Panel (Extensible) PCI NetFPGA Driver 1GE FPGA 1GE 1GE Memory Verilog EDA Tools (Xilinx, Mentor, etc.) 1GE L3 Parse L2 Parse 1. Design 2. Simulate 1GE 3. In QSynthesize 4. Download Mgmt 1GE IP Lookup My Block Out Q Mgmt 1GE 1GE Verilog modules interconnected by FIFO interfaces 2 08/08/2010 Criando novos sistemas Verilog EDA Tools (Xilinx, Mentor, etc.) Memory CPU 1. Design PCI NetFPGA 2. Driver Simulate 3. Synthesize 4. Download 1GE FPGA 1GE My Design 1GE 1GE 1GE Memory 1GE (1GE MAC is soft/replaceable) 1GE 1GE Operação Básica de um Roteador IP R3 R1 A R4 D B E R2 C Destination Next Hop D R3 E R3 F R5 R5 F O que faz um Roteador? R3 R1 A 1 16 Ver HLen 20 bytes B C R4 4 T.Service TTL Total Packet Length Flags Fragment Offset Fragment ID D 32 Protocol E Header Checksum R2 Source Address Destination Next Hop Destination Address D Options (if any)R3 E F Data R5 F R3 R5 3 08/08/2010 O que faz um Roteador? R3 A R1 R4 D B C E R2 R5 F Componentes Básicos de um Roteador IP Protocolos Roteamento Tabela Roteamento Software Gerencia & CLI Hardware Comutação Tabela de Propriam. Comutação Dita Control Plane Datapath processamento por-pacote Processamento por-pacote em um Roteador IP 1. Aceitar um pacote ingressando no link/porta de chegada 2. Fazer a busca (Lookup) do endereço de destino do pacote na tabela de comutação para identificar o link/porta de saída 3. Manipular o cabeçalho IP: ex., decrementar o TTL, atualizar o checksum do cabeçalho 4. Bufferizar o pacote na fila de saída 5. Transmitir o pacote no link/porta saída 4 08/08/2010 Arquitetura Genérica do Datapath de Roteador IP Header Processing Data Hdr Queue Packet Lookup Update IP Address Header IP Address Data Hdr Next Hop Forwarding Table Buffer Memory Endereçamento CIDR – Classless Interdomain Routing 128.9.19/24 128.9.25/24 128.9.16/20 128.9.176/20 128.9/16 232-1 0 128.9.16.14 Rota mais específica = “longest matching prefix” Técnicas de Longest Prefix Match em Hardware Busca Linear Lento Lookup Direto Requer muita memória Atualizar um prefixo requer várias mudanças Prefix Trees Tempo de Lookup Deterministico Facilmente montado em pipeline com múltiplas memórias/referencias TCAM (Ternary CAM) Simple e amplamente usado em roteadores mas temos baixa densidade de RAM e precisa mais energia 5 08/08/2010 Um Roteador em NetFPGA Exception Processing Software Management & CLI Routing Protocols Routing Table Hardware Forwarding Switching Table Processos Linux User-level Verilog na placa PCI NetFPGA Roteador NetFPGA Função 4 portas Gigabit Ethernet Completamente Reprogramável FPGA hardware Baixo custo Open-source FPGA hardware Com um design de referencia em Verilog Open-souce Software Drivers escritos em C e C++ Plataforma NetFPGA v2 Componentes Interfaces 4 Portas Gigabit Ethernet Interface PCI Host Memórias 36Mbits Static RAM (aprox. 4MB) 512Mbits DDR2 Dynamic RAM (aprox. 64MB) Recursos FPGA Block RAMs Configurable Logic Block (CLBs) Memory Mapped Registers 6 08/08/2010 Sistema Completo NetFPGA CAD Tools Monitor Software Web & Video Server Browser & Video Client User Space Linux Kernel Packet Forwarding Table PCI PCI-e VI VI VI VI NIC NetFPGA Router Hardware GE GE GE GE GE GE (nf2c0 .. 3) (eth1 .. 2) NetFPGA v2 Hardware Components • Xilinx Virtex-2 Pro FPGA for User Logic • Xilinx Spartan for PCI Host Interface • Cypress: 2 * 2.25 MB ZBT SRAM • Micron: 64MB DDR2 DRAM • Broadcom: PHY for 4 Gigabit Ethernet ports Sistema Montado NetFPGA Network Ports Host PCI-express NIC Dual Gigabit Ethernet ports on PCI-express card NetFPGA Quad Gigabit Ethernet ports on NetFPGA PCI card Motherboard Standard AMD or Intel-based x86 computer with PCI and PCI-express slots Processor Dual or Quad-Core CPU Operating System Linux CentOS 5.2 7 08/08/2010 Stanford NetFPGA Cluster Statistics • Rack de 40 • 1U PCs com NetFPGAs • Provê 4*40=160 Gbps de banda a taxa física completa • Possível de montar topologias variadas e colocar grupos de alunos por máquina remota Setup Típico para Ensino PCI-e Client Server CPU x2 Net-FPGA PCI NetFPGA Control SW Dual NIC (eth1 .. 2) Internet Router Hardware CAD Tools GE eth1 : Local Client & Server GE eth2 : Server for Neighbor GE nf2c3 : Ring - Left GE nf2c2 : Local Host GE nf2c1 : Neighbor GE nf2c0 : Ring - Right Setup Típico para Ensino PCI-e Video Server CPU x2 NIC Net-FPGA PCI Servidor de Vídeo fazendo o streaming passando por um anel de roteadores NetFPGA Internet Router Hardware Net-FPGA Internet Router Hardware GE GE GE GE GE GE GE GE GE GE … PCI-e CPU x2 CAD Tools Net-FPGA PCI Video Display NIC Internet Router Hardware GE GE GE GE GE GE 8 08/08/2010 Setup do Roteador Referencia Video Server Cada placa NetFPGA possui quatro NetFPGA Porta 2 conecta Cliente / ou Servidor NetFPGA Ports 0 e 3 conectam placas NetFPGA adjacentes Video Client NetFPGA Configuração de SubRede Roteamento PW-OSPF (Pee-Wee OSPF) .1.1 .4.1 .1.2 .7.1 .4.2 .2.1 .5.1 .9.2 .8.1 .9.1 .11.1 .16.1 .13.2 .12.2 .12.1 .16.2 .15.2 .14.1 .15.1 .17.1 .18.1 Display .30.1 .29.1 .6.1 .13.1 .10.2 .6.2 .3.2 .30.2 .10.1 .7.2 .3.1 .26.1 .23.1 .27.2 .28.2 .24.2 .27.1 .25.2 .28.1 Video Server .18.2 .21.2 .24.1 .25.1 .22.2 .20.1 .21.1 .22.1 Caminho Mais Curto .19.2 .19.1 Video Client Fazendo o Streaming de Video c/ NetFPGA Servidor de Vídeo Arquivos depositados em /var/www/html/video Acessíveis em: http://192.168.Net.Host/video Cliente de Vídeo Windows Media Player Linux mplayer Tráfego de Vídeo MPEG2 HDTV (35 Mbps) MPEG2 TV (9 Mbps) DVI (3 Mbps) WMF (1.7 Mbps) 9 08/08/2010 Observando as Tabelas de Roteamento Os roteadores no demo já estão rodando nas máquinas A tabela de roteamento já convergiu para as decisões de roteamento com o mínimo número de hops Re-roteamento Dinâmico Quebrando o link entre o menor caminho do servidor de vídeo para o cliente .1.1 .4.1 .1.2 .5.1 .30.1 .29.1 .10.1 .7.2 .28.1 .8.1 .26.1 .27.2 .28.2 .9.2 .6.1 .11.1 .25.1 .14. 1 .17.1 .18.1 .18.2 .21.2 .24.1 .16.2 .15.2 .15.1 .12.1 .23.1 .25.2 .16.1 .13.2 .12.2 .9.1 .24.2 .27.1 .13.1 .10.2 .6.2 .3.2 .30.2 Roteadores vão re-rotear o tráfego do outro lado do anel em torno do link caido e o vídeo continuará tocando após uma leve pausa .7.1 .4.2 .3.1 .2.1 .22.2 .20.1 .21.1 .22.1 .19.2 .19.1 Tecnologia de Hardware Reprogramável Field Programmable Gate Arrays (FPGAs) 10 08/08/2010 Tabelas de Look-Up A B C D Z Lógica Combinatorial (adders, etc.) são armazenados em Look-Up Tables (LUTs) Também chamados de 0 0 0 0 0 0 0 0 1 0 Geradores de Função (FGs) 0 0 1 0 0 Capacidade é limitada pelo 0 0 1 1 1 número de entradas 0 1 0 0 1 Atraso no LUT é constante 0 1 0 1 1 . A B . . 1 1 0 0 0 Combinatorial Logic 1 1 0 1 0 1 1 1 0 0 Z C D 1 1 1 1 1 Diagram From: Xilinx, Inc Xilinx CLB (Configurable Logic Blocks) Cada slice tem 4 saídas Duas saídas são geradas de registradorese duas saídas sem registradores (diretas) Temos BUFTs (tristate buffers) associados com cada CLB Lógica de “Carry” (Vai-Um) para controle, a lógica pode correr verticalmente Duas cadeias de carry por Slice 0 LUT PRE D Q CE Carry CLR LUT D PRE Q CE Carry CLR CLB Diagram From: Xilinx, Inc. Field Programmable Gate Arrays Din Clk CLB G1 G2 G3 4 LUT M Bloco de I/O S Q YQ R M Y 3 LUT H1 H F1 F2 4 LUT F3 F M D S Q XQ R M F4 Módulo de Roteamento Roteamento global Interconexão Local Macro Blocks Blocos de Memória Algum co-Microprocessor D G G4 CLB Elemento Básico do FPGA X GRM Local Routing CLB PIP 3rd Generation LUT-based FPGA ... ... ... ... ... Pad Routing Macro Block (uP, Mem) ... ... CLB Matrix I/O 11 08/08/2010 Diagrama de Blocos NetFPGA NetFPGA platform The image cannot be display ed. Your computer may not hav e enough memory to open the image, or the image may hav e been corrupted. Restart y our computer, and then open the file again. If the red x still appears, y ou may hav e to delete the image and then insert it again. Linux OS - NetFPGA Kernel driver 3 Gb The image cannot be display ed. Your computer may not hav e enough memory to open the image, or the image may hav e been corrupted. Restart y our computer, and then open the file again. If the red x still appears, y ou may hav e to delete the image and then insert it again. SATA Host computer Control, PCI Interface Board-Board Interconnect 1GE PHY FIFO packet buffers 64MB 18Mb DDR2 SDRAM SRAM 1GE PHY Seu hardware especificado em código Verilog conecta os componentes do circuito do roteador de referencia 18Mb SRAM 1GE PHY 1GE 1GE 1GE 1GE MAC MAC MAC MAC 1GE PHY Four Gigabit Ethernet Interfaces V2-Pro50 FPGA w/ infrastructure User-defined software networking applications Linguagens de Descrição de Hardware Intrinsicamente concorrente Por padrão, comandos Verilog são avaliados concorrentemente Expressa paralelismo fine grain Paralelismo nível de portões lógicos Descrição Precisa do Hardware Elimina ambiguidade Sintetizável Gera um hardware a partir da descrição Verilog Tipo de Dados / Multiplexadores reg [7:0] A; // 8-bit register, MSB to LSB // (Preferred bit order for NetFPGA) reg [0:15] B; // 16-bit register, LSB to MSB B = {A[7:0],A[0:7]}; // Assignment of bits Two input multiplexer (using if / else) reg y; always @* if (select) y = a; else y = b; reg [31:0] Mem [0:1023]; // 1K Word Memory integer Count; bit integer // simple signed 32- integer K[1:64]; // an array of 64 integers time Start, Stop; // Two 64-bit time variables From: CSCI 320 Computer Architecture Handbook on Verilog HDL, by Dr. Daniel C. Hyde : http://eesun.free.fr/DOC/VERILOG/verilog-manual.html 12 08/08/2010 Elementos de Armazenamento Sincrono Din Valores mudam no tempo governados pelo clock (125MHz) D Q Dout Clock – Clock Clock 1 Clock Transition 0 t=0 • Entrada no Circuito t=1 time t=2 – Eventos de Clock • Exemplo: Rising edge Din A B C t=0 – Flip/Flop Clock Transition • Transferem o valor de Din para Dout (por exemplo, estágio a outro) no evento de clock Dout S0 A B t=0 Verilog: Especificando Delay Flip/Flops D-type flip flop reg q; always @ (posedge clk) q <= d; D type flip flop with data enable reg q; always @ (posedge clk) if (enable) q <= d; From: http://eesun.free.fr/DOC/VERILOG/synvlg.html Máquinas de Estado Finitas Outputs (Z) Copyright 2001, John W. Lockwood, All Rights Reserved Inputs (X) =λ (X,S(t)) [Mealy] -or- =λ (S(t)) [Moore] Combinational Logic Q D S(t) ... S(t+1)= δ (X,S(t)) Next State Q D State Storage 13 08/08/2010 Pipeline do Roteador de Referencia Pipeline do Roteador de Referencia Cinco Estágios Input Arbitração do Input Decisão de Roteamento e MAC RxQ CPU RxQ MAC RxQ CPU RxQ MAC RxQ CPU RxQ MAC RxQ CPU RxQ Input Arbiter Modificação do Pacote Enfileiramento na Saída Output Output Port Lookup Interface dos módulos Output Queues baseada em Pacote Design Plugável MAC TxQ CPU TxQ MAC TxQ CPU TxQ MAC TxQ CPU TxQ MAC TxQ CPU TxQ 14 08/08/2010 Melhorando o Roteador Objetivos Observar como estão posicionados os novos módulos Novos módulos são: limitador de taxa, capturador de eventos (perdas por exemplo) Pipeline Roteador Avançado Dois módulos adicionados MAC RxQ CPU RxQ MAC RxQ 1. Event Capture para CPU RxQ MAC RxQ CPU RxQ MAC RxQ CPU RxQ CPU TxQ MAC TxQ CPU TxQ Input Arbiter capturar em tempo real eventos das filas de saída (writes, reads, drops) Output Port Lookup Event Capture 2. Rate Limiter para criar um gargalo (força o tráfego) Output Queues Rate Limiter MAC TxQ CPU TxQ CPU TxQ MAC TxQ MAC TxQ Hardware Datapath Se der tempo … 15 08/08/2010 Full System Components Software nf2c0 nf2c1 nf2c2 nf2c3 ioctl PCI Bus CPU CPU CPU CPU CPU CPU TxQ RxQ CPU CPU RxQ TxQ RxQ TxQ RxQ TxQ NetFPGA nf2_reg_grp user data path MAC MAC MAC MAC MAC MAC TxQ MAC RxQ MAC TxQ RxQ TxQ RxQ TxQ RxQ Ethernet Life of a Packet through the Hardware 192.168.1.x port0 192.168.2.y port2 Router Stages Again MAC RxQ CPU RxQ MAC RxQ CPU RxQ MAC RxQ CPU RxQ MAC RxQ CPU RxQ Input Arbiter Output Port Lookup Output Queues MAC TxQ CPU TxQ MAC TxQ CPU TxQ MAC TxQ CPU TxQ MAC TxQ CPU TxQ 16 08/08/2010 Inter-Module Communication Using “Module Headers”: Ctrl Word (8 bits) Data Word (64 bits) x Module Hdr … … y Last Module Hdr 0 Eth Hdr 0 IP Hdr 0 … 0x10 Last word of packet Contain information such as packet length, input port, output port, … Inter-Module Communication data ctrl wr rdy MAC Rx Queue 17 08/08/2010 Rx Queue 0xff 0 0 0 Pkt length, input port = 0 Eth Hdr: Dst MAC = port 0, Ethertype = IP IP Hdr: IP Dst: 192.168.2.3, TTL: 64, Csum:0x3ab4 Data Input Arbiter Pkt Pkt Pkt Output Port Lookup 18 08/08/2010 Output Port Lookup 5- Add output 1- Check input port matches Dst MAC port header 2- Check TTL, checksum 0xff 3- Lookup next hop IP & output port (LPM) 0 0 4- Lookup next hop MAC address (ARP) 0 Pkt length, input port = 0 output port = 4 EthHdr: MAC =0 EthHdr: Dst Dst MAC = nextHop MAC = x, 4, SrcSrc MAC = port Ethertype = IP IP Hdr: IP Dst: 192.168.2.3, TTL: 64, 63, Csum:0x3ab4 Csum:0x3ac2 6- Modify MAC Dst and Src addresses 7-Decrement TTL and update checksum Data Output Queues OQ0 OQ4 OQ7 MAC Tx Queue 19 08/08/2010 MAC Tx Queue 0xff 0 0 Pkt length, input port = 0 output port = 4 EthHdr: Dst MAC = nextHop Src MAC = port 4, Ethertype = IP IP Hdr: IP Dst: 192.168.2.3, TTL: 64, 63, Csum:0x3ab4 Csum:0x3ac2 0 Data Exception Packet Path Software nf2c0 nf2c1 nf2c2 nf2c3 ioctl PCI Bus CPU CPU RxQ TxQ CPU CPU RxQ TxQ NetFPGA CPU CPU RxQ TxQ nf2_reg_grp CPU CPU RxQ TxQ user data path MAC MAC TxQ RxQ MAC MAC TxQ RxQ MAC MAC TxQ RxQ MAC MAC TxQ RxQ Ethernet Output Port Lookup 1- Check input port matches Dst MAC 2- Check TTL, checksum – EXCEPTION! 0xff 0 3- Add output port module 0 0 Pkt length, input port = 0 output port = 1 EthHdr: Dst MAC = 0, Src MAC = x, Ethertype = IP IP Hdr: IP Dst: 192.168.2.3, TTL: 1, Csum:0x3ab4 Data 20 08/08/2010 Output Queues OQ0 OQ1 OQ2 OQ7 CPU Tx Queue CPU Tx Queue 0xff 0 0 0 Pkt length, input port = 0 output port = 1 EthHdr: Dst MAC = 0, Src MAC = x, Ethertype = IP IP Hdr: IP Dst: 192.168.2.3, TTL: 1, Csum:0x3ab4 Data 21 08/08/2010 ICMP Packet Path Software nf2c0 nf2c1 nf2c2 nf2c3 ioctl PCI Bus CPU CPU RxQ TxQ CPU CPU RxQ TxQ CPU CPU RxQ TxQ NetFPGA nf2_reg_grp CPU CPU RxQ TxQ user data path MAC MAC TxQ RxQ MAC MAC TxQ RxQ MAC MAC TxQ RxQ MAC MAC TxQ RxQ Ethernet NetFPGA-Host Interaction Linux driver interfaces with hardware Packet interface via standard Linux network stack Register reads/writes via ioctl system call with wrapper functions: readReg(nf2device *dev, int address, unsigned *rd_data); writeReg(nf2device *dev, int address, unsigned *wr_data); eg: readReg(&nf2, OQ_NUM_PKTS_STORED_0, &val); NetFPGA-Host Interaction NetFPGA to host packet transfer 1. Packet arrives – forwarding table sends to CPU queue PCI Bus 2. Interrupt notifies driver of packet arrival 3. Driver sets up and initiates DMA transfer 22 08/08/2010 NetFPGA-Host Interaction NetFPGA to host packet transfer (cont.) 5. Interrupt signals completion of DMA PCI Bus 4. NetFPGA transfers packet via DMA 6. Driver passes packet to network stack NetFPGA-Host Interaction Host to NetFPGA packet transfers PCI Bus 2. Driver sets up and initiates DMA transfer 3. Interrupt signals completion of DMA 1. Software sends packet via network sockets Packet delivered to driver NetFPGA-Host Interaction Register access PCI Bus 2. Driver performs PCI memory read/write 1. Software makes ioctl call on network socket ioctl passed to driver 23 08/08/2010 NetFPGA-Host Interaction Packet transfers shown using DMA interface Alternative: use programmed IO to transfer packets via register reads/writes slower but eliminates the need to deal with network sockets Ensinado com o netFPGA Construir um roteador em 10 semanas Usando NetFPGA em Sala de Aula (Graduação) • Stanford University • EE109 “Build an Ethernet Switch” • • Cambridge University • Build an Internet Router (since ‘09) Undergraduate course for all EE students Quarter-long course targeted at graduates http://www.stanford.edu/class/ee109/ http://www.cl.cam.ac.uk/teaching/0910/ P33/ CS344 “Building an Internet Router” (since ‘05) Quarter-long course targeted at graduates http://cs344.stanford.edu • University of Wisconsin • CS838 “Rethinking the Internet Architecture” • Rice University • Network Systems Architecture (since http://pages.cs.wisc.edu/~akella/CS838 /F09/ ‘08) http://comp519.cs.rice.edu/ 24 08/08/2010 NetFPGA em Sala de Aula Stanford CS344: “Build an Internet Router” Todo o material desse curso está online Estudantes trabalham em equipes de 3 sendo 1-2 software 1-2 hardware Objetivo é Projetar e Implementar um Roteador em 8 Semanas Escrever o software de interface e PW-OSPF Mostrar que o design interopera com outros grupos Adicionar novas caracteristicas nas 2 semanas restantes Firewall, NAT, DRR, Packet capture, Data generator, … CS344 Milestones 1 2 Build basic router 3 4 Command Line Routing Protocol Interface (PWOSPF) 5 Integrate with H/W 6 Interoperability Final Project Management & CLI Exception Processing Routing Protocols Management & CLI Routing Table Exception Processing Emulated h/w in VNS Management & CLI Routing Protocols Routing Table Routing Protocols • Innovate and add! • Presentations • Judges Exception Processing Routi ng Table Emulated h/w in VNS Emulated h/w in VNS Management & CLI Exception Processing software hardware Routing Protocols Routing Table Forwarding Switching Table Learning Environment Modular design Testing 4-port non-learning switch Forwarding Switching Table 4-port learning IPv4 router switch forwarding path Integrate with S/W Interoperability Typical NetFPGA Course Plan Week Software Hardware Verify Software Tools 2 Build Software Router Build Non-Learning Switch Run Software Router 3 Cmd. Line Interface Build Learning Switch Run Basic Switch 4 Router Protocols Output Queues Run Learning Switch 5 Implement Protocol Forwarding Path Interface SW & HW 6 Control Hardware Hardware Registers 7 Verify CAD Tools Deliver 1 Interoperate Software & Hardware Write Design Document HW/SW Test Router Submission 8 Plan New Advanced Feature Project Design Plan 9 Show new Advanced Feature Demonstration 25 08/08/2010 Apresentações Stanford CS344 http://cs344.stanford.edu Cambridge P33 http://www.cl.cam.ac.uk/teaching/0910/P33/ Pesquisa com o netFPGA Desenvolvendo a sua tese com netFPGA Projetos de Pesquisa IPv4 Reference Router Stanford University Quad-Port Gigabit NIC Stanford University Ethernet Switch Stanford University Buffer Monitoring System Stanford University HW-Accelerated Linux Router Stanford University Packet Generator Stanford University OpenFlow Switch Stanford University NetFlow Probe Brno University AirFPGA Stanford University Multipath Router Stanford University Precise Traffic Generator University of Torontoz RED Stanford University DFA UMass RCP Router Stanford University Deficit Round Robin (DRR) Stanford University OpenFlow-MPLS Switch Ericsson PTP-enabled Router Stanford University Vlan Tag Handler Stanford University Port Aggregator Stanford University IP Lookup w/Blooming Tree University of Pisa Tunneling NIC Stanford University End-to-End Ethernet Authoriz. Euskal Herriko Unibertsitateko Ultra-high Speed Cong.-control University of North Carolina 26 08/08/2010 Exemplo: AirFPGA TCP-based Passive Bottleneck Estimation Cesar & Peng Outline of intention To build a router that passively monitors ACK flows Based on slow start pattern Estimate bottleneck capacity per flow Cap flows based on the calculation by modifying their TCP receive window. 27 08/08/2010 BitTorrent Scenario Online gaming Buffer filling Cwnd = min (cwnd, rcvwnd) One could limit max rate by implicitly change the rcvwnd C= L Tb ACK flow (packets back to back in every RTT during slow start) CapProbe algorithm Sigcomm 2004 Exploring Embedded Path Capacity Estimation in TCP receiver E2EMON 2007 28 08/08/2010 Design Mod_Hdr, Eth_Hdr: Estimator skip the blocks we don’t care Prot_field, Dst_IP field: Deep inspection in the pkts to filter ACK flow from dst & port Filtering TCP pkts from specific IP dst, ACK&SYN flag and TCP port Counters: Clk_counter for clk cycles Pkt_slice as field locator Pkt_counter done at the Wait4end state to allow for selecting specific ACK pkts to timestamp (1,2 .. 3,4, .. 7,8) Simulation Couldn’t get it done … IP DST filter still has some bugs Capprobe Calculation in hardware difficult Division by dispersion Change TCP receive window Cannot be done without re-calculate TCP checksum Cesar is planning to finish this work Lessons learnt Bad: need hardware design experience Lots of languages required (verilog, perl) Good: fairly easy to generate simulation test Reuse code (drop-nth-packet, crypto_nic) 29 08/08/2010 Futuro do netFPGA Redes de Alta Velocidade NetFPGA 10G: (Coming in 3rd Qtr 2010) QDRII+ SRAM 3x 36bit interfaces, 300MHz+ (each i/f: 1x K7R643684MFC30) SFP+ Cage SFP+ Cage SFI 10Gbps PHY AEL2005 XAUI 4 GTXs SFI 10Gbps PHY AEL2005 XAUI 4 GTXs SFP+ Cage SFI 10Gbps SFP+ Cage SFI 10Gbps PCIe x8, Gen1 endpoint edge connector Xilinx Virtex5 XCV5TX240T-2 PHY AEL2005 XAUI 4 GTXs PHY AEL2005 XAUI 4 GTXs NetFPGA 10G PCIe 8 GTXs FG1759 10 GTXs 10 GTXs 2 x Samtec x10 Connector RLDRAM II 2x 32bit interfaces, 300MHz+ Obrigado … Cesar Marcondes [email protected] http://www.dc.ufscar.br/~marcondes/ 30