[dpdk-dev] KNI Module (multiple) to handle IGMP requests
vikash at noida.interrasystems.com
Tue Aug 6 16:12:01 CEST 2019
Currently I am working on a project in which I need to capture the ipv4
multicast data from a managed (igmp enabled) switch.
In order achieve this, I am currently using below configuration:
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-957.12.1.el7.x86_64
NIC: Ethernet 10G 2P X520 Adapter 154d (ixgbe)
IG Huge Page available.
Changes made in grub: isolcpus=0-1 default_hugepagesz=1G hugepagesz=1G
KNI Module successfully loaded as : sudo /sbin/insmod
Successfully created 16 hugepages.
Successfully created hugepage filesystem. (using 'sudo mount -t
hugetlbfs nodev /mnt/huge')
Static IPs given to both ports of NIC.
Successfully binded both the ports with igb_uio driver.
Referring to KNI sample application, allocated 1 KNI module for each
port. Used same MAC address, IP address, ifname same as the original NIC.
Able to join multicast feeds using these kni interfaces (
Using 1 lcore for each port. lcore 0 to capture the data over port 0 and
lcore 1 to capture the data over port 1.
Each of these 2 eal thread running on lcore does the below operations:
rte_eth_rx_burst() -> keep copy of required multicast data and free the
mbuff if copied. Else all other packets passed to kni tx (including igmp
Everything works fine with port 0. But for Port 1, I observe that there
is no output from rte_kni_rx_burst, which in turn leads to multicast
drop by switch.
I am relying on KNI TCP/IP stack to handle the igmp - Membership Query
to send the igmp - Membership Report, port-1 never send the report and
hence switch drops the multicast data within few minutes.
I have seen this behaviour on 2-3 machines of almost similar
configuration. However, strangly on one another similar machine, the
behaviour was totally opposite. There Port1 was working fine and port0
was dropping the multicast.
*Please advice, what I am missing here and what can I do to debug this
Thanks & Regards,
More information about the dev