sdnfv / openNetVM

A high performance container-based NFV platform from GW and UCR.
http://sdnfv.github.io/onvm/
Other
261 stars 134 forks source link

speed tester can crash if given a pcap with jumbo frames #314

Closed twood02 closed 2 years ago

twood02 commented 2 years ago

Bug Report

Current Behavior If you forget to start the manager with jumbo frame support (-j), then speed tester will crash if you tell it to load a PCAP trace that contains jumbo frames.

Expected behavior/code Rather than segfault, we should report an error if the size of a packet is larger than the mbuf size.

Steps to reproduce Start the manager as normal, run speed tester with a pcap file with jumbo frames.

Possible Solution When going through the while loop that allocates packets and uses rte_memcpy to copy the data from the PCAP, we should check the size of objects in pktmbuf_pool. This is a struct rte_mempool which has an elt_size field that we can check for the size of each object: https://doc.dpdk.org/api/structrte__mempool.html#ad61e210d2df01bf9c91230fee6a8cf21

Lhahn01 commented 2 years ago

One example of a pcap file that can be used for testing is: web.pcap.zip (Sorry, I had to compress it into a .zip as it won't accept .pcap)

Or, you can use this link: https://github.com/Lhahn01/openNetVM/blob/perf_mon/examples/speed_tester/pcap/web.pcap

To actually see what is in the pcap file, the following command will allow you to do so: tcpdump -r /local/onvm/openNetVM/examples/speed_tester/pcap/web.pcap. You may have to put sudo in front of tcpdump. And you just have to be careful where you locate your pcap file as the command must match the path to reach that file.

When I ran the manager without the -j ( ./onvm/go.sh -k 1 -n 0xF8 -s stdout ), it causes a segmentation fault. However, if I run it as the following ./onvm/go.sh -k 1 -n 0xF8 -s stdout -j, we no longer have a segmentation fault.

Note: To use the jumbo frame support, make sure your branch is up to date with the develop branch.