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...
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