hpcn-uam / 100G-fpga-network-stack-core

This repo contains the Limago code
Other
77 stars 25 forks source link

Simulating the project in HLS #1

Open ghost opened 3 years ago

ghost commented 3 years ago

@mariodruiz Hi, I am trying to simulate the TOE on Vivado HLS and have run into few problems. I see the simulation requires at least 3 arguments; a 0 or 1 and 2 pcap files. I also can find 3 pcap files in the pcap directory. Can I use them as input pcap files? Should the output pcap file be an existing pcap file? I, as a trial, tried using echo_replay.pcap and iperf3_fpga_as_client.pcap as input and output files respectively and got the following output on the console.

WINDOW_BITS 18  MAX_SESSIONS 64 BUFFER_SIZE 262144
POW: Error opening output file
: No such file or directory
runExperiment set 
IPERF request to establish a new connection socket 192.168.0.8:5001
IPERF2 Init timer at 11
tx_app_table  .ackd 0x301b0 .mempt 0x301b1
Error in mmap -1
Error in mmap: Bad file descriptor
Error opening the input file with name: /home/xilinx/Desktop/100G-fpga-network-stack-core/pcap (copy)/echo_replay.pcap
Setting event for retransmit event type 3   at 385
Setting event for retransmit event type 3   at 834
Setting event for retransmit event type 3   at 1411
Setting event for retransmit event type 3   at 2052
Connection could not be opened.
regSessionCount 0
WARNING: Hls::stream 'ipTxData' contains leftover data, which may result in RTL simulation hanging.
WARNING: Hls::stream 'slc_sessionIdFreeList' contains leftover data, which may result in RTL simulation hanging.
WARNING: Hls::stream 'portTable2txApp_free_port' contains leftover data, which may result in RTL simulation hanging.

Do I also need to have IPERF installed? And do I need a physical connection to the hardware?

mariodruiz commented 3 years ago

Hi @abitofmaya,

I haven't tried that simulation in a long time. I am not sure if it continues working.

The path to the pcap files must not contain spaces, which is your case, for that reason it is not being found. The output pcap is automatically created. If the file exists, it is overwrite.

This simulation does not require iperf nor physical connection. You may need Wireshark to visualize the pcap files.

Mario

ghost commented 3 years ago

Greetings @mariodruiz, I had the previous issue resolved. Now I'm getting the following error.

WINDOW_BITS 18  MAX_SESSIONS 64 BUFFER_SIZE 262144
runExperiment set 
IPERF request to establish a new connection socket 192.168.0.8:5001
IPERF2 Init timer at 11
tx_app_table  .ackd 0x301b0 .mempt 0x301b1
Setting event for retransmit event type 3   at 385
Setting event for retransmit event type 3   at 834
Setting event for retransmit event type 3   at 1411
Setting event for retransmit event type 3   at 2052
Connection could not be opened.
regSessionCount 0

I see it is trying to establish a connection at 192.168.0.8:5001. I found the IP and port defined somewhere in testbench source. How do I select the IP and port? Is it any valid IP and an available port? I also found the following structure in toe.hpp.

struct openStatus
{
    ap_uint<16> sessionID;
    bool        success;
    openStatus() {}
    openStatus(ap_uint<16> id, bool success)
        :sessionID(id), success(success) {}
};

The status boolean variable is checked to see if a connection is open but I found nothing that is writing to that variable. Could you please briefly tell how the testbench is working?

ghost commented 3 years ago

Greetings @mariodruiz,

I'm currently getting the following as output but couldn't verify how this is being calculated. I see these are packets but it is nowhere similar to the input. Can you please tell what these packet contain? I am using the echo_replay.pcap as input.

Stream to pcap: 0x020303001004020000FB33FFFF1270D20BA411B00123568913983A0800A8C00500A8C06AF906400000000030000045    keep: 0x0ffffffffffff   last: 1
Stream to pcap: 0x06365FFFF10507A11A411B10123568913983A0800A8C00500A8C072F906400000000028000045 keep: 0x0ffffffffff last: 1
Stream to pcap: 0x0BB5FFFFF10502217A411B10123568913983A0800A8C00500A8C072F906400000000028000045 keep: 0x0ffffffffff last: 1
Stream to pcap: 0x0135AFFFF1050CA1CA411B10123568913983A0800A8C00500A8C072F906400000000028000045 keep: 0x0ffffffffff last: 1
Stream to pcap: 0x02D5095FE10501A28A411B10123568913983A0800A8C00500A8C072F906400000000028000045 keep: 0x0ffffffffff last: 1
Stream to pcap: 0x01B49FFFF1050C22DA411B10123568913983A0800A8C00500A8C072F906400000000028000045 keep: 0x0ffffffffff last: 1
Stream to pcap: 0x07343FFFF10506A33A411B10123568913983A0800A8C00500A8C072F906400000000028000045 keep: 0x0ffffffffff last: 1
Stream to pcap: 0x08D3995FE1050BA3EA411B10123568913983A0800A8C00500A8C072F906400000000028000045 keep: 0x0ffffffffff last: 1
Stream to pcap: 0x07B32FFFF10506244A411B10123568913983A0800A8C00500A8C072F906400000000028000045 keep: 0x0ffffffffff last: 1
mariodruiz commented 3 years ago

@abitofmaya, the output should be also stored in a .pcap file. You can open that pcap file with Wireshark and check the content. It has been 2 years since last time I simulated this, I do not recall what the output should contain.