Skip to content

Contributed NIC by Mario Flajslik

mshahbaz edited this page Sep 11, 2012 · 12 revisions

Name

nic

Location

contrib-projects/nic

IP Cores

Software

Description

This is a reference NIC project using the DMA engine. It includes many of the standard NetFPGA modules (microblaze, AXI interconnect, nf10_interface), but in addition it uses the DMA module to connect to the host over PCIe. The DMA module is connected to the rest of the NetFPGA system through AXIS (master+slave) for streaming packets and AXI4-LITE over which user code on the host can read/write any AXI register in the system.

Block Diagram

Testing

The 10G NIC on NetFPGA is similar to other NICs. In the following sections, we will show how to run a iperf test between NetFPGA and another machine.

Testing Hardware

To run the test, you need two machines, A and B. Let's say Machine A is equipped with NetFPGA and Machine B is equipped with a third-party 10G NIC.

Download the reference_nic bitfile from contrib-projects/nic/bitfiles/nic.bit. (Refer to Production Test Manual if you don't know how to download the bitfile and/or not setup JTAG cable yet.)

Connect Machine A and Machine B using a 10G cable. Assume we use nf0 (the port nearest to the PCI Express) on Machine A and eth1 on Machine B.

Build and Install the NIC Driver

Make the driver in the sw/host/driver directory and insert it as a module.

cd sw/host/driver
make
sudo insmod nf10.ko
dmesg

If everything went smoothly dmesg will output that nf10 device is ready.

Setup IP address

On Machine A

sudo ifconfig nf0 192.168.0.1

On Machine B

sudo ifconfig eth1 192.168.0.2

Test 1: Ping

On Machine A

[hyzeng@machine_A ~]$ ping 192.168.0.2

PING 192.168.0.2 192.168.0.2) 56(84) bytes of data.

64 bytes from 192.168.0.2: icmp_req=1 ttl=50 time=1.04 ms

64 bytes from 192.168.0.2: icmp_req=2 ttl=50 time=1.04 ms

64 bytes from 192.168.0.2: icmp_req=3 ttl=50 time=1.04 ms

64 bytes from 192.168.0.2: icmp_req=4 ttl=50 time=1.04 ms

Test 2: iperf

iperf is a utility to measure the performance over an IP link.

First, make sure you have iperf installed on both machines. If not,

sudo yum install iperf 

Setup iperf server on Machine A.

iperf -s

Setup iperf client on Machine B.

[hyzeng@machine_B ~]$ iperf -c 192.168.0.1

------------------------------------------------------------

Client connecting to localhost, TCP port 5001

TCP window size:  132 KByte (default)

------------------------------------------------------------

[  3] local 192.168.0.2 port 52787 connected with 192.168.0.1 port 5001

[ ID] Interval       Transfer     Bandwidth

[  3]  0.0-10.0 sec  9.35 GBytes  935 Mbits/sec

Clone this wiki locally