Closed Eternity-Wang closed 1 month ago
Scapy should not be used to generate the F&A packets. This should be done in the ASIC at the translator. What you should do is generate DTA reports, and have the translator intercept and convert these into suitable RDMA operations.
Assuming this is what is being done: Did you update the packet lengths in the IP and UDP headers accordingly when generating AETH instead of RETH? (check control block ControlCraftRDMA)
If that is not it, I would dump the translator-generated F&A packet and a valid F&A (between two normal rNICs), compare their packet layouts, and investigate the differences.
In the future (you and anyone else), contact me via email for a faster response :) Good luck!
Scapy should not be used to generate the F&A packets. This should be done in the ASIC at the translator. What you should do is generate DTA reports, and have the translator intercept and convert these into suitable RDMA operations.
Assuming this is what is being done: Did you update the packet lengths in the IP and UDP headers accordingly when generating AETH instead of RETH? (check control block ControlCraftRDMA)
If that is not it, I would dump the translator-generated F&A packet and a valid F&A (between two normal rNICs), compare their packet layouts, and investigate the differences.
In the future (you and anyone else), contact me via email for a faster response :) Good luck!
Thank you very much for your detailed reply. I have currently implemented the F&A operation using another RDMA program with a GRH header. The reason for the previous code error, I guess it could be related to the RDMA NIC we used.
Perfect! Glad it worked out.
I have so far been able to successfully send RDMA Write-Only packets via the
send_rdma_synthetic.py
file and write the key-value data into the memory address corresponding to the Collector. However, when I usescapy
to construct a packet that mimics the RDMA Fetch&Add operation, I find that the packet does not add up the values of the memory addresses as expected. I have disable the icrc validation in RDMA NIC, but it still cannot fetch and add the value of the remote memory address in Collector. I would like to know how to solve this problem?Here is the code for
send_rdma_synthetic.py
This is the NAK packet send from Collector and captured by wireshark: