Reference Router (RR) Alpha Release 1.0

DO NOT MODIFY ALPHA RELEASE IS FINISHED

IPv4 Reference Router Regression Tests

This page describes how each feature of the NetFPGA IPv4 Reference Router was tested. This document identifies the test number, notes the test developer that wrote each test, describes the test in detail, identifies the location in the automated regression suite that calls the test, lists any known bugs with the test, and provides the date when the task was completed.

Show Contents...Hide Contents...

Contents

Test 1: Linux Driver

All of the following tests should be conducted under CentOS 4.4. All tests should be tested on kernel versions XXX with both non-SMP and SMP versions.

Test 1.1: Driver compiles

Owner
Glen
Description
Driver compiles without any errors
Location
projects/driver/regress/driver_compile
Regression suite
Yes
Known bugs/issues
None $ Status
Target Release
1.0
Due date
Done

Test 1.2: Driver installs in the correct location

Owner
Glen
Description
make install installs the driver in the correct location
nf2.ko should be installed in /lib/modules/`uname -r`/kernel/drivers/nf2.ko
Location
projects/driver/regress/driver_install
Regression suite
Yes
Known bugs/issues
None
Due date
Done

Test 1.3: nf2c[0-3] interfaces present in system with one NetFPGA card

Owner
Glen
Description
Booting system with single NetFPGA board results in nf2c[0-3]
* Test using ls /sys/class/net and searching for nf2c*
* Test using ifconfig -a and searching for nf2c*
Prerequisites

* Driver should be compiled and installed
* Machine should have one NetFPGA cards installed
Location
projects/driver/regress/verify_4_interfaces
Regression suite
Yes
Release
1.0
Known bugs/issues
Due date
Done

Test 1.4: Ability to load driver with modprobe

Owner
Glen
Description
The driver should be loadable with modprobe .
Note: Driver loading on boot uses modprobe. A success for test " nf2c[0-3] interfaces present in system with one NetFPGA card " implies success for this test.
Invocation
None (Test covered by "nf2c[0-3] interfaces present in system with one NetFPGA card")
Output
None
Regression suite
Yes
Known bugs/issues
Due date
Done

Test 1.5: Driver advertises MTU of 1500 bytes

Owner
Glen
Description
The driver advertises a maximum MTU of 1500 bytes to kernel. (This MTU excludes the Ethernet header and the Ethernet FCS.)
On a system with at least 1 NetFPGA card and the driver installed, run:
 ifconfig nf2c0

One of the lines should display the MTU. The MTU should state 1500 bytes. Example:
: UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
Location
projects/driver/regress/verify_mtu
Regression suite
yes
Known bugs/issues
Due date
Done

Test 1.6: IP address can be assigned to nf2cX interfaces

Owner
Adam
Description
Perl script that clears all IP addresses from nf2c0-nf2c4. Sets the IP address for each interface and then checks the ifconfig to verify that the IP was set.
Location
 reference_router/regress/test_interface
Output
 Testing IP assignment to nf2c0...Success
 Testing IP assignment to nf2c1...Success
 Testing IP assignment to nf2c2...Success
 Testing IP assignment to nf2c3...Success
Regression suite
Yes
Target
Alpha
Known bugs/issues
Due date
Complete

Test 2: Reference Router hardware

Test 2.1.1: Sending packets from CPU

Owner
Jad
Description
Send 10000 packets from the CPU on each port and check they are received correctly on an external interface. Check the counters.
# Connect nf2c0 to eth1 and nf2c1 to eth2
# put the PHY for ports 2 and 3 in internal loopback mode
# Send 10000 packets of random lengths out of the nf2cX interfaces
# Check that all packets were received at eth1/2 for packets sent out of nf2c0/1
# Check that all packets were received at nf2c2/3 for packets sent out of nf2c2/3 (due to loopback and LPM miss)
# Check that the Tx MAC counters show 10000 packets sent on each port
# Check that the Tx MAC counters show the correct number of bytes sent on each port
# Check that output port lookup counters show 40000 packets sent from the CPU $ Prerequisites:
* Run as root
Location
projects/reference_router/regress/test_router_sendcpu
Output
 Test PASSES
Regression suite
Yes
Known bugs/issues
Due date
Complete

Test 2.1.2: Dropping Packets with Wrong Destination MAC address

Owner
Surender
Description
Send 300 packets to each interface from an external card with MAC addresses that do not match the ports they are received on. Check the counters.
# Initialize netfpga hardware
# Send 300 packet with wrong DA with random size from external ethernet port to router port
# Get the drop counter for the router port.
# Check that drop counter is 300.
# Repeat test for other router port. $ Prerequisites: $ Location:
projects/reference_router/regress/test_wrong_dest_mac
Output
  SUCCESS!
Regression suite
Yes
Known bugs/issues
Due date
Done

Test 2.1.3: Receiving Non-IP Packets

Owner
Surender
Description
Send 300 packets to each interface from an external card with an Ethertype that is not IP. Packets should be sent to the CPU. Check the counters.
# Initialize netfpga hardware
# Send 300 packet with EtherType= 0x802 with random size from external ethernet port to router port
# Get the drop counter for the router port.
# Check that packet are forwarded to CPU
# Check that drop counter is 300.
# Repeat test for other router port.
Prerequisites
$ Location:
projects/reference_router/regress/test_nonip_packet
Output
  SUCCESS!
Regression suite
Yes
Known bugs/issues
$ Due date:
Done

Test 2.1.4: Receiving packets with IP options or non IPv4

Owner
Surender
Description
Send 300 packets to each interface from an external card with either IP header options or version other than 4. Packets should be sent to the CPU. Check the counters.
# Initialize netfpga hardware
# Send 300 packet with IP_Version = 0x5 with random size from external ethernet port to router port
# Check that packet are forwarded to CPU
# Get the drop counter for the router port.
# Check that drop counter is 300.
# Repeat test for other router port. $ Prerequisites: $ Location:
projects/reference_router/regress/test_nonipv4_packet $ Output:
  SUCCESS! 
Regression suite
Yes
Known bugs/issues
Due date
Done

Test 2.1.5: Receiving packets with IP TTL <= 1

Owner
Surender
Description
Send 300 packets to each interface from an external card with IP time-to-live=1 or 0. Packets should be sent to the CPU. Check the counters.
# Initialize netfpga hardware
# Send 300 packet with TTL = 0x0 with random size from external ethernet port to router port
# Check that packet are forwarded to CPU
# Get the drop counter for the router port.
# Check that drop counter is 300.
# Repeat test for other router port. $ Prerequisites: $ Location:
projects/reference_router/regress/test_invalidttl_packet
Output
  SUCCESS!
Regression suite
Yes
Known bugs/issues
Due date
Done

Test 2.1.6: LPM Misses

Owner
Adam
Description
Send 300 packets to each interface from an external card to an IP address that does not match in the routing table. Packets should be sent to the CPU. Check LPM miss counter.
Prerequisites
Run as root, Reference Router bitfile is loaded
Location
projects/reference_router/regress/test_lpm_misses
Output
 SUCCESS!
Regression suite
Yes
Known bugs/issues
Ignore 'Scalars leaked: 1'
Due date
Complete

Test 2.1.7: ARP Misses

Owner
Adam
Description
Send 300 packets to each interface from an external card such that the routing table matches, but the ARP table misses. Packets should be sent to the CPU. Check ARP miss counter.
Prerequisites
Run as root, Reference Router bitfile is loaded
Location
/projects/reference_router/regress/test_arp_misses
Output
 SUCCESS!
Regression suite
Yes
Known bugs/issues
Ignore 'Scalars leaked: 1'
Due date
Complete

Test 2.1.8: Dropping packets with bad IP Checksum

Owner
Surender
Description
Send 300 IP packets to each interface from an external card with a bad IP header checksum. Check that the packets are all dropped. Check the counters.
# Initialize netfpga hardware
# Send 300 packet with bad ip checksum with random size from external ethernet port to router port
# Get the drop counter for the router port.
# Check that drop counter is 300.
# Repeat test for other router port. $ Prerequisites: $ Location:
projects/reference_router/regress/test_badipchecksum_packet
Output
  SUCCESS!
Regression suite
Yes
Known bugs/issues
Due date
Done

Test 2.1.9: IP Destination Address Filter Hit

Owner
Surender
Description
Send 300 packets to each interface from an external card destined to IP addresses in the destination IP filter table (such as the router's IP addresses). Packets should be sent to the CPU. Check the counters. $ Prerequisites: $ Location:
projects/reference_router/regress/test_ipdest_filter_hit
Output
  SUCCESS
Regression suite
Yes
Known bugs/issues
Due date
Done

Test 2.1.10: Packet Forwarding

Owner
Adam
Description
Send 1000 packets to each eth1 with the routing table and arp table entries to route the traffic to eth2. Send 1000 packets to each eth2 with the routing table and arp table entries to route the traffic to eth1. This generates a routing table and an ARP table hit.
Prerequisites
Run as root, Reference Router bitfile loaded
Location
/projects/reference_router/regress/test_packet_fowarding
Output
 SUCCESS!
Regression suite
Yes
Known bugs/issues
Ignore 'Scalars leaked: 1'
Due date
Complete

Test 2.1.11: Longest Prefix Matching

Owner
Adam
Description
Insert two entries in the table with one entry being a subnet of the other. Send 100 packets matching the longer prefix and check that it was received on the correct interface.
Prerequisites
Run as root, Reference Router bitfile loaded
Location
/project/reference_router/regress/test_lpm
Output
 SUCCESS!
Regression suite
Yes
Known bugs/issues
Ignore 'Scalars leaked: 1'
Due date
Complete

Test 2.1.12: Longest Prefix Matching Next Hop

Owner
Adam
Description
Insert an entry in the routing table with next hop 0.0.0.0 then send 100 packets to that subnet. Check that the packets are being sent with the next hop set as the destination address.
Prerequisites
Run as root, Reference Router bitfile loaded
Location
/project/reference_router/regress/test_lpm_next_hop
Output
 SUCCESS!
Regression suite
Yes
Known bugs/issues
Ignore 'Scalars leaked: 1'
Due date
Complete

Test 2.2.1: Packets dropped when internal queues overflow (loopback)

Owner
Glen
Description
Verify that packets are dropped correctly and only at the SRAM output queues. Test using loopback functionality on PHY.
# Set PHY to loopback via MDIO
# Disable output queues
# Send in 1000 maximum sized packets (1514 bytes) equally distributed between all four ports. This should be sufficient to fill up all SRAM queues. (1,514 * 1000 = 1,514,000 bytes = 1.5 MB approx. Each queue is 512 KB).
# Read byte counters and verify:
#* Number of bytes received is correct
#* Number of bytes arriving at SRAM output queues is identical to bytes exiting Ethernet MAC queues
#* Number of bytes dropped + number of bytes stored = number of bytes sent
# Verify that packets can still be sent/received through NetFPGA interfaces
Location
reference_nic/regress/test_loopback_drop
Regression suite
yes
Known bugs/issues
Due date
10/03/07

Test 2.2.2: Output Queue Packet Limiting

Owner
Jad
Description

# Set the maximum number of packets in the output queues to 10
# Disable servicing the output queues
# Send 10 packets that should be forwarded out of each port
# Check the counters to verify that there are 10 packets in each output queue
# Send 10 more packets to each output queue
# Enable the output queues to receive the first 10 packets sent
# Check the counters to verify that 10 packets were dropped at each output queue
# Reset the output queues limits to 0xffffffff $ Prerequisites:
Location
projects/reference_router/regress/test_oq_limit
Output
 Test PASSES
Regression suite
Yes
Known bugs/issues
Due date
Complete

Test 2.2.3: IP Destination Address Filtering

Owner
Jad $ Description:
# Insert 192.168.4.1, 192.168.5.1, and 143.123.123.123 into the IP Destination Address Filter table
# Send 10 packets to each of these IP addresses on each port.
# Check that the packets are received by the CPU from each port
# Remove 192.168.4.1 from the table, and add it in the routing table and the ARP table.
# Repeat step 2, and check that the packets destined to 192.168.4.1 are forwarded. $ Prerequisites:
Location
projects/reference_router/regress/test_ipdest_filter
Output
 Test PASSES
Regression suite
Yes
Known bugs/issues
Due date
Completed

Test 3: Software Router

Test 3.0.1: Software Router Compiles

Owner
David
Description
Software Router Compiles without errors
Location
/projects/scone/regress/test_build
Output
Regression suite
Target
Known bugs/issues
Due date
Completed

Test 3.0.2: Setting the MAC addresses of the router's ports

Owner
David
Description
Ensure that the software router component sets the MAC address registers in the hardware
Location
/projects/scone/regress/test_mac_set
Output
Returns 0 else returns 1 and prints error message
Regression suite
will be called by Glen's Master suite (regression)
Target
Known bugs/issues
Due date
Completed

Test 3.0.3: Setting the IP addresses of the router's ports

Owner
David
Description
Ensure that the software router component sets the IP address registers in the hardware
Location
/projects/scone/regress/test_ip_set
Output
Regression suite
Target
Known bugs/issues
Due date
Nov 2, 2007

Test 3.0.4: Setting default routes

Owner
David
Description
Ensure that the software router component sets any default routes into the hardware. Set default routes in the rtable file, after the software component has launched ensure that the routes are pushed into the hardware route table registers
Location
/projects/scone/regress/test_rtable_set
Output
Regression suite
Target
Known bugs/issues
Due date
Completed

Test 3.1.1: Disabled Interfaces Drop Packets

Owner
David
Description
Create a route that accepts packets in eth0 (nf2c0) and forwards them out eth1 (nf2c1). Disable eth1 (nf2c1), send packets to eth0 (nf2c0) that based on the routing rules will come out eth1 (nf2c1), ensure no packets come out of eth1 (nf2c1)
Location
/projects/scone/regress/test_disabled_interfaces
Output
Regression suite
Target
Known bugs/issues
Due date
Completed

Test 3.1.2: Non ip/arp ethertype

Owner
Jianying
Description
Ensure that ethernet packets whose next protocol is not ip or arp are dropped
Location
projects/scone/regress/test_noniparp_ethtype
Output
SUCCESS
Regression suite
Yes
Target
Known bugs/issues
Due date
Completed

Test 3.1.3: Arp Reply

Owner
Jianying
Description
Sending an arp request in to the software router for one of the ip addresses of its interfaces returns a correct arp reply out the same interface the arp request was received on
Location
projects/scone/regress/test_arp_rpl
Output
SUCCESS
Regression suite
Yes
Target
Known bugs/issues
Due date
Completed

Test 3.1.4: No Arp Reply

Owner
Jianying
Description
Sending an arp request in to the software router for an ip address that is not one of its interfaces does not return an arp reply
Location
projects/scone/regress/test_arp_norpl
Output
SUCCESS
Regression suite
Yes
Target
Known bugs/issues
Due date
Completed

Test 3.1.5: Proper Arp Table Updates

Owner
Jianying
Description
Create a route from interface 1 to interface 2. Send a packet in interface 1 that is destined for an ip on the route out of interface 2, an arp request should come out interface 2, reply with an arp reply, then ensure that the arp cache table in hardware is updated.
Location
projects/scone/regress/test_arp_quepkt
Output
SUCCESS
Regression suite
Yes
Target
Known bugs/issues
Due date
Completed

Test 3.1.6: Queued packets awaiting Arp reply

Owner
Jianying
Description
Create a route from interface 1 to interface 2. Send 2 packets in interface 1 that are destined for an ip on the route out of interface 2, an arp request should come out interface 2, reply with an arp reply, then ensure that both packets are sent out of interface 2 with the correct ethernet mac destinations.
Location
projects/scone/regress/test_arp_quepkt
Output
SUCCESS
Regression suite
Yes
Target
Known bugs/issues
Due date
Completed

Test 3.1.7: Non IPv4, options, fragmentation, bad checksum

Owner
Jianying
Description
Create 4 individual packets, one that is IP but not version 4, one with IPv4 header option, one that is fragmented, one with a bad checksum, and ensure none of them is routed.
Location
projects/scone/regress/test_ip_error
Output
SUCCESS
Regression suite
Yes
Target
Known bugs/issues
Due date
Completed

Test 3.1.8: Rtable miss

Owner
Jianying
Description
Send a packet in to the software component that will not get an rtable hit and confirm that an icmp destination unreachable packet comes out
Location
projects/scone/regress/test_ip_rtblmiss
Output
SUCCESS
Regression suite
Yes
Target
Known bugs/issues
Due date
Completed

Test 3.1.9: Incoming interface is outgoing interface

Owner
Jianying
Description
Create an rtable entry for a specific IP address to interface 1. Send a packet in to interface 1 for that destination IP. The packet should be dropped because the incoming interface matches the outgoing interface. An ICMP packet of network unreachable is generated and sent out of interface 1.
Location
projects/scone/regress/test_ip_intfc
Output
SUCCESS
Regression suite
Yes
Target
Known bugs/issues
Due date
Completed

Test 3.1.10: TTL decrement check

Owner
Jianying
Description
Ensure routed packets have decremented TTL's
Location
projects/scone/regress/test_arp_quepkt
Output
SUCCESS
Regression suite
Yes
Target
Known bugs/issues
Due date
Completed

Test 3.1.11: IP checksum

Owner
Sara
Description
Ensure routed packets have correct ip checksums
Location

projects/scone/regress/test_ip_checksum
Output

SUCCESS
Regression suite
Target
Known bugs/issues
Due date
Completed

Test 3.1.12: TTL expired

Owner
Sara
Description
Ensure that a packet with ttl 1 sent to the software component received an icmp ttl expired message $ Pseudocode
Location

/projects/scone/regress/test_ttl_expired
Output

Success
Regression suite
Target
$ Test issues:
Known bugs/issues
Due date
Nov 6

Test 3.1.13: Correctly sent packets

Owner
Sara
Description
Ensure that a packet moving through the software component that gets an rtable hit and an arp table hit is correctly sent out $ Location:
/projects/scone/regress/test_send_receive
Output

SUCCESS
Regression suite
Target
Known bugs/issues
Due date
Completed

Test 3.1.14: Arp Request

Owner
Sara
Description
Ensure a packet sent in to be routed that does not have an existing ARP table entry generates a proper arp request
Location

/projects/scone/regress/test_arp_req
Output

SUCCESS
Regression suite
Target
Known bugs/issues
Due date
Nov 6

Test 3.1.15: TCP Port 23/80 connections

Owner
Sara
Description
Ensure that the software component replies to a TCP connection setup packet to any of its ips to ports 23/80 for telnet and http
Location

/projects/scone/regress/test_tcp_port
Output

SUCCESS
Regression suite
Target
Known bugs/issues
Due date
Nov 6

Test 3.1.16: UDP port unreachable

Owner
Sara
Description
Ensure any udp packets destined to the interface's ips reply with port unreachable
Location

project/scone/regress/test_udp_packet
Output

SUCCESS
Regression suite
Target
Known bugs/issues
$ Completed

Test 3.1.17: Unknown IP packet types

Owner
Sara
Description
Ensure any IP packets that are not pwospf/tcp/udp/icmp get dropped
Location

projects/scone/regress/test_unknown_ip
Output

SUCCESS
Regression suite
Target
Known bugs/issues
Due date
Nov 6

Test 3.1.18: Ping replies

Owner
Sara
Description
Ensure the software component replies to software icmp echo requests
check if echo reply icmp packet is generated
Location

projects/scone/regress/test_icmp_echo
Output

SUCCESS
Regression suite
Target
$ Known bugs/issues:

Test 3.1.19: ICMP packets destined to interface ip's that are not echo request/replies

Owner
Sara
Description
Ensure that icmp packets destined to the software router that are not echo request/replies get dropped $ Pseudocode
Location

projects/scone/regress/test_icmp_notecho
Output

SUCCESS
Regression suite
Target
Known bugs/issues
Due date
Nov 6

Test 4: Java GUI

Test 4.1: Quick start function to start router

Owner
Neda
Description
Checks if the GUI window appears on the screen
Location
projects/gui_scone/regress/test_main_frame
Regression suite
Yes
Target
RR Alpha 1.0
Known bugs/issues
None
Due date
Done

Test 4.2: Adding/Removing/Modifying the routing table entries

Owner
Neda
Description
Checks if changes in Routing Table are reflected in hardware
Location
projects/gui_scone/regress/test_routing_table
Regression suite
Yes
Target
RR Alpha 1.0
Known bugs/issues
Changes in the output port columns are not reflected in registers until user changes the selected (highlighted row).
Due date
Done

Test 4.3: Adding/Removing/Modifying the ARP table entries

Owner
Neda
Description
Checks if changes in ARP Table are reflected in hardware.
Location
projects/gui_scone/regress/test_arp_table
Regression suite
Yes
Target
RR Alpha 1.0
Known bugs/issues
None
Due date
Done

Test 4.4: Configuring Port MAC addresses

Owner
Neda
Description
Checks if changes in Configuration Table are reflected in hardware
Location
projects/gui_scone/regress/test_port_config_table $ Commands to Enter
Regression suite
Yes
Target
RR Alpha 1.0
Known bugs/issues
None
Due date
Done

Test 4.5: PopUp Test

Owner
Neda
Description
Checks if all windows can be opened
Location
projects/gui_scone/regress/test_popup
Regression suite
Yes
Target
RR Alpha 1.0
Known bugs/issues
None
Due date
Done


Dev,,Alpha(ro)
Topic revision: r1 - 19 Dec 2007 - 01:41:54 - Lockwood