some more logistics - university of cambridge
TRANSCRIPT
1
Michaelmas 2009 Building an Internet Router (P33)Handout 1
1
Building an Internet Router (P33)
Handout 1: What’s a router? Class project and logistics
Dr Andrew W. Moore [email protected]
Thank you supporters:
Michaelmas 2009 Building an Internet Router (P33)Handout 1
2
Some logistics
Web page: http://www.cl.cam.ac.uk/teaching/0910/P33/
TAs: David Miller (Hardware) [email protected] Stephen Kell (Software) [email protected]
Hot-spare TAs: Phil Watts (Hardware) philip.watts @cl.cam.ac.uk
Chris Smowton (Software) [email protected]
Grades: Mphil (ACS) – Pass / Fail - based on a mark out of 100 All others (DTC) – Mark out of 100
3
Some more logistics
Class Mailing list: [email protected] think of this as a self-help mailing list for all of you
Staff Mailing list: [email protected]
Submission mail: [email protected]
Group aliases can appear if you require them.
4
What is Routing?
R3
A
B
C
R1
R2
R4 D
E
F R5
R5 F R3 E R3 D Next Hop Destination
D
5
What is Routing?
R3
A
B
C
R1
R2
R4 D
E
F R5
R5 F R3 E R3 D Next Hop Destination
D
16 32 4 1
Data
Options (if any)
Destination Address
Source Address
Header Checksum Protocol TTL
Fragment Offset Flags Fragment ID
Total Packet Length T.Service HLen Ver
20 b
ytes
6
What is Routing?
A
B
C
R1
R2
R3
R4 D
E
F R5
2
7
Points of Presence (POPs)
A
B
C
POP1
POP3 POP2
POP4 D
E
F
POP5
POP6 POP7 POP8
8
Where High Performance Routers are Used
R10 R11
R4
R13
R9
R5 R2 R1 R6
R3 R7
R12
R16 R15
R14 R8
(10 Gb/s)
(10 Gb/s) (10 Gb/s)
(10 Gb/s)
9
What a Router Looks Like Cisco CSR-1 Juniper T320
6ft
19”
2ft
Capacity: 92Tb/s Power: 4.7kW
3ft
2.5ft
19”
Capacity: 320Gb/s Power: 2.9kW
10
Basic Architectural Components of an IP Router
Control Plane
Datapath per-packet processing
Switching Forwarding Table
Routing Table
Routing Protocols
Management & CLI
Software H
ardware
11
Per-packet processing in an IP Router
1. Accept packet arriving on an incoming link. 2. Lookup packet destination address in the
forwarding table, to identify outgoing port(s).
3. Manipulate packet header: e.g., decrement TTL, update header checksum.
4. Send packet to the outgoing port(s). 5. Buffer packet in the queue. 6. Transmit packet onto outgoing link.
12
Generic Router Architecture
Lookup IP Address
Update Header
Header Processing Data Hdr Data Hdr
~1M prefixes Off-chip DRAM
Address Table
IP Address Next Hop
Queue Packet
Buffer Memory
~1M packets Off-chip DRAM
3
13
Generic Router Architecture Lookup
IP Address Update Header
Header Processing
Address Table
Lookup IP Address
Update Header
Header Processing
Address Table
Lookup IP Address
Update Header
Header Processing
Address Table
Data Hdr
Data Hdr
Data Hdr
Buffer Manager
Buffer Memory
Buffer Manager
Buffer Memory
Buffer Manager
Buffer Memory
Data Hdr
Data Hdr
Data Hdr
14
The P33 Project: Build a 4-port x 1GE Router
Switching Forwarding Table
Routing Table
Routing Protocols
Management & CLI
Software H
ardware
Software Team Develop s/w in Linux on PC in lab
Hardware Team Develop h/w in Verilog on NetFPGA board in lab
Exception Processing
15
software hardware
Switching Forwarding Table
Routing Table
Routing Protocols
Management & CLI
Exception Processing
Interoperability Build basic router Routing Protocol (PWOSPF)
Integrate with H/W
Emulated h/w in VNS
Routing Table
Routing Protocols
Management & CLI
Exception Processing
Emulated h/w in VNS
Routing Table
Routing Protocols
Management & CLI
Exception Processing
Emulated h/w in VNS
Routing Table
Routing Protocols
Management & CLI
Exception Processing
Command Line Interface
1 2 3 4 5 6 Wow us!
• Innovate and add! • Presentations • Judges
4-port non-learning switch
4-port learning switch
IPv4 router forwarding path
Integrate with S/W Interoperability Wow us!
Switching Forwarding Table
Learning Environment Modular design
Testing
21/Oct 28/Nov 5/Nov 11/Nov 18/Nov 10/Jan
21/Oct 28/Nov 5/Nov 18/Nov 11/Nov 10/Jan
FPGA
Memory
1GE
1GE
1GE
1GE
What is the NetFPGA?
PCI
CPU Memory
NetFPGA Board
PC with NetFPGA
Networking Software running on a standard PC
A hardware accelerator built with Field Programmable Gate Array driving Gigabit network links
FPGA
Memory
1GE
1GE
1GE
1GE
Running the Router Kit
User-space development, 4x1GE line-rate forwarding
PCI
CPU Memory
PW-OSPF user kernel
Routing Table
IPv4 Router
1GE
1GE
1GE
1GE
Fwding Table
Packet Buffer
Exception Processing
Management (including CLI)
“Mirror”
18
Next steps
Explore the web page (http://www.cl.cam.ac.uk/teaching/0910/P33/)
Decide if you still want to take the class Build a team of 3 people: 2 s/w and 1 h/w Come to SW02 on Tuesday 10am…
We will meet with you every week during class time.
4
Using the nf-test machines Each group is allocated an nf-test machine
{nf-test1,nf-test2,nf-test3,...}.nf.cl.cam.ac.uk
These machines are headless (no KVM) and located in SW02 (alcove)
Login via ssh; set your own password and go We suggest running “vncserver” and then using “vncviewer”; as a
useful way to leave jobs/desktop running and reconnect if you need to move location.
SW02 is a busy classroom – please respect others If you need to gain physical access to an nf-test machine Do it quietly! You maybe refused entry in
the afternoons – don’t take it personally.
nf-test machine rules
Abuse the machines – that’s the end of this module for you – zero tolerance policy.
only connect eth0 to the cisco (access) switch
these machines run a firewall for a reason if it doesn’t work for you, lets fix the rules
Play nicely with each other; your interoperability marks depend on it.
nf-test machine information
Warning: Files stored on nf-test machines are not backed up - and may be lost at any time.
You must make sure that you regularly copy your files into your REAL (computer laboratory) home directory as a back-up
Machines fail – they usually fail 24 hours before the big deadline!
Building an Internet Router (P33) Michaelmas 2009 22
Tree Structure
NF2 bin
lib
projects
bitfiles
(scripts for running simulations and setting up the environment)
(contains the bitfiles for all projects that have been synthesized)
(stable common modules and common parts needed for simulation/synthesis/design)
(user projects, including reference designs)
Building an Internet Router (P33) Michaelmas 2009 23
Tree Structure (2)
lib
C java Makefiles Perl5 python scripts verilog
(common software and code for reference designs)
(contains software for the graphical user interface)
(makefiles for simulation and synthesis)
(common libraries to interact with reference designs and aid in simulation)
(common libraries to aid in regression tests)
(scripts for common functions)
(modules and files that can be reused for design)
Building an Internet Router (P33) Michaelmas 2009 24
Tree Structure (3)
projects
doc include regress src sw synth verif
(project specific documentation) (contains file to include verilog modules from lib, and creates project specific register defines files) (regression tests used to test generated bitfiles)
(contains non-library verilog code used for synthesis and simulation) (all software parts of the project)
(contains user .xco files to generate cores and Makefile to implement the design)
(simulation tests)
5
Building an Internet Router (P33) Michaelmas 2009 25
State Diagram to Verilog (1)
MAC RxQ
CPU RxQ
MAC RxQ
CPU RxQ
MAC RxQ
CPU RxQ
MAC RxQ
CPU RxQ
Input Arbiter
Output Port Lookup
MAC TxQ
CPU TxQ
MAC TxQ
CPU TxQ
MAC TxQ
CPU TxQ
MAC TxQ
CPU TxQ
Output Queues
Building an Internet Router (P33) Michaelmas 2009 26
Inter-module Communication
data
ctrl wr rdy
Building an Internet Router (P33) Michaelmas 2009 27
State Diagram to Verilog (2)
• Projects: – Each design represented by a project Format: NF2/projects/<proj_name>
e.g., NF2/projects/bir_starter
– Consists of:
– What is Missing? • refer to the web page
“Implement four port hard-wired switch” is the start.
• Verilog source • Simulation tests • Hardware tests
• Libraries • Optional software
Building an Internet Router (P33) Michaelmas 2009 28
State Diagram to Verilog (3)
• Projects (cont): – Pull in modules from NF2/lib/verilog
• Generic modules that are re-used in multiple projects
• Specify shared modules in project’s include/lib_modules.txt
– Local src modules override shared modules
– bir_starter: • Local in_arb_regs.v input_arbiter.v
output_port_lookup.v • Everything else: shared modules
Building an Internet Router (P33) Michaelmas 2009 29
Testing: Simulation (1) • Simulation allows testing without requiring
lengthy synthesis process
• NetFPGA provides Perl simulation infrastructure to: – Send/receive packets
• Physical ports and CPU – Read/write registers – Verify results
• Simulations run in ModelSim/VCS
Building an Internet Router (P33) Michaelmas 2009 30
Testing: Simulation (2)
• Simulations located in project/verif • Multiple simulations per project
– Test different features • Example:
– bir_starter/verif/test_fwd_sourcePort0 • Test forwarding of packets from port 0 to port 1
6
Building an Internet Router (P33) Michaelmas 2009 31
Testing: Simulation (3)
• Example functions: – nf_PCI_read32(delay, batch, addr, expect) – nf_PCI_write32(delay, batch, addr, value) – nf_packet_in(port, length, delay, batch, pkt) – nf_expected_packet(port, length, pkt) – nf_dma_data_in(length, delay, port, pkt) – nf_expected_dma_data(port, length, pkt) – make_IP_pkt(length, da, sa, ttl, dst_ip, src_ip)
Building an Internet Router (P33) Michaelmas 2009 32
Running Simulations • Use command nf2_run_test.pl
– Optional parameters • --major <major_name> • --minor <minor_name> • --gui (starts the default viewing environment)
test_fwd_sourcePort0
• Problems? check the environment variables reference your project
• NF2_DESIGN_DIR=/root/NF2/projects/<project> • PERL5LIB=/root/NF2/projects/<project>/lib/Perl5: /root/NF2/lib/Perl5:
major minor
Building an Internet Router (P33) Michaelmas 2009 33
Running Simulations • When running modelsim interactively:
– Click "no" when simulator prompts to finish
– Changes to code can be recompiled without quitting ModelSim:
• bash# cd /tmp/$(whoami)/verif/<projname>; make model_sim • VSIM 5> restart -f; run -a
– Problems? do ensure $NF2_DESIGN_DIR is correct
Building an Internet Router (P33) Michaelmas 2009 34
Synthesis
• To synthesize your project – Run make in the synth directory (/root/NF2/projects/bir_starter/synth)
Building an Internet Router (P33) Michaelmas 2009 35
Regression Tests
• Test hardware module
• Perl Infrastructure provided includes: – Read/Write registers – Read/Write tables – Send Packets – Check Counters
Building an Internet Router (P33) Michaelmas 2009 36
Example Regression Tests
• For a Router… – Send Packets from CPU – Longest Prefix Matching – Longest Prefix Matching Misses – Packets dropped when queues overflow – Receiving Packets with IP TTL <= 1 – Receiving Packets with IP options or non IPv4 – Packet Forwarding – Dropping packets with bad IP Checksum
7
Building an Internet Router (P33) Michaelmas 2009 37
Perl Libraries • Specify the Interfaces
– eth1, eth2, nf2c0 … nf2c3
• Start packet capture on Interfaces
• Create Packets – MAC header – IP header – PDU
• Read/Write Registers
• Read/Write Reference Router tables – Longest Prefix Match – ARP – Destination IP Filter
Building an Internet Router (P33) Michaelmas 2009 38
Regression Test Examples
• Reference Router – Packet Forwarding
• regress/test_packet_forwarding – Longest Prefix Match
• regress/test_lpm – Send and Receive
• regress/test_send_rec
Building an Internet Router (P33) Michaelmas 2009 39
Creating a Regression Test • Useful functions:
– nftest_regwrite(interface, addr, value) – nftest_regread(interface, addr) – nftest_send(interface, frame) – nftest_expect(interface, frame)
– $pkt = NF2::IP_pkt->new(len => $length, DA => $DA, SA => $SA, ttl => $TTL, dst_ip => $dst_ip, src_ip => $src_ip);
Building an Internet Router (P33) Michaelmas 2009 40
Creating a Regression Test (2)
• Your task:
1. Template files /root/NF2/projects/bir_starter/regress/test_fwd_sourcePort0/run.pl
2. Implement your Perl verif tests
Building an Internet Router (P33) Michaelmas 2009 41
Running Regression Test
• Run the command nf2_regress_test.pl --project bir_starter