Nic oped by mario flajslik - wvoice/Accelerators GitHub Wiki
Name
nic
Location
contrib-projects/nic_oped
IP Cores
- NetFPGA-10G Specific cores
- Xilinx AXI Peripheral
- Microblaze Subsystem
- Other
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