26
NetFPGA Hardware Architecture Jeffrey Shafer Some slides adapted from Stanford NetFPGA tutorials

NetFPGA Hardware Architecture - Latest Seminar Topics for ... · NetFPGA Hardware Architecture ... Pkt length, Input port = 0, Output port = 4 0xff 1- Check input ... Network Systems

  • Upload
    buinhu

  • View
    250

  • Download
    1

Embed Size (px)

Citation preview

Page 1: NetFPGA Hardware Architecture - Latest Seminar Topics for ... · NetFPGA Hardware Architecture ... Pkt length, Input port = 0, Output port = 4 0xff 1- Check input ... Network Systems

NetFPGA Hardware Architecture

Jeffrey Shafer

Some slides adapted from Stanford NetFPGA tutorials

Page 2: NetFPGA Hardware Architecture - Latest Seminar Topics for ... · NetFPGA Hardware Architecture ... Pkt length, Input port = 0, Output port = 4 0xff 1- Check input ... Network Systems

2Network Systems Architecture

NetFPGA

http://netfpga.org

Page 3: NetFPGA Hardware Architecture - Latest Seminar Topics for ... · NetFPGA Hardware Architecture ... Pkt length, Input port = 0, Output port = 4 0xff 1- Check input ... Network Systems

3Network Systems Architecture

NetFPGA Components� Virtex-II Pro 50 FPGA

� 53,136 logic cells � 4,176 Kbit block RAM

� 2 x PowerPC cores (not used)

� Gigabit Ethernet ports - 4

� Memory� SRAM – 4.5MB (2 parallel banks - 18Mbit / 2.25 MByte)� DDR2 DRAM – 64 MBytes

� PCI Bus Interface� 32 bits / 33 MHz / 1066 Mbit/s bandwidth� Spartan FPGA used as PCI controller

� Multi-gigabit I/O (2 SATA ports)� Allows multiple NetFPGAs within a PC to be chained together

� More Details?� Tech specs: http://netfpga.org/specs.php� Schematic: http://netfpga.org/NetFPGA_PCB_r2.pdf

How does the NetFPGA board become a router?

Page 4: NetFPGA Hardware Architecture - Latest Seminar Topics for ... · NetFPGA Hardware Architecture ... Pkt length, Input port = 0, Output port = 4 0xff 1- Check input ... Network Systems

4Network Systems Architecture

Reference Designs

� NetFPGA design team has provided� Reference NIC – 4 port Ethernet NIC

� Reference Router – 4 port IP router

� What factors influenced these designs?� Simple architecture (for use in education)

� Fits on the FPGA and meets timing constraints

� These designs do not necessarily model a commercial NIC or router� We’ll talk about real devices later this semester…

� We’ll give you the NIC design, and you will turn it into a switch and IP router

Page 5: NetFPGA Hardware Architecture - Latest Seminar Topics for ... · NetFPGA Hardware Architecture ... Pkt length, Input port = 0, Output port = 4 0xff 1- Check input ... Network Systems

5Network Systems Architecture

Router Tasks (Per Packet)� Receive packet on incoming port

� Read destination

� Where is packet going?� Lookup destination in forwarding table

� Determine next hop address and outgoing port� If not found, use ICMP to handle error

� Lookup link-layer address of next hop (e.g. Ethernet MAC) � If not found, use ARP to resolve address

� Manipulate IP header� Decrement TTL and update header checksum

� Manipulate link-layer header� Modify link-layer source and destination address, update CRC

� Buffer packet in the output queue� Transmit packet onto outgoing link

This is only a partial list

of router tasks

(Real routers, and your project, do more!)

Page 6: NetFPGA Hardware Architecture - Latest Seminar Topics for ... · NetFPGA Hardware Architecture ... Pkt length, Input port = 0, Output port = 4 0xff 1- Check input ... Network Systems

6Network Systems Architecture

Generic Datapath Architecture

Lookup DstIP Address

UpdateHeader

Header Processing

Data Hdr Data Hdr

Forwarding

Table

Forwarding

Table

IP Address Next Hop

Queue

Packet

Buffer

Memory

Buffer

Memory

Page 7: NetFPGA Hardware Architecture - Latest Seminar Topics for ... · NetFPGA Hardware Architecture ... Pkt length, Input port = 0, Output port = 4 0xff 1- Check input ... Network Systems

7Network Systems Architecture

NetFPGA IP Router

SwitchingForwarding

Table

Routing

Table

Routing

Protocols

Management & CLI

Softw

are

Hard

ware

Control PlaneLinux user-level processes

DatapathFPGA on PCI board

Exception

Processing

Page 8: NetFPGA Hardware Architecture - Latest Seminar Topics for ... · NetFPGA Hardware Architecture ... Pkt length, Input port = 0, Output port = 4 0xff 1- Check input ... Network Systems

8Network Systems Architecture

NetFPGA Block DiagramNetFPGA PCI Board

1G

E

MA

C1

GE

M

AC

1G

E

MA

C1

GE

M

AC

Custom Router Pipeline

Composed of:

• Verilog source code

• Xilinx Cores

Custom Router Pipeline

Composed of:

• Verilog source code

• Xilinx Cores

18

Mb

S

RA

M

1G

E

PH

Y1

GE

P

HY

1G

E

PH

Y1

GE

P

HY

Virtex-II Pro 50 FPGA

64

MB

DD

R2

SD

RA

M

Linux OS - NetFPGA Kernel driverHostComputer

User-defined software networking applications

Fou

r Gig

abit E

the

rne

t Inte

rfaces

18

Mb

S

RA

M

FIFO packet buffers

3 G

bS

AT

A

Board to Board

Interconnect

Spartan FPGAPCI Interface

Spartan FPGAPCI Interface

Page 9: NetFPGA Hardware Architecture - Latest Seminar Topics for ... · NetFPGA Hardware Architecture ... Pkt length, Input port = 0, Output port = 4 0xff 1- Check input ... Network Systems

9Network Systems Architecture

Router Pipeline

� Five stages

� Input

� Input Arbitration

� Routing Decision and

packet modification

� Output Queuing

� Output

� Packet-based module

interface

� Pluggable design

MACRxQ

MACRxQ

CPURxQ

CPURxQ

MACRxQ

MACRxQ

CPURxQ

CPURxQ

MACRxQ

MACRxQ

CPURxQ

CPURxQ

MACRxQ

MACRxQ

CPURxQ

CPURxQ

Input ArbiterInput Arbiter

Output Port LookupOutput Port Lookup

MACTxQ

MACTxQ

CPUTxQ

CPUTxQ

MACTxQ

MACTxQ

CPUTxQ

CPUTxQ

MACTxQ

MACTxQ

CPUTxQ

CPUTxQ

MACTxQ

MACTxQ

CPUTxQ

CPUTxQ

Output QueuesOutput Queues

Page 10: NetFPGA Hardware Architecture - Latest Seminar Topics for ... · NetFPGA Hardware Architecture ... Pkt length, Input port = 0, Output port = 4 0xff 1- Check input ... Network Systems

10Network Systems Architecture

Data (64 bits)

Inter-module Communication

Ctrl (8 bits)

wr

rdy

Page 11: NetFPGA Hardware Architecture - Latest Seminar Topics for ... · NetFPGA Hardware Architecture ... Pkt length, Input port = 0, Output port = 4 0xff 1- Check input ... Network Systems

11Network Systems Architecture

Inter-module Communication

� Headers are appended to packet

Start of Ethernet Header

Start of IP Header

0

0

0

…0

Last Module Hdry

……

Module HdrxRouter control data such as packet length, input

port, output port, …

Data Word

(64 bits)

Ctrl Word

(8 bits)

Packet being routed

(including its headers)Ctrl x00 = PacketCtrl x10 = End of packet

…0

Last word of packet0x10

Page 12: NetFPGA Hardware Architecture - Latest Seminar Topics for ... · NetFPGA Hardware Architecture ... Pkt length, Input port = 0, Output port = 4 0xff 1- Check input ... Network Systems

12Network Systems Architecture

Exploring the Pipeline…

MACRxQ

MACRxQ

CPURxQ

CPURxQ

MACRxQ

MACRxQ

CPURxQ

CPURxQ

MACRxQ

MACRxQ

CPURxQ

CPURxQ

MACRxQ

MACRxQ

CPURxQ

CPURxQ

Input ArbiterInput Arbiter

Output Port LookupOutput Port Lookup

MACTxQ

MACTxQ

CPUTxQ

CPUTxQ

MACTxQ

MACTxQ

CPUTxQ

CPUTxQ

MACTxQ

MACTxQ

CPUTxQ

CPUTxQ

MACTxQ

MACTxQ

CPUTxQ

CPUTxQ

Output QueuesOutput Queues

Page 13: NetFPGA Hardware Architecture - Latest Seminar Topics for ... · NetFPGA Hardware Architecture ... Pkt length, Input port = 0, Output port = 4 0xff 1- Check input ... Network Systems

13Network Systems Architecture

MAC Rx Queue (port 0)

IP Hdr:

IP Dst: 192.168.2.3, TTL: 64, Csum:0x3ab4

Eth Hdr:Dst MAC = MAC(0),

Ethertype = IP

Data

Page 14: NetFPGA Hardware Architecture - Latest Seminar Topics for ... · NetFPGA Hardware Architecture ... Pkt length, Input port = 0, Output port = 4 0xff 1- Check input ... Network Systems

14Network Systems Architecture

MAC Rx Queue (port 0)

IP Hdr:

IP Dst: 192.168.2.3, TTL: 64, Csum:0x3ab4

Eth Hdr:Dst MAC = MAC(0),

Ethertype = IP

Data

0

0

0

Pkt length,

input port = 00xff

Page 15: NetFPGA Hardware Architecture - Latest Seminar Topics for ... · NetFPGA Hardware Architecture ... Pkt length, Input port = 0, Output port = 4 0xff 1- Check input ... Network Systems

15Network Systems Architecture

Input Arbiter

Pkt

Pkt

Pkt

Page 16: NetFPGA Hardware Architecture - Latest Seminar Topics for ... · NetFPGA Hardware Architecture ... Pkt length, Input port = 0, Output port = 4 0xff 1- Check input ... Network Systems

16Network Systems Architecture

Output Port Lookup

Page 17: NetFPGA Hardware Architecture - Latest Seminar Topics for ... · NetFPGA Hardware Architecture ... Pkt length, Input port = 0, Output port = 4 0xff 1- Check input ... Network Systems

17Network Systems Architecture

IP Hdr:IP Dst: 192.168.2.3,

TTL: 64, Csum:0x3ab4

IP Hdr:IP Dst: 192.168.2.3,

TTL: 63, Csum:0x3ac2

Output Port Lookup

EthHdr: Dst MAC = 0Src MAC = x,Ethertype = IP

Data

0

0

0

Pkt length,

input port = 00xff

Pkt length, Input port = 0, Output port = 4

0xff

1- Check input port consistent with Dst MAC

2- Check TTL, checksum

3- Lookup next hop IP & output port (LPM)

4- Lookup next hop MAC address (ARP)

5- Update header with

output port(s)

6- Modify MAC Dst and Srcaddresses

7-Decrement TTL and update

checksum

EthHdr: Dst MAC = nextHop

Src MAC = port 4,Ethertype = IP

Page 18: NetFPGA Hardware Architecture - Latest Seminar Topics for ... · NetFPGA Hardware Architecture ... Pkt length, Input port = 0, Output port = 4 0xff 1- Check input ... Network Systems

18Network Systems Architecture

Output Queues

OQ0

OQ4

OQ7

Page 19: NetFPGA Hardware Architecture - Latest Seminar Topics for ... · NetFPGA Hardware Architecture ... Pkt length, Input port = 0, Output port = 4 0xff 1- Check input ... Network Systems

19Network Systems Architecture

MAC Tx Queue

Page 20: NetFPGA Hardware Architecture - Latest Seminar Topics for ... · NetFPGA Hardware Architecture ... Pkt length, Input port = 0, Output port = 4 0xff 1- Check input ... Network Systems

20Network Systems Architecture

MAC Tx Queue

IP Hdr:

IP Dst: 192.168.2.3, TTL: 64, Csum:0x3ab4

IP Hdr:

IP Dst: 192.168.2.3, TTL: 63, Csum:0x3ac2

EthHdr: Dst MAC = nextHopSrc MAC = port 4,

Ethertype = IP

Data

0

0

0

Pkt length,input port = 0

0xff

output port = 40x04

Page 21: NetFPGA Hardware Architecture - Latest Seminar Topics for ... · NetFPGA Hardware Architecture ... Pkt length, Input port = 0, Output port = 4 0xff 1- Check input ... Network Systems

21Network Systems Architecture

Any Questions About Pipeline?

MACRxQ

MACRxQ

CPURxQ

CPURxQ

MACRxQ

MACRxQ

CPURxQ

CPURxQ

MACRxQ

MACRxQ

CPURxQ

CPURxQ

MACRxQ

MACRxQ

CPURxQ

CPURxQ

Input ArbiterInput Arbiter

Output Port LookupOutput Port Lookup

MACTxQ

MACTxQ

CPUTxQ

CPUTxQ

MACTxQ

MACTxQ

CPUTxQ

CPUTxQ

MACTxQ

MACTxQ

CPUTxQ

CPUTxQ

MACTxQ

MACTxQ

CPUTxQ

CPUTxQ

Output QueuesOutput Queues

Page 22: NetFPGA Hardware Architecture - Latest Seminar Topics for ... · NetFPGA Hardware Architecture ... Pkt length, Input port = 0, Output port = 4 0xff 1- Check input ... Network Systems

22Network Systems Architecture

Course Projects

� You have to build the Output Port Lookup module shown in the preceding slides�The initial version provided is a simple NIC

� Directly connects input port A to output port A

� No intelligence!

� You will build Output Port Lookup modules to accomplish�Ethernet Hub

�Learning Ethernet Switch

� IP Router

Page 23: NetFPGA Hardware Architecture - Latest Seminar Topics for ... · NetFPGA Hardware Architecture ... Pkt length, Input port = 0, Output port = 4 0xff 1- Check input ... Network Systems

23Network Systems Architecture

What is Each Group Provided?

User Space

Linux Kernel

PCI

Monitoring SoftwareG

E

GE

GE

GE

NetFPGA RouterHardware

VI

VI

VI

VI

Control Software

Page 24: NetFPGA Hardware Architecture - Latest Seminar Topics for ... · NetFPGA Hardware Architecture ... Pkt length, Input port = 0, Output port = 4 0xff 1- Check input ... Network Systems

24Network Systems Architecture

Per-Group Network Topology

Page 25: NetFPGA Hardware Architecture - Latest Seminar Topics for ... · NetFPGA Hardware Architecture ... Pkt length, Input port = 0, Output port = 4 0xff 1- Check input ... Network Systems

25Network Systems Architecture

Next Three Fridays (16th, 23rd, 30th)

� Meet in Lab (Abercrombie A123)

� Goals

�Learn about NetFPGA library and basic reference NIC design

�Write Verilog

� Turn the NIC into an Ethernet Hub

�Build hardware bitfile

�Simulate design

�Test design on real hardware

Page 26: NetFPGA Hardware Architecture - Latest Seminar Topics for ... · NetFPGA Hardware Architecture ... Pkt length, Input port = 0, Output port = 4 0xff 1- Check input ... Network Systems

26Network Systems Architecture

Assignment

� Before Friday’s tutorial:

�Go to Tutorials page at http://comp519.cs.rice.edu/

�Follow the link to “Hardware Initial Setup”

(under the Hardware Tutorial section)

�Complete all tasks (5 minutes)

� Setting environment variables for tools