Skip to content
Adam edited this page Jan 15, 2013 · 3 revisions

Reference Router

Warning: This page has not been updated recently and is out of date. If you would like to help our documentation efforts please update this page.

The NetFPGA Reference Router (RR):

  • forwards Internet Protocol version 4 (IPv4) packets on:
    • four Gigabit Ethernet Ports, and
    • one PCI host interface
  • Operates as documented in the Guide: (Web) or (Wiki).
  • Supports as a set of features as documented in the Regression tests: (Web) or (Wiki)
  • utilizes Field Programmable Gate Array (FPGA) hardware on the the
NetFPGA hardware platform to forward packets at full wire-speed.
  • has FPGA hardware that can be obtained from a 3rd party source and integrates into a standard Host PC that can be purchased as a system or assembled from commodity, off the shelf parts.
  • has the major components shown in the diagram below
  • supports the features tested by the Reference Router Regression Tests and includes a
master regression test suite that exercises each of the supported features in the regression test.
  • comes with Guide that describe how to install and use the NetFPGA and reference router
  • has Verilog Source code that can be re-synthesized using Xilinx ISE 9.1. Developer Tools
Specifically, the NetFPGA IPv4 Reference Router has:
  • includes a Linux device driver that compiles for Linux CentOS 4.4 or 4.5.
    • compiles without errors (test 1.1)
    • installs using a make install script (test 1.2)
    • provides Linux with four Ethernet interfaces: nf2c[0..3] (test 1.3)
    • loads into the kernel using the standard modprobe command (test 1.4)
    • advertises a MTU to software of 1500 bytes (1.5)
    • allows IP addresses to be assigned to each of the four driver interfaces: nf2c0..nf2c3 (test 1.6)
  • has a Hardware Component of the IPv4 Reference Router (HCORR) that
    • performs the operations described in the diagram below, as verified by the tests identified labeled in red corresponding to each test in the regression suite
    • As indicated by the numbers shown in the diagram, the hardware counts the
      • Number of packets/bytes sent/received from/on each Ethernet port
      • Number of packets sent from the CPU
      • Number of packets dropped because the MAC address didn't match the port they were received on
      • Number of packets sent to the CPU because their Ethernet type was not IP
      • Number of packets dropped because of a bad IP header checksum
      • Number of packets sent to the CPU because the packet was not IPv4 or had IP options
      • Number of packets sent to the CPU because of a TTL <= 1
      • Number of packets sent to the CPU because of a Routing table miss
      • Number of packets sent to the CPU because of an ARP table miss
      • Number of IP packets forwarded
      • Number of packets dropped when the output queues overflow
    • provides additional features that
      • allows the user to set the maximum number of packets in the output queues (test 2.2.2)
      • allows the user to send packets with user-specified IP destination addresses to the CPU (test 2.2.3)
  • has a Software Component of the NetFPGA IPv4 Reference Router (SCONE) that has the features described in Section 3 of the regression tests and is shown below in the diagram:
    • has core functionality to:
      • compile for Linux CentOS 4.4
      • configure MAC addresses for router ports
      • configure IP addresses for router ports
      • implement the ARP protocol
      • load and maintain forwarding table to hardware
    • includes PW-OSPF
      • maintains link state using PW-OSPF
    • includes a Command Line Interface (CLI) that
      • displays the route tables (test 3.2.1 )
      • add entries to the route table (test 3.2.2 )
    • includes a Packet Rx/Tx function to
      • Process ARP messages in software (test 3.3.1)
  • has a Graphical User interface (GUI) in Java that is tested in Section 4 of the automated master regression tests
    • enable configuration of:
      • routing table entries
      • IP addresses of the router ports
      • MAC addresses of the router ports
      • The ARP table entries
    • display the
      • routing and ARP tables in real-time
      • counters
      • throughput of a port
      • packet and byte occupancy of the output queues
    • allow the user to change the maximum number of packets stored in the queue
    • allows the user to set the refresh rate for updating information from the hardware
  • The Beta 1.0 IPv4 Reference Router (RR) does not
  • transport jumbo frames
Ethernet packets with a length > 2,000 bytes are not supported
  • support Virtual LANs (VLAN)
VLANs were not tested in the Beta 1.0 release
  • support IPV6
    • IPV6 was not tested for the Beta 1.0 release
  • connect to Ethernets links running at 10 Mbps or 100 Mbps
    • (it only operates at a link speed of 1 Gbps)
  • Final Notes
  • Registered Beta users can download the NetFPGA package
    • You are welcome to review the code and we welcome your feedback. We only ask that you not redistribute the code or post it on a public site because several universities are planning to teach router design courses and this code would provide students with the solutions to their assignments.
  • Please report any bugs or issues to the Router Bugzilla table
(Register with Bugzilla to view and submit bugs)
  • Please do not redistribute the source code for the router or post it on a public site. Several universities plan to teach courses to build routers with the NetFPGA, and access to the source code by students who may take the class would give away the solutions.
NetFPGA Developers
Clone this wiki locally