[dpdk-dev] KNI Module (multiple) to handle IGMP requests

Vikash Kumar vikash at noida.interrasystems.com
Tue Aug 6 16:12:01 CEST 2019


Hello Everyone,

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:

dpdk-18.05.1.

*Hardware Description:*

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

Architecture: 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 
transparent_hugepage=never"

KNI Module successfully loaded as : sudo /sbin/insmod 
$RTE_SDK/$RTE_TARGET/kmod/rte_kni.ko kthread_mode=multiple

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 ( 
setsockoptIP_ADD_SOURCE_MEMBERSHIP )

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 
packets)

rte_kni_tx_burst()

rte_kni_handle_request()

rte_kni_rx_burst()

rte_eth_tx_burst()

*_Problem Statement:_*

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 
issue further.*

**

Thanks & Regards,

Vix




More information about the dev mailing list