内核流量转发功能
功能描述
提供内核流量转发功能开关,支持通过用户态协议栈对内核态流量进行转发,支持内核态与K-NET应用的同时使能。主要适用于网卡不支持硬件流量分叉场景。
[!NOTICE]须知 K-NET流转发使能侧的MTU需保证不高于对端网卡及链路上交换机的MTU。
使用示例
本章示例以iPerf3单进程为例,说明如何使用内核流量转发功能。
前提条件
本功能需要保证内核协议栈和使用K-NET的进程使用不同的端口区间,否则内核态进程可能收不到流量。请参考共线程功能的步骤4进行配置,保证内核协议栈与K-NET端口范围不交叉。
内核流量转发旨在提供软件级的流量分流功能,能够在用户态劫持后运行同一个网口的内核进程,用户需要配置/etc/knet/knet_comm.conf的“bifur_enable”配置项,2代表开启,0代表关闭。
{
"hw_offload": {
"bifur_enable": 2
}
}
操作步骤
-
开启后用户态劫持启动。
taskset -c 0-3 env LD_PRELOAD=/usr/lib64/libknet_frame.so iperf3 -s -4 -p 10001 --bind 192.168.*.*说明
- taskset -c 0-3表示对CPU核心0-3绑核,指定进程只能在这些CPU核心上运行,用户根据实际场景替换。
- /usr/lib64/libknet_frame.so为K-NET共享库默认安装路径,若不同需根据实际场景替换。

-
启动内核态进程,该内核进程流量由用户态进程转发处理。
taskset -c 0-4 iperf3 -s -4 -p 10000 --bind 192.168.*.* #此IP地址与用户态IP地址相同,端口不同
启动成功后即可与内核进程建立连接,发送流量。
-
客户端主机中运行iPerf3与内核进程进行测试。
taskset -c 32-63 iperf3 -c 192.168.*.* -b 0 -p 10000 -P 1 -t 0 -l 65535内核进程建链并打流成功。
