Skip to content

Netflow is a key component for network traffic monitoring. As high speed technologies such as 10 Gbps or 40 Gbps links are common in a backbone network, it is impossible to monitor traffic via conventional software like nProbe. DPDK is next solution for monitoring high speed network with commodity hardware.

Notifications You must be signed in to change notification settings

triplekill/netflow-dpdk

Repository files navigation

= Changelog =

= DPDK Basic =
Before using DPDK, you need to load DPDK kernel modules (uio, igb_uio).
Commands:
 modprobe uio
 insmod ${DPDK}/x86_64-native-linuxapp-gcc/kmod/igb_uio.ko

After load uio, igb_uio, unbind network device driver from ixgbe to igb_uio.
commands(if you want to unbind interface card p2p1):
python ${DPDK}/tools/dpdk_nic_bind.py --bind=igb_uio p2p1

= Build =
export RTE_SDK=<DPDK SDK path>
export RTE_TARGET=x86_64-native-linuxapp-gcc

make

To use multiqueues, configure different rth_eth_conf.
File: netflow-init.h

In 1/10G Ethernet(ixgbe), rss_hf = ETH_RSS_IPV4,
In 40G Ethernet(i40e), rss_hf = ETH_RSS_NONF_IPV4_UDP | ETH_RSS_NONF_IPV4_TCP, 

code:
static const struct rte_eth_conf port_conf = {
    .rxmode = {
        .mq_mode        = ETH_MQ_RX_RSS,
        .split_hdr_size = 0,
        .header_split   = 0, /**< Header Split disabled */
        .hw_ip_checksum = 0, /**< IP checksum offload disabled */
        .hw_vlan_filter = 0, /**< VLAN filtering disabled */
        .jumbo_frame    = 0, /**< Jumbo Frame Support disabled */
        .hw_strip_crc   = 0, /**< CRC stripped by hardware */
    },
    .rx_adv_conf = {
        .rss_conf = {
            .rss_key = NULL,
            .rss_hf = ETH_RSS_IPV4 | ETH_RSS_IPV6,              /* 1/10G RSS offload features */
            //.rss_hf   = ETH_RSS_NONF_IPV4_UDP |
            //               ETH_RSS_NONF_IPV4_TCP,              /* 40G RSS offload features */
        },
    },
    .txmode = {
        .mq_mode = ETH_MQ_TX_NONE,
    },
};

 
= Run =

To run, command line interpreter, run 2 threads
ex) 2 lcore
./build/dprobe -c 0x3 -n 2 -- -p 0x1 -H 127.0.0.1 -P 2055 -q 2

-H : Netflow Collector IP
-P : Netflow Collector Port Number
-q : Number of Receive queues

./build/dprobe -c 0x15 -n 4 -- -m "2:0.0,4:0.1" -q 2
desc: lcore(2) processes port(0) queue(0)
      lcore(4) processes port(0) queue(1)

= Reference =
* DPDK build : http://sunshout.tistory.com/1556

About

Netflow is a key component for network traffic monitoring. As high speed technologies such as 10 Gbps or 40 Gbps links are common in a backbone network, it is impossible to monitor traffic via conventional software like nProbe. DPDK is next solution for monitoring high speed network with commodity hardware.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published