F-Stack KNI 配置注意事项

KNI介绍

KNI(Kernel NIC Interface)内核网卡接口,是DPDK中用于与内核通信的模块,在主要的业务流程中可能并不需要,但在部分场景下,如服务器所有网卡都被F-Stack接管用于业务(或服务器本身只有单网卡),其他如SSH登录管理等数据等就必须开启KNI来与内核进行数据交互。

KNI配置

因为开启KNI将对收到所有的数据包按转发策略进行检查,会对性能造成一定的影响,所以在F-Stack中默认配置关闭了KNI选项,如有需要可以在控制文件config.ini中修改配置开启KNI并设置转发规则。

[kni]
enable=1
method=reject
tcp_port=80
udp_port=53

参数说明:

  • enable 参数配置是否开启KNI,设置为1表示开启,设置为0表示关闭,默认值为0
  • method 参数和tcp_port/udp_port参数配合使用,method参数可选accept或reject 当method参数设置为accept时,默认所有数据包都交由F-Stack处理,只将tcp_port/udp_port参数指定的端口的数据包通过KNI转发至系统内核。 当method参数设置为reject时,默认素有的数据包都通过KNI转发至系统内核,只将tcp_port/udp_port参数指定的端口号的数据包交由F-Stack处理。
  • tcp_port/udp_port

指定KNI处理的端口号,如有多个端口号用逗号","分隔,多个相连端口号也可以同时设置,如80-90

系统配置

当开启了KNI配置的F-Stack应用程序启动后,需在系统中设置虚拟网络接口并设置IP地址、掩码、MAC地址、路由表等信息才能正常完成F-Stack和内核间的数据交互。

【注意】 如果系统中没有额外的管理网卡,配置虚拟网卡地址的操作需通过执行脚本等方式与F-Stack应用程序一同启动,示例如下。

./start.sh -b /usr/local/nginx_fstack/sbin/nginx -c config.ini
sleep 10
ifconfig veth0 <ipaddr>  netmask <netmask>  broadcast <broadcast> hw ether <mac addr>
route add -net 0.0.0.0 gw <gateway> dev veth0
# route add -net <ip addr> [gw <gateway>] netmask <netmask> dev veth0 # other route rules

注意事项:

KNI创建的虚拟网卡和F-Stack中的用户态协议栈公用同一个网卡收发数据,所以KNI虚拟网卡的网络配置要跟FreeBSD协议的配置相同。

由于F-Stack不支持设置MAC地址,是直接获取物理网卡的MAC地址,并无法设置创建的虚拟网卡的MAC地址,所以在使用 ifconfig 设置虚拟网卡的地址时需要显示指定 hw ether 为物理网卡的实际MAC地址,防止在部分内核中默认是随机值导致无法正常使用KNI。

题图

题图为DPDK官方文档中的KNI示意图 Fig. 21.1 Components of a DPDK KNI Application

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CSDN技术头条

现代开发人员必备的十款工具,来看看你漏了啥?

几年前,作为一名开发人员,你需要的就是编辑器、编译器,以及某种版本控制系统。(可悲的是,许多开发人员目前仍然不能正确地使用版本控制系统) 现在,即使是要做基本的...

1908
来自专栏文渊之博

数据库复制(一)--复制介绍

介绍: 在运行着的数据库驱动的应用程序中,SQL复制能解决许多问题。由于发送/订阅的模式不是十分容易理解,复杂的脚本语言和监视复制系统也是需要一定的思想在里面。...

1706
来自专栏编程

前端异常监控系统

来源:子慕大诗人 http://www.cnblogs.com/1wen/p/7942608.html 导火索 有一天一个测试同事的一个移动端页面白屏了,看样子...

2977
来自专栏前端知识分享

第146天:移动H5前端性能优化

4. 基于联通3G网络平均338KB/s(2.71Mb/s),所以首屏资源不应超过1014KB

1024
来自专栏北京马哥教育

TeamViewer远程唤醒主机实战教程(多图

前言:首先感谢大家来到这里。这篇文章其实算是一个教程,文章中涉及到了TeamViewer,Mac OS X,TP-Link家用路由器,以及花生壳DDNS,对于新...

4704
来自专栏张善友的专栏

Nagios:企业级系统监控方案

在大多数情况下Cacti + RRDtool已经实现对系统各种参数的监测。但很多企业可能不满足于仅仅监测系统基本参数的需求,而是需要监测除基本参数之外的各种应用...

1905
来自专栏蓝天

Redis集群命令行部署工具

使用之前准备工作: 1)配置好与端口无关的公共redis.conf文件,和工具放在同一目录下 2)配置好与端口相关的模板redis-PORT....

752
来自专栏张善友的专栏

Windows Server 2003网络负载均衡的实现

       在现行的许多网络应用中,有时一台服务器往往不能满足客户端的要求,此时只能通过增加服务器来解决问题。   那么,有没有一个办法或者技术来解决此类问题...

1906
来自专栏北京马哥教育

Linux服务简介-关闭不需要的Linux服务

Linux服务(Linux services)对于每个应用Linux的用户来说都很重要。关闭不需要的服务,可以让Linux运行的更高效,但并不是所有的Linux...

3304
来自专栏ionic3+

有了ng-zorro-mobile,ionic4如虎添翼

前端一般会听过阿里的Ant Design,而对于angular使用者,大多也听过ng-zorro(Ant Design for Angular的PC版),最近一...

403

扫码关注云+社区