Jump to content
Калькуляторы

dpdk и вынос мозга.

Привет всем.
Тут, на форуме, кто-то говорил, что tcpdump это мастдай и надо юзать dpdk. Сказано - apt-установлено. Что дальше?
 

# dpdk-devbind --status

...
Network devices using kernel driver
===================================
0000:01:00.0 'RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller 8168' if=enp1s0 drv=r8169 unused=r8168 
0000:06:01.0 'DGE-528T Gigabit Ethernet Adapter 4300' if=enp6s1 drv=r8169 unused= *Active*
0000:06:04.0 'RTL-8110SC/8169SC Gigabit Ethernet 8167' if=enp6s4 drv=r8169 unused= 
...

Хорошо. Видим 3 сетевых. Пробуем биндить.

# dpdk-devbind -b r8169 0000:06:04.0

Warning - no supported modules(DPDK driver) are loaded
0000:06:04.0 already bound to driver r8169, skipping

И получаем такой ответ. Это ответ типа "Иди и купи себе нормальную сетевуху нищеброд"? Или как?

 

С dpdk-pdump, dpdk-pmdinfo, dpdk-procinfo я вообще не понял что делать. Ну есть они. Ответ "примерно" такой же, как и выше.

# dpdk-pdump
EAL: Detected 4 lcore(s)
PANIC in rte_eal_config_attach():
Cannot open '/var/run/.rte_config' for rte_mem_config
6: [dpdk-pdump(_start+0x2a) [0x55ae85dbb8da]]
5: [/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7fb1ef94bb97]]
4: [dpdk-pdump(main+0x157) [0x55ae85dc4489]]
3: [/usr/lib/x86_64-linux-gnu/librte_eal.so.17.11(rte_eal_init+0xf97) [0x7fb1eff42427]]
2: [/usr/lib/x86_64-linux-gnu/librte_eal.so.17.11(__rte_panic+0xbd) [0x7fb1eff40d0d]]
1: [/usr/lib/x86_64-linux-gnu/librte_eal.so.17.11(rte_dump_stack+0x2e) [0x7fb1eff4923e]]
Aborted (core dumped)

 

Как быть?

Спасибо.

 

 

 

Edited by default_vlan

Share this post


Link to post
Share on other sites

Скормил библиотеку
 

# modprobe uio_pci_generic 
# lsmod | grep uio_pci_generic 
uio_pci_generic        16384  0
uio                    20480  1 uio_pci_generic

Теперь хоть 

# dpdk-devbind -u 0000:06:04.0 
0000:06:04.0 RTL-8110SC/8169SC Gigabit Ethernet  is not currently managed by any driver

Иначе ругается, а также 

# dpdk-devbind -b r8169 0000:06:04.0

ничего не выдает. раньше ругалась, что драйвер не то и прочее.

 

Share this post


Link to post
Share on other sites

нужно биндить драйвер igb_uio

ну и вообще какая версия dpdk?

 

$ cat /opt/url_filter/startup.sh
#/bin/bash
sudo modprobe uio
sudo insmod /opt/dpdk-stable-17.05.1/build/kmod/igb_uio.ko
echo 2048 | sudo tee /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
sudo mount -t hugetlbfs nodev /mnt/huge/
sudo /opt/dpdk-stable-17.05.1/usertools/dpdk-devbind.py --bind=igb_uio 06:00.0
sudo /opt/dpdk-stable-17.05.1/usertools/dpdk-devbind.py --bind=igb_uio 06:00.1

вот мой скриптец который делает всё, для примера :)

Share this post


Link to post
Share on other sites
31 минуту назад, zstas сказал:

ну и вообще какая версия dpdk?

# dpkg -l | grep dpdk
ii  dpdk                                   17.11.3-3~ubuntu0.18.04           amd64        Data Plane Development Kit (runtime)
ii  dpdk-dev                               17.11.3-3~ubuntu0.18.04           amd64        Data Plane Development Kit (development files)
ii  libdpdk-dev:amd64                      17.11.3-3~ubuntu0.18.04           amd64        Data Plane Development Kit (basic development files)

Установка из репозитория.

К сожалению, igb_uio.ko в системе не нашлось. Пришлось apt-get install dpdk-igb-uio-dkms

В процессе сборки установился модуль /lib/modules/4.15.0-32-generic/updates/dkms/igb_uio.ko

 

А за скрипт спасибо)

 

 

Edited by default_vlan

Share this post


Link to post
Share on other sites

интересно, предлагаю сконпелять dpdk, у меня такая же версия есть в проде и там всё есть

 

zstas@dpdk-test:~/dpdk-stable-17.11.3/build/kmod$ ls -la
total 72
drwxrwxr-x 2 zstas zstas  4096 Jul  2 10:47 .
drwxrwxr-x 7 zstas zstas  4096 Jul  2 10:48 ..
-rw-rw-r-- 1 zstas zstas 20784 Jul  2 10:47 igb_uio.ko
-rw-rw-r-- 1 zstas zstas 40928 Jul  2 10:47 rte_kni.ko

 

Share this post


Link to post
Share on other sites
37 минут назад, zstas сказал:

echo 2048 | sudo tee /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages

С вашего позволения вопрос. Что тут, собственно, происходит? Каким образом она понимает куда складывать трафик? Или я опять не понял ничего?)

Edited by default_vlan

Share this post


Link to post
Share on other sites
1 минуту назад, default_vlan сказал:

С вашего позволения вопрос. Что тут, собственно, происходит?

тут просто выделяется 2048 hugehages.

ну мне нужно много оперативы отдать в hugepages, для дампа можно и поменьше наверное.
 

через sysctl можно тоже самое сделать в принципе

Share this post


Link to post
Share on other sites
Только что, zstas сказал:

через sysctl можно тоже самое сделать в принципе

а как он понимает куда именно складывать трафик? Тут как бы mount -t hugetlbfs nodev /mnt/huge/ без устройства.

Share this post


Link to post
Share on other sites
3 минуты назад, default_vlan сказал:

а как он понимает куда именно складывать трафик? Тут как бы mount -t hugetlbfs nodev /mnt/huge/ без устройства.

что значит "складывать трафик"?

Share this post


Link to post
Share on other sites
3 минуты назад, default_vlan сказал:

а как он понимает куда именно складывать трафик? Тут как бы mount -t hugetlbfs nodev /mnt/huge/ без устройства.

мой скрипт - он нужен чтобы в принципе dpdk запуститься мог. а куда складывать трафик - это уже к вашей утилите ман читать надо.

Share this post


Link to post
Share on other sites
5 минут назад, Nickollla сказал:

То же удивляет. Не нашел реалтека в поддерждке

# dpdk-devbind --status

Network devices using DPDK-compatible driver
============================================
0000:06:04.0 'RTL-8110SC/8169SC Gigabit Ethernet 8167' drv=igb_uio unused=r8169

совместимые дрова igb_uio и uio

 

 

7 минут назад, zstas сказал:

а куда складывать трафик - это уже к вашей утилите ман читать надо.

к какой именно? У меня их 6

 

# dpdk-pdump 
EAL: Detected 4 lcore(s)
PANIC in rte_eal_config_attach():
Cannot open '/var/run/.rte_config' for rte_mem_config
6: [dpdk-pdump(_start+0x2a) [0x55c6795408da]]
5: [/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7f05258deb97]]
4: [dpdk-pdump(main+0x157) [0x55c679549489]]
3: [/usr/lib/x86_64-linux-gnu/librte_eal.so.17.11(rte_eal_init+0xf97) [0x7f0525ed5427]]
2: [/usr/lib/x86_64-linux-gnu/librte_eal.so.17.11(__rte_panic+0xbd) [0x7f0525ed3d0d]]
1: [/usr/lib/x86_64-linux-gnu/librte_eal.so.17.11(rte_dump_stack+0x2e) [0x7f0525edc23e]]
Aborted (core dumped)

Вот такая ситуация)

Edited by default_vlan

Share this post


Link to post
Share on other sites
2 минуты назад, default_vlan сказал:
6 минут назад, zstas сказал:

а куда складывать трафик - это уже к вашей утилите ман читать надо.

к какой именно?

dpdk-pdump

Share this post


Link to post
Share on other sites
45 минут назад, zstas сказал:

dpdk-pdump

Я вот одного понять не могу. 

https://doc.dpdk.org/guides/howto/packet_capture_framework.html

 

Цитата

Send traffic to dpdk_port0 from traffic generator. Inspect packets captured in the file capture.pcap using a tool that can interpret Pcap files, for example tcpdump:


$tcpdump -nr /tmp/capture.pcap

А зачем все эти извращения?

 

Кстати, так и не смог запустить. Орет на отсутствующий конфиг в /var/run

Share this post


Link to post
Share on other sites
13 часов назад, default_vlan сказал:

И получаем такой ответ. Это ответ типа "Иди и купи себе нормальную сетевуху нищеброд"? Или как?

NetMap умеют многие дрова, интел и рылотек точно.

Share this post


Link to post
Share on other sites
В 25.08.2018 в 01:13, NewUse сказал:

права.... или папки нет или se-linux

там not_created файл. Хз в чем проблема.

Share this post


Link to post
Share on other sites
2 часа назад, ixi сказал:

обратите внимание на выделенное

На что именно обратить? Там много выделенного.

Пробую запустить:

dpdk-pdump -- --pdump 'device_id=06:04.0,queue=*,rx-dev=/mnt/rx.pcap'

Дядьки тут говорят, что надо:

Цитата

echo 0 > /proc/sys/kernel/randomize_va_space

Ну ок, сделал.

# dpdk-pdump -- --pdump 'device_id=06:04.0,queue=*,rx-dev=/mnt/rx.pcap'
EAL: Detected 4 lcore(s)
EAL: Probing VFIO support...
RING: Cannot reserve memory
EAL: Error - exiting with code: 1
  Cause: File exists
# cat /proc/meminfo | grep Huge
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
HugePages_Total:    1764
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

 

Share this post


Link to post
Share on other sites
4 минуты назад, default_vlan сказал:

На что именно обратить? Там много выделенного.

The dpdk-pdump tool can only be used in conjunction with a primary application which has the packet capture framework initialized already.

Share this post


Link to post
Share on other sites
Только что, ixi сказал:

The dpdk-pdump tool can only be used in conjunction with a primary application which has the packet capture framework initialized already.

Аааа. Ну так я и поднимал выше вопрос об этом. В теме за яровую были крики и вопли, что tcpdump это мастдай, а dpdk вроде бы даже очень норм. А по факту оказывается, что dpdk юзает tcpdump. 

 

Мы засунули костыль в костыль, чтобы у тебя был костыль на костыле, когда все на костылях?

Share this post


Link to post
Share on other sites

Ну и

The dpdk-pdump tool depends on libpcap based PMD which is disabled by default

 

2 минуты назад, default_vlan сказал:

Аааа. Ну так я и поднимал выше вопрос об этом. В теме за яровую были крики и вопли, что tcpdump это мастдай, а dpdk вроде бы даже очень норм. А по факту оказывается, что dpdk юзает tcpdump. 

 

Мы засунули костыль в костыль, чтобы у тебя был костыль на костыле, когда все на костылях?

Сравнивать dpdk и tcpdump -- как тёплое со сладким. DPDK -- фреймворк для быстрой обработки пакетов, tcpdump -- утилита, чтобы быстро посмотреть пробегающие пакетики.

Share this post


Link to post
Share on other sites
2 часа назад, ixi сказал:

DPDK -- фреймворк для быстрой обработки пакетов, tcpdump -- утилита, чтобы быстро посмотреть пробегающие пакетики.

Хорошо. А есть ли общий набор команд для корректного запуска dpdk-pdump?

Share this post


Link to post
Share on other sites
3 часа назад, default_vlan сказал:

Хорошо. А есть ли общий набор команд для корректного запуска dpdk-pdump?

dpdk-pdump работает исключительно с приложениями, использующими dpdk и поддерживающими dpdk-pdump, тогда всё будет корректно

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now