NetFPGA : Workshop in Cambridge

Similar documents
NetFPGA : An Open-Source Hardware Platform for Network Research and Teaching. Nick McKeown, John W. Lockwood, Jad Naous, Glen Gibb

NetFPGA Workshop Day 1

NetFPGA Update at GEC4

NetFPGA Hardware Architecture

Motivation to Teach Network Hardware

NetFPGA Tutorial. Junho Suh Monday, May 13, 13

Day 2: NetFPGA Cambridge Workshop Module Development and Testing

NetFPGA Tutorial Tsinghua University Day 2

Experience with the NetFPGA Program

Overview. Implementing Gigabit Routers with NetFPGA. Basic Architectural Components of an IP Router. Per-packet processing in an IP Router

Chapter 4. Routers with Tiny Buffers: Experiments. 4.1 Testbed experiments Setup

Network Processors and their memory

Professor Yashar Ganjali Department of Computer Science University of Toronto.

CS344 - Build an Internet Router. Nick McKeown, Steve Ibanez (TF)

NetFPGA Summer Course

Lecture 16: Network Layer Overview, Internet Protocol

Chapter 4: network layer. Network service model. Two key network-layer functions. Network layer. Input port functions. Router architecture overview

Web page: TAs: Hot-spare TAs: Dr Andrew W. Moore Chris Smowton (Software)

Getting started with Digilent NetFPGA SUME, a Xilinx Virtex 7 FPGA board for high performance computing and networking systems

Lecture 3. The Network Layer (cont d) Network Layer 1-1

COMP211 Chapter 4 Network Layer: The Data Plane

RiceNIC. Prototyping Network Interfaces. Jeffrey Shafer Scott Rixner

Design principles in parser design

The Network Layer and Routers

INT G bit TCP Offload Engine SOC

440GX Application Note

Introduction to Routers and LAN Switches

Introducing optical switching into the network

Hardware Acceleration in Computer Networks. Jan Kořenek Conference IT4Innovations, Ostrava

6.9. Communicating to the Outside World: Cluster Networking

A Framework for Rule Processing in Reconfigurable Network Systems

Lecture 8. Network Layer (cont d) Network Layer 1-1

1-1. Switching Networks (Fall 2010) EE 586 Communication and. October 25, Lecture 24

Chapter 4 Network Layer: The Data Plane

Verilog for High Performance

RiceNIC. A Reconfigurable Network Interface for Experimental Research and Education. Jeffrey Shafer Scott Rixner

CSCI-1680 Network Layer: IP & Forwarding Rodrigo Fonseca

Users Guide: Fast IP Lookup (FIPL) in the FPX

Computer Network Fundamentals Spring Week 4 Network Layer Andreas Terzis

Sizing Router Buffers

NetFPGA Workshop Day 2

INT 1011 TCP Offload Engine (Full Offload)

P51: High Performance Networking

Chapter 4: network layer

internet technologies and standards

cs144 Midterm Review Fall 2010

CSCI-1680 Network Layer: IP & Forwarding John Jannotti

Chapter 4: Network Layer

Building Networks with Open, Reconfigurable Hardware

CSC 401 Data and Computer Communications Networks

FPGA: What? Why? Marco D. Santambrogio

EC441 Fall 2018 Introduction to Computer Networking Chapter4: Network Layer Data Plane

Router Architecture Overview

Lecture 4 - Network Layer. Transport Layer. Outline. Introduction. Notes. Notes. Notes. Notes. Networks and Security. Jacob Aae Mikkelsen

CHAPTER 6 FPGA IMPLEMENTATION OF ARBITERS ALGORITHM FOR NETWORK-ON-CHIP

Decision Forest: A Scalable Architecture for Flexible Flow Matching on FPGA

Advanced Computer Networks. End Host Optimization

A Network Storage LSI Suitable for Home Network

Switch and Router Design. Packet Processing Examples. Packet Processing Examples. Packet Processing Rate 12/14/2011

Atacama: An Open Experimental Platform for Mixed-Criticality Networking on Top of Ethernet

CSCI-1680 Network Layer: IP & Forwarding Rodrigo Fonseca Instructor: Nicholas DeMarinis

Chapter 4 Network Layer: The Data Plane

LS Example 5 3 C 5 A 1 D

FPGA for Complex System Implementation. National Chiao Tung University Chun-Jen Tsai 04/14/2011

internet technologies and standards

Lecture 11: Networks & Networking

Topics for Today. Network Layer. Readings. Introduction Addressing Address Resolution. Sections 5.1,

High Capacity and High Performance 20nm FPGAs. Steve Young, Dinesh Gaitonde August Copyright 2014 Xilinx

Network Processors. Nevin Heintze Agere Systems

CSC 401 Data and Computer Communications Networks

Fundamental Questions to Answer About Computer Networking, Jan 2009 Prof. Ying-Dar Lin,

CSC 4900 Computer Networks: Network Layer

Network Layer PREPARED BY AHMED ABDEL-RAOUF

CSE 123A Computer Networks

FreeBSD support for Stanford NetFPGA. Wojciech A. Koszek

Routers Technologies & Evolution for High-Speed Networks

TDTS06: computer Networks

VHDL for Synthesis. Course Description. Course Duration. Goals

CprE 583 Reconfigurable Computing

Programmable NICs. Lecture 14, Computer Networks (198:552)

Intro to HW Design & Externs for P4àNetFPGA. CS344 Lecture 5

10 Gbit/s Challenge inside the Openlab framework

EEC-484/584 Computer Networks

Networking: Network layer

Data Link Layer. Our goals: understand principles behind data link layer services: instantiation and implementation of various link layer technologies

CS244a: An Introduction to Computer Networks

Chapter 4 Network Layer: The Data Plane

LARGE SCALE IP ROUTING

Graduate Institute of Electronics Engineering, NTU FPGA Design with Xilinx ISE

CSCI-1680 Network Layer: IP & Forwarding Rodrigo Fonseca

CSCI-GA Operating Systems. Networking. Hubertus Franke

Chapter 1. Introduction

EECS150 - Digital Design Lecture 16 Memory 1

T NetFPGA prototype of zfilter forwarding. Petri Jokela ericsson research, Nomadiclab

CSC358 Week 6. Adapted from slides by J.F. Kurose and K. W. Ross. All material copyright J.F Kurose and K.W. Ross, All Rights Reserved

DE4 NetFPGA Reference Router User Guide

Quiz. Segment structure and fields Flow control (rwnd) Timeout interval. Phases transition ssthresh setting Cwnd setting

Lecture 17: Network Layer Addressing, Control Plane, and Routing

CSC 401 Data and Computer Communications Networks

Network and Security: Introduction

Transcription:

NetFPGA : Workshop in Cambridge Presented by: Andrew W. Moore and David Miller (University of Cambridge) Martin Žádník (Brno University of Technology) Cambridge, UK September 5-6, 28 http://netfpga.org NetFPGA Cambridge Workshop 5-6 Sep 28 Welcome Please organize into teams 2 People/computer Wireless network for Cambridge Guests SSID : as written on whiteboard The NetFPGA machines Username: root Password: on whiteboard NetFPGA homepage http://netfpga.org NetFPGA Cambridge Workshop 5-6 Sep 28 2

Day Tuesday 6th September, 28 9: :3 Session I Introduction, background, Stanford Reference Router :3 Coffee Break (supplied) : 2:3 Session II Research with the NetFPGA, Enhanced Reference Router 2:3 Lunch (supplied) 3:45 5:5 Session III Life of a Packet, Datapath, Extending the Router an example 5:5 Coffee Break (supplied) 5:45 7: Session IV Further hardware platforms, NetFPGA in research and teaching, group discussion 8: Punt trip weather dependent Day 2 Wednesday 7th September, 28 9: :3 Session V Introducing Module development in the NetFPGA, Implement an example module :3 Coffee Break (supplied) : 2:3 Session VI Implement verification test (for use against the ModelSim simulator) 2:3 Lunch (supplied) 3:45 5:5 Session VII Implement hardware regression test allowing mechanised testing of your new module 5:5 Coffee Break (supplied) 5:45 7: Final Session Feedback, Final thoughts Safe travelling see you soon 9:3 Dinner NetFPGA Cambridge Workshop 5-6 Sep 28 3 Day : Tutorial Outline Background Introduction Basics of an IP Router The NetFPGA Platform The Stanford Base Reference Router Demo: Reference Router running on the NetFPGA Inside the NetFPGA hardware (Andrew) Breakneck introduction to FPGAs and Verilog Exercise : Build your own Reference Router The Enhanced Reference Router Motivation: Understanding buffer size requirements in a router Demo 2: Observing and controlling the queue size Exercise 2: Enhancing the Reference Router The Life of a Packet Through the NetFPGA Hardware Datapath Interface to software: Exceptions and Host I/O Exercise 3: Drop in N Packets Concluding Remarks Additional Hardware Platforms Using NetFPGA for research and teaching Group Discussion NetFPGA Cambridge Workshop 5-6 Sep 28 4

What is the NetFPGA? Networking Software running on a standard PC Memory PCI PC with NetFPGA A hardware accelerator built with Field Programmable Gate Array driving Gigabit network links FPGA Memory GE GE GE GE NetFPGA Board NetFPGA Cambridge Workshop 5-6 Sep 28 5 Who uses the NetFPGA? Teachers Students Researchers Who, How, Why How do they use the NetFPGA? To run the Router Kit To build modular reference designs IPv4 router 4-port NIC Ethernet switch, Why do they use the NetFPGA? To measure performance of Internet systems To prototype new networking systems NetFPGA Cambridge Workshop 5-6 Sep 28 6

Running the Router Kit User-space development, 4xGE line-rate forwarding OSPF BGP Memory My Protocol user kernel Routing Table PCI Mirror Fwding Table Packet Buffer FPGA IPv4 Router Memory GE GE GE GE NetFPGA Cambridge Workshop 5-6 Sep 28 7 Enhancing Modular Reference Designs Memory PW-OSPF Java GUI Front Panel (Extensible) Verilog EDA Tools (Xilinx, Mentor, etc.) PCI FPGA Memory GE GE GE GE L3 Parse IP Lookup NetFPGA Driver. Design 2. Simulate GE L2 In 3. Q Synthesize Parse Mgmt 4. Download GE My Block Out Q Mgmt GE GE Verilog modules interconnected by FIFO interfaces NetFPGA Cambridge Workshop 5-6 Sep 28 8

Creating new systems Memory Verilog EDA Tools (Xilinx, Mentor, etc.) PCI FPGA Memory GE GE GE GE. Design NetFPGA 2. Driver Simulate 3. Synthesize 4. Download My Design (GE is soft/replaceable) GE GE GE GE NetFPGA Cambridge Workshop 5-6 Sep 28 9 Basic Operation of an IP Router R3 A R R4 D B E C R2 Destination D E F Next Hop R3 R3 R5 R5 F NetFPGA Cambridge Workshop 5-6 Sep 28

A B 2 bytes C What does a router do? R3 R R4 4 6 32 Ver HLen T.Service Total Packet Length Fragment ID Flags Fragment Offset TTL Protocol Header Checksum R2 Source Address Destination Destination Address Next Hop Options D (if any) R3 E Data R3 F R5 R5 D F E NetFPGA Cambridge Workshop 5-6 Sep 28 What does a router do? R3 A R R4 D B E C R2 R5 F NetFPGA Cambridge Workshop 5-6 Sep 28 2

Basic Components of an IP Router Management & CLI Routing Protocols Routing Table Software Control Plane Forwarding Table Switching Hardware Datapath per-packet processing NetFPGA Cambridge Workshop 5-6 Sep 28 3 Per-packet processing in an IP Router. Accept packet arriving on an incoming link. 2. Lookup packet destination address in the forwarding table to identify outgoing port(s). 3. Manipulate IP header: e.g., decrement TTL, update header checksum. 5. Buffer packet in the output queue. 6. Transmit packet onto outgoing link. NetFPGA Cambridge Workshop 5-6 Sep 28 4

Generic Datapath Architecture Header Processing Data Hdr Data Hdr Lookup IP Address Update Header Queue Packet IP Address Next Hop Forwarding Table Buffer Memory NetFPGA Cambridge Workshop 5-6 Sep 28 5 CIDR and Longest Prefix Matches The IP address space is broken into line segments. Each line segment is described by a prefix. A prefix is of the form x/y where x indicates the prefix of all addresses in the line segment, and y indicates the length of the segment. e.g. The prefix 28.9/6 represents the line segment containing addresses in the range: 28.9.. 28.9.255.255. 65/8 28.9.. 28.9/6 42.2/9 2 32-28.9.6.4 2 6 NetFPGA Cambridge Workshop 5-6 Sep 28 6

Classless Interdomain Routing (CIDR) 28.9.9/24 28.9.25/24 28.9.6/2 28.9.76/2 28.9/6 2 32-28.9.6.4 Most specific route = longest matching prefix NetFPGA Cambridge Workshop 5-6 Sep 28 7 Techniques for LPM in hardware Linear search Slow Direct lookup Currently requires too much memory Updating a prefix leads to many changes Tries Deterministic lookup time Easily pipelined but require multiple memories/references TCAM (Ternary CAM) Simple and widely used but have lower density than RAM and need more power Gradually being replaced by algorithmic methods NetFPGA Cambridge Workshop 5-6 Sep 28 8

An IP Router on NetFPGA Management & CLI Exception Processing Routing Protocols Routing Table Software Linux user-level processes Forwarding Table Switching Hardware Verilog on NetFPGA PCI board NetFPGA Cambridge Workshop 5-6 Sep 28 9 NetFPGA Router Function 4 Gigabit Ethernet ports Fully programmable FPGA hardware Low cost Open-source FPGA hardware Verilog base design Open-souce Software Drivers in C and C++ NetFPGA Cambridge Workshop 5-6 Sep 28 2

NetFPGA Platform Major Components Interfaces 4 Gigabit Ethernet Ports PCI Host Interface Memories 36Mbits Static RAM 52Mbits DDR2 Dynamic RAM FPGA Resources Block RAMs Configurable Logic Block (CLBs) Memory Mapped Registers NetFPGA Cambridge Workshop 5-6 Sep 28 2 NetFPGA System CAD Tools Monitor Software Web & Video Server Browser & Video Client User Space Linux Kernel Packet Forwarding Table PCI PCI-e VI VI VI VI NetFPGA Router Hardware NIC GE GE GE GE GE GE (nf2c.. 3) (eth.. 2) NetFPGA Cambridge Workshop 5-6 Sep 28 22

NetFPGA s 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 NetFPGA Cambridge Workshop 5-6 Sep 28 23 NetFPGA System Components 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 Operating System Linux CentOS 5.2 NetFPGA Cambridge Workshop 5-6 Sep 28 24

NetFPGA Cube Systems PCs assembled from parts Stanford University Cambridge University Pre-built systems available Accent Technology Inc. Details are in the Guide http://netfpga.org/static/guide.html NetFPGA Cambridge Workshop 5-6 Sep 28 25 Rackmount NetFPGA Servers NetFPGA inserts in PCI or PCI-X slot 2U Server (Dell 295) U Server (Accent Technology Inc.) Thanks: Brian Cashman for providing machine NetFPGA Cambridge Workshop 5-6 Sep 28 26

Stanford NetFPGA Cluster Statistics Rack of 4 U PCs with NetFPGAs Manged Power Console LANs Provides 4*4=6 Gbps of full line-rate processing bandwidth NetFPGA Cambridge Workshop 5-6 Sep 28 27 NetFPGA Lab Setup Client Server x2 NetFPGA Control SW CAD Tools PCI-e PCI (eth Dual.. 2) NIC Net-FPGA Internet Router Hardware GE GE GE GE GE GE eth : Local Client & Server eth2 : Server for Neighbor nf2c3 : Ring - Left nf2c2 : Local Host nf2c : Neighbor nf2c : Ring - Right NetFPGA Cambridge Workshop 5-6 Sep 28 28

NetFPGA Hardware Set for Demo # Server delivers streaming HD video through a chain of NetFPGA Routers Video Server x2 x2 Video Display CAD Tools PCI-e PCI PCI-e PCI NIC Net-FPGA Internet Router Hardware Net-FPGA Internet Router Hardware NIC Net-FPGA Internet Router Hardware GE GE GE GE GE GE GE GE GE GE GE GE GE GE GE GE NetFPGA Cambridge Workshop 5-6 Sep 28 29 Cable Configuration in the Lab NetFPGA Gigabit Ethernet Interfaces nf2c3 : Left neighbor in network (green) nf2c2 : Local host interface (red) nf2c : Routes for adjacent server (blue) nf2c : Right neighbor in network (green) Host Ethernet Interfaces eth : Local host interface (red) eth2 : Server for neighbor (blue) nf2c 2 eth 3 2 2 3 2 2 3 2 2 3 2 2 3 2 2 3 2 2 3 2 2 3 2 2 3 2 2 3 2 NetFPGA Cambridge Workshop 5-6 Sep 28 3

Demo Reference Router running on the NetFPGA NetFPGA Cambridge Workshop 5-6 Sep 28 3 Setup for the Reference Router Each NetFPGA card has four ports Port 2 connected to Client / Server Ports and 3 connected to adjacent NetFPGA cards Video Server NetFPGA NetFPGA Video Client NetFPGA NetFPGA Cambridge Workshop 5-6 Sep 28 32

Topology of NetFPGA Routers Video Server HD Display NetFPGA Cambridge Workshop 5-6 Sep 28 33 Subnet Configuration...4..7....3..6...2.3..2..3.2.3.2.4.2.7.2..2.3.2.6.2.9.2.2.2.5.2.6..9..2..5..5..8....4..8..6.2.7..29..3..27.2.28.2.28..27..26..25.2.25..24.2.23..2.2.24..22.2.22..2..8.2.2..9.2.9. Video Server Shortest Path NetFPGA Cambridge Workshop 5-6 Sep 28 34 Video Client

Cable Configuration for Demo NetFPGA Gigabit Ethernet Interfaces nf2c3 : Left neighbor in network (green) nf2c2 : Local host interface (red) nf2c : Right neighbor in network (green) Host Ethernet Interfaces eth : Local host interface (red) 2 eth nf2c 3 2 2 eth 3 2 2 eth 3 2 2 eth 3 2 2 eth 3 2 2 eth 3 2 2 eth 3 2 2 eth 3 2 2 eth 3 2 2 eth 3 2 NetFPGA Cambridge Workshop 5-6 Sep 28 35 Working IP Router Objectives Become familiar with Stanford Reference Router Observe PW-OSPF re-routing traffic around a failure NetFPGA Cambridge Workshop 5-6 Sep 28 36

Streaming Video through the NetFPGA Video server Source files /var/www/html/video Network URL : http://92.68.net.host/video Video client Windows Media Player Linux mplayer Video traffic MPEG2 HDTV (35 Mbps) MPEG2 TV (9 Mbps) DVI (3 Mbps) WMF (.7 Mbps) NetFPGA Cambridge Workshop 5-6 Sep 28 37 Demo Physical Configuration Key: eth of Host PC 92.68.X.Y NetFPGA Router # To stream mplayer video from server 4., type:./mp 92.68.4. Any PC can stream traffic through multiple NetFPGA routers in the ring topology to any other PC 92.68.8.* 6 5 92.68.2.* 7 8 9 9. 22. 25. 28.. 6. 92.68.5.* 3. 4 92.68.24.* 92.68.27.* 92.68.3.* 92.68.2.*. 3 2 92.68.9.* 7. 4. 92.68.6.* 92.68.3.* NetFPGA Cambridge Workshop 5-6 Sep 28 38

Step Observe the Routing Tables The router is already configured and running on your machines The routing table has converged to the routing decisions with minimum number of hops Next, break a link NetFPGA Cambridge Workshop 5-6 Sep 28 39 Step 2 - Dynamic Re-routing Break the link between video server and video client....2.3..2..3.2.3.2.4..7....4.2.7.2..2.6.2.9.2.2.2.6..9..2..5..8....4..3..3.2.5..5.2.8..6..6.2.7. Routers re-route traffic around the broken link and video continues playing.29..3..27.2.28.2.28..26..24.2.27..25.2.25..23..2.2.24..22.2.22..2..8.2.2..9.2.9. NetFPGA Cambridge Workshop 5-6 Sep 28 4

Integrated Circuit Technology And Field Programmable Gate Arrays (FPGAs) NetFPGA Cambridge Workshop 5-6 Sep 28 4 Integrated Circuit Technology Full-custom Design Complementary Metal Oxide Semiconductor (CMOS) Semi-custom ASIC Design Gate array Standard cell Programmable Logic Device Programmable Array Logic Field Programmable Gate Arrays Processors Network Processors General Purpose Processors NetFPGA Cambridge Workshop 5-6 Sep 28 42

Look-Up Tables Combinatorial logic is stored in Look-Up Tables (LUTs) Also called Function Generators (FGs) Capacity is limited only by number of inputs, not complexity Delay through the LUT is constant A B C D Combinatorial Logic Z A B C D Z... Diagram From: Xilinx, Inc NetFPGA Cambridge Workshop 5-6 Sep 28 43 Xilinx CLB (Configurable Logic Blocks) Structure Each slice has four outputs Two registered outputs, two non-registered outputs Two BUFTs (tristate buffers) associated with each CLB, accessible by all 6 CLB outputs Slice PRE LUT Carry D Q CE CLR Carry logic run vertically Signals run upward Two independent carry chains per CLB LUT Carry D PRE CE Q CLR Diagram From: Xilinx, Inc. NetFPGA Cambridge Workshop 5-6 Sep 28 44

G G2 G3 G4 H F F2 F3 F4 CLB 4 LUT G 4 LUT F 3 LUT H The image cannot be displayed. Your computer may not have enough memory to open the image, or the image may have been corrupted. Restart your computer, and then open the file again. If the red x still appears, you may have to delete the image and then insert it again. Din M M M M Clk S D Q R S D Q The image cannot be displayed. Your computer may not have enough memory to open the image, or the image may have been corrupted. Restart your computer, and then open the file again. If the red x still appears, you may have to delete the image and then insert it again. R YQ Y XQ X Field Programmable Gate Arrays CLB Primitive element of FPGA Routing Module Global routing Local interconnect GRM Local Routing CLB PIP Macro Blocks Block Memories Microprocessor 3rd Generation LUT-based FPGA......... I/O Block...... Macro Block (up, Mem)...... NetFPGA Cambridge Workshop 5-6 Sep 28 45 Pad Routing CLB Matrix I/O NetFPGA Block Diagram Four Gigabit Ethernet Interfaces NetFPGA platform GE PHY GE PHY GE PHY GE PHY Host computer GE GE GE GE V2-Pro5 FPGA w/ infrastructure FIFO packet buffers Your hardware specified in Verilog source code connected - to components of the Reference Router circuits and cores. Control, PCI Interface Linux OS - NetFPGA Kernel driver 64MB 8Mb DDR2 8Mb SRAM SDRAM SRAM 3 Gb SATA User-defined software networking applications Board-Board Interconnect NetFPGA Cambridge Workshop 5-6 Sep 28 46

Details of the NetFPGA Fits into standard PCI slot Standard Bus: 32 bits, 33 MHz Provides interfaces for processing network packets 4 Gigabit Ethernet Ports Allows hardware-accelerated processing Implemented with Field Programmable Gate Array (FPGA) Logic NetFPGA Cambridge Workshop 5-6 Sep 28 47 Introduction to the Verilog Hardware Description Language NetFPGA Cambridge Workshop 5-6 Sep 28 48

Hardware Description Languages Concurrent By default, Verilog statements evaluated concurrently Express fine grain parallelism Allows gate-level parallelism Provides Precise Description Eliminates ambiguity about operation Synthesizable Generates hardware from description NetFPGA Cambridge Workshop 5-6 Sep 28 49 Verilog Data Types reg [7:] A; // 8-bit register, MSB to LSB // (Preferred bit order for NetFPGA) reg [:5] B; // 6-bit register, LSB to MSB B = {A[7:],A[:7]}; // Assignment of bits reg [3:] Mem [:23]; // K Word Memory integer Count; // simple signed 32-bit integer integer K[:64]; // an array of 64 integers time Start, Stop; // Two 64-bit time variables NetFPGA Cambridge Workshop 5-6 Sep 28 5 From: CSCI 32 Computer Architecture Handbook on Verilog HDL, by Dr. Daniel C. Hyde : http://eesun.free.fr/doc/verilog/verilog-manual.html

Signal Multiplexers Two input multiplexer (using if / else) reg y; always @* if (select) y = a; else y = b; Two input multiplexer (using ternary operator?:) wire t = (select? a : b); NetFPGA Cambridge Workshop 5-6 Sep 28 5 From: http://eesun.free.fr/doc/verilog/synvlg.html Larger Multiplexers Three input multiplexer reg s; always @* begin case (select2) 2'b: s = a; 2'b: s = b; default: s = c; endcase end NetFPGA Cambridge Workshop 5-6 Sep 28 52 From: http://eesun.free.fr/doc/verilog/synvlg.html

Synchronous Storage Elements Values change at times governed by clock Din Clock D Q Dout Clock Input to circuit Clock t= t= t=2 Clock Transition time Clock Event Example: Rising edge Flip/Flop Transfers value from D in to D out on clock event Din t= Dout t= S A B C A B Clock Transition NetFPGA Cambridge Workshop 5-6 Sep 28 53 Finite State Machines Inputs (X) Copyright 2, John W. Lockwood, All Rights Reserved Outputs (Z) =λ (X,S(t)) [Mealy] -or- =λ (S(t)) [Moore] Combinational Logic S(t) Q D... Q D δ S(t+)= (X,S(t)) Next State State Storage NetFPGA Cambridge Workshop 5-6 Sep 28 54

Synthesizable Verilog: 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; NetFPGA Cambridge Workshop 5-6 Sep 28 55 From: http://eesun.free.fr/doc/verilog/synvlg.html Exercise Build the Reference Router NetFPGA Cambridge Workshop 5-6 Sep 28 56

Reference Router Pipeline Five stages Input Input arbitration Routing decision and packet modification Output queuing Output Packet-based module interface Pluggable design Input Arbiter Output Port Lookup Output Queues NetFPGA Cambridge Workshop 5-6 Sep 28 57 Make your own router Objectives: Learn how to build hardware Run the software Explore router architecture Execution Start synthesis Rerun the GUI with the new hardware Test connectivity and statistics with pings Explore pipeline in the details page Explore detailed statistics in the details page NetFPGA Cambridge Workshop 5-6 Sep 28 58

Step - Build the Hardware Close all windows Start terminal, cd to NF2/projects/tutorial_router/synth Run make clean Start synthesis with make NetFPGA Cambridge Workshop 5-6 Sep 28 59 First Break (while hardware compiles) NetFPGA Cambridge Workshop 5-6 Sep 28 6

Step 2 - Run Homemade Router cd to NF2/projects/tutorial_router/sw To use the just-built router hardware, type:./tut_router_gui.pl --use_bin../../../bitfiles/tutorial_router.bit To stream video, run:./mp 92.68.X.Y where X.Y = 25. or 9. or 7. (or other server as listed on Demo handout) NetFPGA Cambridge Workshop 5-6 Sep 28 6 Step 4 - Connectivity and Statistics Ping any addresses 92.68.x.y where x is from -2 and y is or 2 Open the statistics tab in the Quickstart window to see some statistics Explore more statistics in modules under the details tab NetFPGA Cambridge Workshop 5-6 Sep 28 62

Step 5 - Explore Router Architecture Click the Details tab of the Quickstart window This is the reference router pipeline a canonical, simple-to-understand, modular router pipeline NetFPGA Cambridge Workshop 5-6 Sep 28 63 Step 6 - Explore Output Queues Click on the Output Queues module in the Details tab The page gives configuration details and statistics NetFPGA Cambridge Workshop 5-6 Sep 28 64

Understanding Buffer Size Requirements in a Router NetFPGA Cambridge Workshop 5-6 Sep 28 65 Buffer Requirements in a Router Buffer size matters: Small queues reduce delay Large buffers are expensive Theoretical tools predict requirements Queuing theory Large deviation theory Mean field theory Yet, there is no direct answer Flows have a closed-loop nature Question arises on whether focus should be on equilibrium state or transient state NetFPGA Cambridge Workshop 5-6 Sep 28 66

Rule-of-thumb Source Router C Destination Universally applied rule-of-thumb: A router needs a buffer size: B = 2T C 2T is the two-way propagation delay (or just 25ms) C is capacity of bottleneck link Context Mandated in backbone and edge routers Appears in RFPs and IETF architectural guidelines Already known by inventors of TCP [Van Jacobson, 988] Has major consequences for router design 2T NetFPGA Cambridge Workshop 5-6 Sep 28 67 The Story So Far # packets at Gb/s,,, 2 () Assume: Large number of desynchronized flows; % utilization (2) Assume: Large number of desynchronized flows; <% utilization NetFPGA Cambridge Workshop 5-6 Sep 28 68

Using NetFPGA to explore buffer size Need to reduce buffer size and measure occupancy Alas, not possible in commercial routers So, we will use the NetFPGA instead Objective: Use the NetFPGA to understand how large a buffer we need for a single TCP flow. NetFPGA Cambridge Workshop 5-6 Sep 28 69 Why 2TxC for a single TCP Flow? Only W packets may be outstanding Rule for adjusting W If an ACK is received: W W+/W If a packet is lost: W W/2 NetFPGA Cambridge Workshop 5-6 Sep 28 7

Time Evolution of a Single TCP Flow Time evolution of a single TCP flow through a router. Buffer is 2T*C Time evolution of a single TCP flow through a router. Buffer is < 2T*C NetFPGA Cambridge Workshop 5-6 Sep 28 7 NetFPGA Hardware Set for Demo #2 x2 Video Client Video Server PCI-e PCI PCI-e NIC Net-FPGA Internet Router Hardware NIC GE GE GE GE GE GE GE GE Server delivers streaming HD video to adjacent client x2 NetFPGA Cambridge Workshop 5-6 Sep 28 72

Demo 2 Observing and Controlling the Queue Size NetFPGA Cambridge Workshop 5-6 Sep 28 73 Setup for the Demo 2 Adjacent Web & Video Server Local Host eth nf2c2 NetFPGA nf2c eth2 Router NetFPGA Cambridge Workshop 5-6 Sep 28 74

Interfaces and Subnets eth connects your host to your NetFPGA Router nf2c2 routes to nf2c (your adjacent server) eth2 serves web and video traffic to your neighbor nf2c & nf2c3 (the network ring) are unused.2..4..5..7..8......3.....2.2.2.4.2.5.2.7.2.8.2..2..2.3.2.29..4.2.29.2.28..28.2.26..26.2.25..25.2.23..23.2.22.2.22..2..2.2.9.2.9..7..7.2.6.2.6..4. This configuration allows you to modify and test your router without affecting others NetFPGA Cambridge Workshop 5-6 Sep 28 75 Cable Configuration for Demo 2 NetFPGA Gigabit Ethernet Interfaces nf2c2 : Local host interface (red) nf2c : Router for adjacent server (blue) Host Ethernet Interfaces eth : Local host interface (red) eth2 : Server for neighbor (blue) nf2c 3 2 2 eth nf2c 3 2 2 eth nf2c 3 2 2 eth nf2c 3 2 2 eth nf2c 3 2 2 eth nf2c 3 2 2 eth nf2c 3 2 2 eth nf2c 3 2 2 eth nf2c 3 2 2 eth nf2c 3 2 2 eth NetFPGA Cambridge Workshop 5-6 Sep 28 76

Demo 2 Configuration Key: Eth: 92.68.X. Eth2: 92.68.Y. NetFPGA Router # Stream traffic through your NetFPGA router s Eth interface using your neighbor s eth2 interface Eth2 Eth 6 9. 7. 7 8 9 22. 2. 25. 23. 28. 26.. 29. 4. 6. 5. 3. 4 8.. 5. 7. 3 2 2. 4. Eth2 Eth NetFPGA Cambridge Workshop 5-6 Sep 28 77 Enhanced Router Objectives Observe router with new modules New modules: rate limiting, event capture Execution Run event capture router Look at routing tables Explore details pane Start tcp transfer, look at queue occupancy Change rate, look at queue occupancy NetFPGA Cambridge Workshop 5-6 Sep 28 78

Step - Run Pre-made Enhanced Router Start terminal and cd to NF2/projects/tutorial_ro uter/sw/ Type./tut_adv_router_gui.pl A familiar GUI should start NetFPGA Cambridge Workshop 5-6 Sep 28 79 Step 2 - Explore Enhanced Router Click on the Details tab A similar pipeline to the one seen previously shown with some additions NetFPGA Cambridge Workshop 5-6 Sep 28 8

Enhanced Router Pipeline Two modules added. Event Capture to capture output queue events (writes, reads, drops) Input Arbiter Output Port Lookup Event Capture 2. Rate Limiter to create a bottleneck Rate Limiter Output Queues NetFPGA Cambridge Workshop 5-6 Sep 28 8 Step 3 - Decrease the Link Rate To create bottleneck and show the TCP sawtooth, link-rate is decreased. In the Details tab, click the Rate Limit module Check Enabled Set link rate to.953mbps NetFPGA Cambridge Workshop 5-6 Sep 28 82

Step 4 Decrease Queue Size Go back to the Details panel and click on Output Queues Select the Output Queue 2 tab Change the output queue size in packets slider to 6 NetFPGA Cambridge Workshop 5-6 Sep 28 83 Step 5 - Start Event Capture Click on the Event Capture module under the Details tab This should start the configuration page NetFPGA Cambridge Workshop 5-6 Sep 28 84

Step 6 - Configure Event Capture Check Send to local host to receive events on the local host Check Monitor Queue 2 to monitor output queue of port Check Enable Capture to start event capture NetFPGA Cambridge Workshop 5-6 Sep 28 85 Step 7 - Start TCP Transfer We will use iperf to run a large TCP transfer and look at queue evolution Start a terminal and cd to NF2/projects/tutorial_router/sw Type./iperf.sh NetFPGA Cambridge Workshop 5-6 Sep 28 86

Step 8 - Look at Event Capture Results Click on the Event Capture module under the Details tab. The sawtooth pattern should now be visible. NetFPGA Cambridge Workshop 5-6 Sep 28 87 Queue Occupancy Charts Observe the TCP/IP sawtooth Leave the control windows open NetFPGA Cambridge Workshop 5-6 Sep 28 88

Exercise 2: Enhancing the Reference Router NetFPGA Cambridge Workshop 5-6 Sep 28 89 Enhance Your Router Objectives Add new modules to datapath Synthesize and test router Execution Open user_datapath.v, uncomment delay/rate/event capture modules Synthesize After synthesis, test the new system NetFPGA Cambridge Workshop 5-6 Sep 28 9

An aside: xemacs Tips We will modify Verilog source code with xemacs To undo a command, type ctrl+shift+'-' To cancel a multi-keystroke command, type ctrl+g To select lines, hold shift and press the arrow keys To comment (remove from compilation) selected lines, type ctrl+c+c To uncomment a commented block, move the cursor inside the commented block type ctrl+c+u To save, type ctrl+x+s To search for a term, type ctrl+s search_pattern NetFPGA Cambridge Workshop 5-6 Sep 28 9 Step - Open the Source We will modify the Verilog source code to add event capture and rate limiter modules We will simply comment and uncomment existing code Open terminal Type xemacs NF2/projects/tutorial_router/src/user_data_path.v NetFPGA Cambridge Workshop 5-6 Sep 28 92

Step 2 - Add Wires Now we need to add wires to connect the new modules Search for new wires (ctrl+s new wires), then press Enter Uncomment the wires (ctrl+c+u) NetFPGA Cambridge Workshop 5-6 Sep 28 93 Step 3a - Connect Event Capture Search for opl_output (ctrl+s opl_output), then press Enter Comment the four lines above (up, shift + up + up + up + up, ctrl+c+c) Uncomment the block below to connect the outputs (ctrl+s opl_out, ctrl+c+u) NetFPGA Cambridge Workshop 5-6 Sep 28 94

Step 3b - Connect the Output Queue Registers Search for opl_output (ctrl+s opl_output, Enter) Comment the 6 lines (select the six lines by using shift+arrow keys, then type ctrl+c+c) Uncomment the commented block by scrolling down into the block and typing ctrl+c+u NetFPGA Cambridge Workshop 5-6 Sep 28 95 Step 4 - Add the Event Capture Module Search for evt_capture_top (ctrl+s evt_capture_top), then press Enter Uncomment the block (ctrl+c+u) NetFPGA Cambridge Workshop 5-6 Sep 28 96

Step 5 - Add the Drop Nth Module Search for drop_nth_packet (ctrl+s drop_nth_packet), then press Enter Uncomment the block (ctrl+c+u) NetFPGA Cambridge Workshop 5-6 Sep 28 97 Step 6 - Connect the Output Queue to the Rate Limiter Search for port_outputs (ctrl+s port_outputs), then press (Enter) Comment the 4 lines above (select the four lines by using shift+arrow keys), then type (ctrl+c+c) Uncomment the commented block by scrolling down into the block and typing ctrl+c+u NetFPGA Cambridge Workshop 5-6 Sep 28 98

Step 7 - Connect the Registers Search for port_outputs (ctrl+s port_outputs), then press (Enter) Comment the 6 lines (select the six lines by using shift+arrow keys), then type (ctrl+c+c) six Uncomment the commented block by scrolling down into the block and typing (ctrl+c+u) NetFPGA Cambridge Workshop 5-6 Sep 28 99 Step 8 - Add Rate Limiter Scroll down until you reach the next excluded block Uncomment the block containing the rate limiter instantiations. Scroll into the block, type (ctrl+c+u) Save (ctrl+x+s) NetFPGA Cambridge Workshop 5-6 Sep 28

Step 9 - Build the Hardware Start terminal, cd to NF2/projects/tutorial_router/synth Run make clean Start synthesis with make NetFPGA Cambridge Workshop 5-6 Sep 28 Second Break (while hardware compiles) NetFPGA Cambridge Workshop 5-6 Sep 28 2

Hardware Datapath NetFPGA Cambridge Workshop 5-6 Sep 28 3 Full System Components Software PCI Bus nf2c nf2c nf2c2 nf2c3 ioctl NetFPGA user data path nf2_reg_grp Ethernet NetFPGA Cambridge Workshop 5-6 Sep 28 4

Life of a Packet through the Hardware 92.68..x port port2 92.68.2.y NetFPGA Cambridge Workshop 5-6 Sep 28 5 Router Stages Again Input Arbiter Output Port Lookup Output Queues NetFPGA Cambridge Workshop 5-6 Sep 28 6

Inter-Module Communication Using Module Headers : Ctrl Word (8 bits) x y x Data Word (64 bits) Module Hdr Last Module Hdr Eth Hdr IP Hdr Last word of packet Contain information such as packet length, input port, output port, NetFPGA Cambridge Workshop 5-6 Sep 28 7 Inter-Module Communication data ctrl wr rdy NetFPGA Cambridge Workshop 5-6 Sep 28 8

Rx Queue NetFPGA Cambridge Workshop 5-6 Sep 28 9 Rx Queue xff Pkt length, input port = Eth Hdr: Dst = port, Ethertype = IP IP Hdr: IP Dst: 92.68.2.3, TTL: 64, Csum:x3ab4 Data NetFPGA Cambridge Workshop 5-6 Sep 28

Input Arbiter Pkt Pkt Pkt NetFPGA Cambridge Workshop 5-6 Sep 28 Output Port Lookup NetFPGA Cambridge Workshop 5-6 Sep 28 2

Output Port Lookup - Check input port matches Dst 5- Add output port header 2- Check TTL, checksum 3- Lookup next hop IP & output port (LPM) 4- Lookup next hop address (ARP) xff Pkt length, input port = output port = 4 EthHdr: EthHdr: Dst Dst = nexthop = Src Src = port = x, 4, Ethertype = IP IP Hdr: IP Dst: 92.68.2.3, TTL: 64, 63, Csum:x3ab4 Csum:x3ac2 Data 6- Modify Dst and Src addresses 7-Decrement TTL and update checksum NetFPGA Cambridge Workshop 5-6 Sep 28 3 Output Queues OQ OQ4 OQ7 NetFPGA Cambridge Workshop 5-6 Sep 28 4

Tx Queue NetFPGA Cambridge Workshop 5-6 Sep 28 5 Tx Queue xff Pkt length, input port = output port = 4 EthHdr: Dst = nexthop Src = port 4, Ethertype = IP IP Hdr: IP Dst: 92.68.2.3, TTL: 64, 63, Csum:x3ab4 Csum:x3ac2 Data NetFPGA Cambridge Workshop 5-6 Sep 28 6

Exception Packet Example: TTL = or TTL = Packet has to be sent to the which will generate an ICMP packet as a response Difference starts at the Output Port lookup stage NetFPGA Cambridge Workshop 5-6 Sep 28 7 Exception Packet Path Software PCI Bus nf2c nf2c nf2c2 nf2c3 ioctl NetFPGA user data path nf2_reg_grp Ethernet NetFPGA Cambridge Workshop 5-6 Sep 28 8

Output Port Lookup - Check input port matches Dst 2- Check TTL, checksum EXCEPTION! 3- Add output port module xff Pkt length, input port = output port = EthHdr: Dst =, Src = x, Ethertype = IP IP Hdr: IP Dst: 92.68.2.3, TTL:, Csum:x3ab4 Data NetFPGA Cambridge Workshop 5-6 Sep 28 9 Output Queues OQ OQ OQ2 OQ7 NetFPGA Cambridge Workshop 5-6 Sep 28 2

Tx Queue NetFPGA Cambridge Workshop 5-6 Sep 28 2 Tx Queue xff Pkt length, input port = output port = EthHdr: Dst =, Src = x, Ethertype = IP IP Hdr: IP Dst: 92.68.2.3, TTL:, Csum:x3ab4 Data NetFPGA Cambridge Workshop 5-6 Sep 28 22

ICMP Packet For the ICMP packet, the packet arrives at the Rx Queue from the PCI Bus It follows the same path as a packet from the until it reaches the Output Port Lookup The OPL module sees the packet is from the Rx Queue and sets the output port directly to The packet then continues on the same path as the non-exception packet to the Output Queues and then Tx queue NetFPGA Cambridge Workshop 5-6 Sep 28 23 ICMP Packet Path Software PCI Bus nf2c nf2c nf2c2 nf2c3 ioctl NetFPGA user data path nf2_reg_grp Ethernet NetFPGA Cambridge Workshop 5-6 Sep 28 24

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_, &val); NetFPGA Cambridge Workshop 5-6 Sep 28 25 NetFPGA-Host Interaction NetFPGA to host packet transfer. Packet arrives forwarding table sends to queue 2. Interrupt notifies driver of packet arrival PCI Bus 3. Driver sets up and initiates DMA transfer NetFPGA Cambridge Workshop 5-6 Sep 28 26

NetFPGA-Host Interaction NetFPGA to host packet transfer (cont.) 4. NetFPGA transfers packet via DMA PCI Bus 5. Interrupt signals completion of DMA 6. Driver passes packet to network stack NetFPGA Cambridge Workshop 5-6 Sep 28 27 NetFPGA-Host Interaction Host to NetFPGA packet transfers 2. Driver sets up and initiates DMA transfer PCI Bus 3. Interrupt signals completion of DMA. Software sends packet via network sockets Packet delivered to driver NetFPGA Cambridge Workshop 5-6 Sep 28 28

NetFPGA-Host Interaction Register access PCI Bus 2. Driver performs PCI memory read/write. Software makes ioctl call on network socket ioctl passed to driver NetFPGA Cambridge Workshop 5-6 Sep 28 29 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 NetFPGA Cambridge Workshop 5-6 Sep 28 3

Step Perfect the Router Go back to Demo 2: Step after synthesis completes and redo the steps with your own router To run your router: - cd NF2/projects/tutorial_router/sw 2- type./tut_adv_router_gui.pl --use_bin../../../bitfiles/tutorial_router.bit You can change the bandwidth and queue size settings to see how that affects the evolution of queue occupancy NetFPGA Cambridge Workshop 5-6 Sep 28 3 Drop in N Packets Objectives Add counter and FSM to the code Synthesize and test router Execution Open drop_nth_packet.v Insert counter code Synthesize After synthesis, test the new system. NetFPGA Cambridge Workshop 5-6 Sep 28 32

New Reference Router Pipeline One module added. Drop Nth Packet to drop every Nth packet from the reference router pipeline Input Arbiter Output Port Lookup Event Capture Drop Nth Packet Output Queues Rate Limiter NetFPGA Cambridge Workshop 5-6 Sep 28 33 Step - Open the Source We will modify the Verilog source code to add a counter to the drop_nth_packet module Open terminal Type xemacs NF2/projects/tutorial_router/src/drop_nth_packet.v NetFPGA Cambridge Workshop 5-6 Sep 28 34

Step 2 - Add Counter to Module Add counter using the following signals: counter 6 bit output signal that you should increment on each packet pulse rst_counter reset signal (a pulse input) inc_counter increment (a pulse input) Search for insert counter (ctrl+s insert counter, Enter) Insert counter and save (ctrl+x+s) NetFPGA Cambridge Workshop 5-6 Sep 28 35 Step 3 - Build the Hardware Start terminal, cd to NF2/projects/ tutorial_router/synth Run make clean Start synthesis with make NetFPGA Cambridge Workshop 5-6 Sep 28 36

Using the NetFPGA in the Classroom NetFPGA Cambridge Workshop 5-6 Sep 28 37 NetFPGA in the Classroom Stanford University EE9 Build an Ethernet Switch Undergraduate course for all EE students http://www.stanford.edu/class/ee9/ CS344 Building an Internet Router Quarter-long course Taught Spr 5, Spr 7, Spr 8 http://cs344.stanford.edu Rice University Nework Systems Architecture Spr 8 http://comp59.cs.rice.edu/ See: http://netfpga.org/teachers.html NetFPGA Cambridge Workshop 5-6 Sep 28 38

Components of NetFPGA Course Documentation System Design Implementation Plan Deliverables Hardware Circuits System Software Milestones Testing Proof of Correctness Integrated Testing Interoperabilty Post Mortem Lessons Learned NetFPGA Cambridge Workshop 5-6 Sep 28 39 NetFPGA in the Classroom Stanford CS344: Build an Internet Router Courseware available on-line Students work in teams of three -2 software -2 hardware Design and implement router in 8 weeks Write software for CLI and PW-OSPF Show interoperability with other groups Add new features in remaining two weeks Firewall, NAT, DRR, Packet capture, Data generator, NetFPGA Cambridge Workshop 5-6 Sep 28 4

Build basic router Command Line Routing Protocol Interface (PWOSPF) CS344 Milestones 2 3 4 5 6 Integrate with H/W Interoperability Final Project Management & CLI Exception Processing Emulated h/w in VNS software hardware Routing Protocols Routing Table Management & CLI Exception Processing Routing Protocols Routing Table Emulated h/w in VNS Management & CLI Routing Exception Protocols Processing Routing Table Emulated h/w in VNS Management & CLI Routing Exception Protocols Processing Routing Table Forwarding Switching Table Innovate and add! Presentations Judges Learning Environment Modular design Testing Forwarding Table Switching 4-port non-learning switch 4-port learning switch IPv4 router forwarding path Integrate with S/W Interoperability NetFPGA Cambridge Workshop 5-6 Sep 28 4 Typical NetFPGA Course Plan Week Software Hardware Deliver Verify Software Tools Verify CAD Tools Write Design Document 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 HW/SW Test 7 Interoperate Software & Hardware Router Submission 8 Plan New Advanced Feature Project Design Plan 9 Show new Advanced Feature Demonstration NetFPGA Cambridge Workshop 5-6 Sep 28 42

CS344 Project Presentations http://cs344.stanford.edu NetFPGA Cambridge Workshop 5-6 Sep 28 43 NetFPGA Worldwide Tutorial Series SIGCOMM: Seattle, Washington Eurosys: Glasgow, Scotland Jiaotong Univ. Beijing, China Hot Interconnects & Summer Camp Stanford, California SIGMETRICS San Diego, California Cambridge: England CESNET Brno, Czech Republic IISc Bangalore, India NICTA/UNSW: Sydney, Australia NetFPGA Cambridge Workshop 5-6 Sep 28 44

Photos from NetFPGA Tutorials SIGCOMM - Seattle, Washington, USA Beijing, China SIGMETRICS - San Diego, California, USA EuroSys - Glasgow, Scotland, U.K. Bangalore, India http://netfpga.org/pastevents.php and http://netfpga.org/upcomingevents.php NetFPGA Cambridge Workshop 5-6 Sep 28 45 Deployed NetFPGA hardware (July 28) Princeton University Rice University Georgia Tech Washington University University of Utah University of Toronto University of Wisconsin University of Connecticut University of California, San Diego (UCSD) University of California, Los Angeles (UCLA) University of Idaho University of Massachusetts (UMass) University of Pennsylvania (UPenn) North Carolina State University Lehigh University State University of New York (SUNY), Buffalo State University of New York (SUNY), Binghamton University of Florida Rutgers Western New England College Emerson Network Power ICSI Agilent Cisco Quanta Computer, Inc. Zones Inc. NetFPGA Cambridge Workshop 5-6 Sep 28 46 Cambridge University India Institute of Science (IISc), Bangalore Ecole Polytechnique de Montreal Beijing Jaiotong University China Zhejiang University National Taiwan University University of New South Wales University of Hong Kong University of Sydney University of Bologna University of Naples University of Pisa, Italy University of Quebec University of Jinan University of Amsterdam University of Waterloo University of Victoria Chung Yuan Christan University, Taiwan (CYCU) Universite de Technologie de Compiegne (UTC) Catholic University of Rio De Janeiro University Leiden (The Netherlands) National United University Kookman University (South Korea) Kasetsart University (Thailand) Helsinki Institute for Information Technology (HIIT) CESNET

Map of Deployed Hardware (July 28) NetFPGA Cambridge Workshop 5-6 Sep 28 47 Network Systems Architecture at Rice http://comp59.cs.rice.edu/ NetFPGA Cambridge Workshop 5-6 Sep 28 48

Networked FPGAs in Research. Managed flow-table switch http://openflowswitch.org/ 2. Buffer Sizing Reduce buffer size & measure buffer occupancy 3. RCP: Congestion Control New module for parsing and overwriting new packet New software to calculate explicit rates 4. Deep Packet Inspection (FPX) TCP/IP Flow Reconstruction Regular Expression Matching Bloom Filters 5. Packet Monitoring (ICSI) Network Shunt 6. Precise Time Protocol (PTP) Synchronization among Routers NetFPGA Cambridge Workshop 5-6 Sep 28 49 CESNET / Liberouter FPGA cards and accelerated network solutions : www.liberouter.org CESNET Masaryk University Brno University of Technology Hardware cards Existing / Gbps family of COMBO cards Upcoming / Gbps family of COMBOv2 cards NetCOPE platform for rapid development of network applications PCI Express support, fast DMA transfers, pre-processed input packets Extensive tool set for data streams manipulation Cooperation with NetFPGA to create compatible application interface Network applications NetFlow monitoring collecting network statistics about flows Payload checking scanning content of packet payload Hardware filtration and forwarding Commercial spin-off company INVEA-TECH : www.invea-tech.com NetFPGA Cambridge Workshop 5-6 Sep 28 5

Virtex 5 LXT- FPGA PCIe x 8 Host Interface Supports multiple Gbps (and faster) interfaces QDR-II Memory CESNET COMBO-LXT SO-DIMM for DDR2 DRAM NetFPGA Cambridge Workshop 5-6 Sep 28 5 Third Break (while hardware compiles) NetFPGA Cambridge Workshop 5-6 Sep 28 52

Step 5 Test your Router You can watch the number of received and sent packets to watch the module drop every Nth packet. Ping a local machine (i.e. 92.68.7.) and watch for missing pings To run your router: - Enter the directory by typing: cd NF2/projects/tutorial_router/sw 2- Run the router by typing:./tut_adv_router_gui.pl --use_bin../../../bitfiles/tutorial_router.bit To set the value of N (which packet to drop) type regwrite x274 N replace N with a number (such as ) To enable packet dropping, type: regwrite x27 x To disable packet dropping, type: regwrite x27 x NetFPGA Cambridge Workshop 5-6 Sep 28 53 Step 5 Measurements Determine iperf TCP throughput to neighbor s server for each of several values of N Similar to Demo 2, Step 8 Ping 92.68.x.2 (where x is your neighbor s server) TCP throughput with: Drop circuit disabled TCP Throughput = Mbps Drop one in N =, packets TCP Throughput = Mbps Drop one in N = packets TCP Throughput = Mbps Drop one in N = packets TCP Throughput = Mbps Explain why TCPs throughput is so low given that only a tiny fraction of packets are lost NetFPGA Cambridge Workshop 5-6 Sep 28 54

Visit http://netfpga.org NetFPGA Cambridge Workshop 5-6 Sep 28 55 Join the NetFPGA.org Community Log into the Wiki Access the Beta code Join the netfpga-beta mailing list Join the discussion forum NetFPGA Cambridge Workshop 5-6 Sep 28 56

Learn from the On-line Guide Obtain hardware, software, & gateware Install software, CAD tools, & simulation models Verify installation using regression selftests Walk through the reference designs Learn about contributed packages NetFPGA Cambridge Workshop 5-6 Sep 28 57 Search for related work List your project on the Wiki Link your project homepage Contribute to the Project NetFPGA Cambridge Workshop 5-6 Sep 28 58

Project Ideas for the NetFPGA IPv6 Router (in high demand) TCP Traffic Generator Valiant Load Balancing Graphical User Interface (like CLACK) -in- Encapsulation Encryption / Decryption modules RCP Transport Protocol Packet Filtering ( Firewall, IDS, IDP ) TCP Offload Engine DRAM Packet Queues 8-Port Switch using SATA Bridge Build our own (from source, rather than core) Use XML for Register Definitions http://netfpga.org/netfpgawiki/index.php/module_wishlist NetFPGA Cambridge Workshop 5-6 Sep 28 59 Group Discussion Your plans for using the NetFPGA Teaching Research Other Resources needed for your class Source code Courseware Examples Your plans to contribute Expertise Capabilities Collaboration Opportunities NetFPGA Cambridge Workshop 5-6 Sep 28 6

Survey How did you like this this tutorial? What did you find useful? What should be improved? What should be removed? What should be added? Can we post the video from this event? If not, please let us know. Complete On-line survey http://netfpga.org/tutorial_survey.html NetFPGA Cambridge Workshop 5-6 Sep 28 6 Acknowledgments NetFPGA Team at Stanford University: May 28 Jianying Luo, Jad Naous, Nick McKeown, Glen Gibb, G. Adam Covington, David Erickson, John W. Lockwood, Brandon Heller Not Shown in photo: Paul Hartke, Neda Beheshti, Sara Bolouki NetFPGA Cambridge Workshop 5-6 Sep 28 62

Special thanks to: Patrick Lysaght, Veena Kumar, Paul Hartke, Anna Acevedo Xilinx University Program (XUP) Other NetFPGA Tutorial Presented At: SIGMETRICS See: http://netfpga.org/tutorials/ NetFPGA Cambridge Workshop 5-6 Sep 28 63 Acknowledgments Support for the NetFPGA project has been provided by the following companies and institutions Disclaimer: Any opinions, findings, conclusions, or recommendations expressed in these materials do not necessarily reflect the views of the National Science Foundation or of any other sponsors supporting this project. NetFPGA Cambridge Workshop 5-6 Sep 28 64