some more logistics - university of cambridge

7
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. 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 R1 R4 D E F 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 bytes 6 What is Routing? A B C R1 R2 R3 R4 D E F R5

Upload: others

Post on 20-Mar-2022

1 views

Category:

Documents


0 download

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