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

10 минут назад, TheUser сказал:

А что, DPDK поддерживает REALTEK???

То же удивляет. Не нашел реалтека в поддерждке. https://core.dpdk.org/supported/

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

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.