The purpose of this project is to provide a free application capable of:
Most of these features are based on various DPDK libs.
Packet-journey (pktj) is composed of multiple kind of threads:
For optimal performances, the forwarding threads must be alone on their cores. All other threads can be scheduled on the same lcore.
The forwarding threads are running the main_loop() function. It basically follows these steps:
pktj -l 0,1,2,3 -n 4 --socket-mem=4096 --log-level=4 -- \ --configfile /root/devel/router-dpdk/tests/integration/lab00/pktj.conf
; pktj [pktj] callback-setup = /root/devel/router-dpdk/tests/integration/lab00/up.sh rule_ipv4 = /root/devel/router-dpdk/tests/integration/lab00/acl.txt rule_ipv6 = /root/devel/router-dpdk/tests/integration/lab00/acl6.txt promiscuous = 1 kni_rate_limit = 1000 aclavx2 = 1 ; Port configuration [port 0] eal queues = 0,1 1,2 ; queue,lcore kni = 3,0 ; lcore_tx,kthread
These settings will launch the following:
up.shafter setting up the KNI.
up.sh configures the KNI IPv4, IPv6 and MAC addresses. It also
starts some processes (bgpd and zebra in our case).
#!/bin/sh link1=$1 mac1=$2 ip link set $link1 up ip link add link $link1 name $link1.2000 type vlan id 2000 ip link set $link1.2000 address $mac1 ip link set $link1.2000 up ip addr add 184.108.40.206/24 dev $link1.2000 ip route add 220.127.116.11/24 via 18.104.22.168 ip addr add 2001:3::5/48 dev $link1.2000 ip route add 2001:4::/48 via 2001:3::4 # delay start because of quagga racy start sleep 15s /usr/lib/quagga/zebra & /usr/lib/quagga/bgpd &
You can try this out using our QEMU test lab.
The test scenario is done between 2 physical machines having both a XL710 NIC and a E5-2630L CPU. The first host is running Packet-Journey; it receives traffic from the second host and sends it back.
For simulating real life conditions, the tests are done with 500k routes (something similar to a BGP full view) and 50 ACL (we use scalar implementation for ACL since the CPU don't have AVX2 instructions). We have also a percentage of the packets which are forwarded to the KNI instead of going through the fastpath.
The packets are generated using DPDK-PktGen which is configured for sending 64 Bytes UDP packets with a random source and destination IP. When Configured with 4 RX queues, Packet-Journey is able to forward 21773.47 mbits.