(DPDK) как отправить файл pcap получателю и сгенерировать точный файл pcap на стороне получателя? - PullRequest
0 голосов
/ 07 марта 2020

Я делаю этот проект, где я должен отправить кучу пакетов (используя rte_eth_tx_burst) с одной сетевой карты на другую сетевую карту. эти 2 сетевые карты связаны (по волокну, я думаю? это был не я, кто их связал.), поэтому, если я просто использую tcpdump для прослушивания другой сетевой карты, я могу записать все это и сохранить их в файле pcap.

Моя тестовая среда: 1 .a Linux машина, с 2 парами связанных сетевых карт: eth1 и eth2 связаны, eth3 и eth4 также связаны. 2. Моя программа, слушает eth1. 3. Я отправляю файл pcap, используя eth2 (cmd: tcpreplay -i eth2 test.pcap). 4. Моя программа получает поток пакетов, кадр за кадром, для каждого полученного кадра отправляет его из eth3, используя rte_eth_tx_burst ( ) предоставлено dpdk. 5. Я запускаю tcpdump для прослушивания eth4 (cmd: tcpdump -i eth4 -w recieve.pcap -B 1000)

Моя текущая проблема: 1. Кадры не в своем первоначальном порядке. (но содержание то же самое.) 2. промежуток времени между кадрами не является первоначальными промежутками (но я думаю, что это неизбежно). result file compared to the original file

вопрос: 1.does dpdk гарантирует порядок отправки пакетов, которые вы помещаете в очередь отправки. 2. возможно, это потому, что tcpdump не гарантирует порядок? 3. или эта проблема неразрешима?

1 Ответ

2 голосов
/ 09 марта 2020

Да, порядок пакетов, отправляемых tx_burst, должен быть гарантирован, при условии, что вы используете только одну очередь.

Неверный пакет, который вы видите, является ответом от eth4, например tcpdump также записывает исходящий трафик c. Помните, что стек TCP все еще работает как обычно на eth4.

Почему бы не использовать DPDK для перехвата пакетов? Это будет более надежно, и вы будете видеть только входящие пакеты. Для этого есть утилита: pdump. Или вы можете выбрать только входящее направление в tcpdump, используя -Q in.

Также, возможно, вы уже знаете это, но есть пример приложения в комплекте с DPDK это именно то, что вы пытаетесь сделать: L2FWD .

...