SummerCamp2008
From NetFPGAWiki
Contents |
NetFPGA Summer Camp
- Gates Building, Room 104, 353 Serra Mall, Stanford, CA 94305
- Aug 4-8, 2008
- Event Description
Locations
- Map showing parking and resturants near the Gates Buliding
- Gates Building - Tutorial in Room 104 (near main entrance)
- Address: 353 Serra Mall, Stanford, CA
- Best form of transportation: Marguerite Shuttle - SLAC Line
- Parking locations shown on map
- Stanford Guest House (SLAC) - Hotel.
- Address: 2575 Sand Hill Road.
- Phone: (650) 926-2800
- Gates Building - Tutorial in Room 104 (near main entrance)
People
- The email list for our summer camp group is: mailto:netfpga-camp-2008@lists.stanford.edu
- Participants are welcome to use this list to send useful information to our group
- Please do not SPAM the list.
Daily Schedule (Monday-Friday, Aug 4-8, 2008)
- 8:30am: Breakfast (provided) in Gates room 104
- 9am-10:30am: Instruction Session 1
- 10:30am-11am: Morning Break
- 11am-12:30pm: Instruction Session 2
- 12:30p-1:30pm: Lunch (provided)
- 1:30p-3pm: Instruction Session 3
- 3:00pm-3:30pm: Afternoon Break
- 3:30pm-5:30pm: Instruction Session 4
- 6:30pm: Dinners are planned on the following nights
- Monday: Pizza - AT&T Patio of the Gates Building
- Tuesday: Group Dinner at MacArthur Park (near Palo Alto CalTrain station)
- Shuttle at 8:30pm returns to SLAC
- Friday: California Cafe (near the Historic Stanford Barn)
- Shuttle at 8:30pm returns to SLAC
Weekday Event Detail
Sunday, Aug 3
- Arrive on campus and check in to Stanford Guest House
- Complete: Pre-event Exercise (Below)
Monday, Aug 4
- Welcome and introductions (All)
- Day 1 (John, Glen, Adam)
- Background
- Basics of an IP Router
- The NetFPGA hardware
- How people use the NetFPGA
- Why people use the NetFPGA
- The Stanford Base Reference Router
- Inside the NetFPGA hardware
- Introduction to FPGAs and Verilog
- The Enhanced Reference Router
- Buffer sizing requirements in a router
- Observering and controlling the queue size
- Life of a packet through the NetFPGA
- Data and control planes
- Interface to software: Exceptions and Host I/O
- Demonstration of the NetFPGA
- Address Lookup
- PW-OSPF
- Java-based Graphical User Interface (GUI)
- Demonstration of High Definition (HD) video streaming
- Slides: Image:NetFPGA Summer Camp-Day1.pdf
- Background
- Pizza dinner: AT&T Patio of the Gates Building
Tuesday, Aug 5
- Module Development and Testing
- Running ModelSim with the NetFPGA TestBench (Glen)
- Compile, simulate, view waveforms
- Example: Simply Encryption on a packet payload
- Scrambling the payload with XOR using a key from a register
- Regression testing to verify hardware functionality (Adam)
- Synthesize and run the hardware
- Verify value: 0xFFFFFFFF (would invert every bit of every byte of payload)
- Verify value: 0xFF00FF00 (would invert every other byte of payload)
- Verify value: 0x55555555 (would invert every other bit of payload)
- Slides: Image:NetFPGA Summer Camp-Module Development and Testing.pdf
- Running ModelSim with the NetFPGA TestBench (Glen)
- Introduction to OpenFlow (Jad)
- Show how to use and test OpenFlow
- Describe implementation of OpenFlow
- Show use OpenFlow LiveCD
- Give example of LiveCD on nf-test machines
- Slides: Image:NetFPGA Summer Camp-Day2-OpenFlow.pdf
- Group Dinner at MacArthur Park
Wednesday, Aug 6
- Group discussion
- Projects ideas
- Scope of work that can be accomplished in 2-3 days
- Team up for Projects
- Project leaders will describe projects
- Group will provide feedback on the scope
- Be sure to have one hardware designer per team
- Precise Time Protocol (PTP) (Sara)
- Background and review of block diagrams
- Show PTP running on nf-test machines
- Show syncronization of pairs of machines
- Discuss relevent Verilog Code
Ideas for Long Term Projects
- Enhance Reference Router to support IPv6
- Enhance Traffic Generator to send TCP packets
- Valiant Load Balancing
- Graphical User Interface (like CLACK)
- MAC-in-MAC 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 MAC (from source, rather than core)
- Use XML for Register Definitions
Ideas for Short-term Projects
- A software component
- Enhanced Java GUI
- Hardware enhancement
- Simple Ethernet 1Gbps MAC
- SummerCamp_2008_Projects: Add your information here
Thursday, Aug 7
- Work on Projects
- NetFPGA group available for Questions and Answers
Friday, Aug 8
- Complete Projects
- On the SummerCamp_2008_Projects page, verify your project description and team members
- Update the link to your presentation page
- Update the link to your contribute files page
- Prepare a 10-minute project presentation for Friday at 1pm.
- Download the Summer08Project-Template.ppt
- Save your file with a name like: Summer08Project-MyProjectName.ppt
- Upload your Presentation
- Prepare your files
- From /root, create a compressed tarball using a command like:
- tar cvzf Summer08Project-MyProjectName.tgz NF2/project/MyProjectName
- Upload your Contribution (optional -- encourage you to contribute)
- Prepare your machine(s) for the live demonstration
- On the SummerCamp_2008_Projects page, verify your project description and team members
- Award prizes to winning projects
- Group Dinner at California Cafe
Saturday, Aug 9
- Checkout of Stanford Guest House
Background Reading
Pre-event Exercise
Before you arrive, please complete the following assigment
- Background
- Identify the acronyms for SCONE and HCORR in the context of the NetFPGA Reference Desing.
- Hint: See the on-line NetFPGA Guide for help.
- Identify the acronym for SCONE and list three key funtions it performs:
- Identify the acronym for HCORR and list three key functions it performs:
S_______ C_______ O_______ NE______ performs: 1) 2) 3)
H_______ C_______ O________ R_______ R_______ performs: 1) 2) 3)
- The basic reference router
- Consider a network packet transported through a hardware pipeline.
- On each clock cycle, eight bytes (64 bits) moves between Flip/Flops
- The data that streams through the pipeline includes:
- A shim
- An Ethernet MAC header
- IPv4 header
- The Packet payload.
- Additional signals are provided to indicate the start of the packet and headers
- Assuming an an 8-byte shim, a standard Ethernet header, a standard IPv4 header (without options), and a 120 byte packet payload, how many clock cycles are needed to forward a packet through the pipeline?
_______ Clocks
- Simple coding with Verilog
- Assume that input data arrives on an eight-byte bus as: in_data[63:0]
- Assume that the IP Destination address should go into a 32-bit register named: dst_ip
- Assume that dst_ip is split between two in_data words.
- Write the verilog statement that assigns the first two bytes of dst_ip to the last two bytes of in_data.
- Write the verilog statement that assigns the last two bytes of dst_ip to the first two words of the the in_Data that appears on the next clock
- Write the verilog code that determines if an IP destination of a packet matches 141.142.2.2
- Hint: See: The Verilog Golden Reference Guide by Doulos for help with Verilog syntax.
dst_ip[ 31 : ?? ] <= in_data[ ?? : ??] ; // on a given clock ... dsp_ip[ : ] <= in_data[ ?? : ??] ; // on the next clock .. if dsp_ip[31:0] ?? ?? ?? // Compare address to hex equivalent of 141.142.2.2
Tools
- When you arrive at the workshop, you will be provided a nf-test machine and the code for a test bench were you can insert your code, compile the Verilog, and simulate the code with ModelSim.
- If you woul like to compile and synthesize your code before you arrive, you can download and install ModelSim for circuit simulation.
