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 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何在Ubuntu 14.04上使用Iptables实现基本防火墙模板

实施防火墙是保护服务器的重要一步。其中很大一部分是在于对您的网络实施流量限制有决定性作用的个别规则和政策。防火墙iptables也允许您对应用规则的结构框架有发...

500
来自专栏龙首琴剑庐

Tomcat6/7应用服务器-禁用RC4等弱密码套件

最近更新了新版浏览器的同学是不是偶尔会遇到SSL加密协议不灵,访问不了的情况? 最典型的例子是使用FF39+访问某些网站时报错:Error code: ssl...

3455
来自专栏F-Stack的专栏

F-Stack KNI配置注意事项

F-Stack KNI配置注意事项 KNI介绍 KNI(Kernel NIC Interface)内核网卡接口,是DPDK中用于与内核通信的模块,在主要的业务流...

3028
来自专栏依乐祝

.NET Core实战项目之CMS 第三章 入门篇-源码解析配置文件及依赖注入

上篇文章我给大家讲解了ASP.NET Core的概念及为什么使用它,接着带着你一步一步的配置了.NET Core的开发环境并创建了一个ASP.NET Core的...

462
来自专栏jeremy的技术点滴

linux下进行端口映射

3887
来自专栏散尽浮华

Mysql备份系列(2)--mysqldump备份(全量+增量)方案操作记录

在日常运维工作中,对mysql数据库的备份是万分重要的,以防在数据库表丢失或损坏情况出现,可以及时恢复数据。 线上数据库备份场景: 每周日执行一次全量备份,然后...

3459
来自专栏linux驱动个人学习

Git的gc功能

Git的底层并没有采用 CVS、SVN 底层所采用的那套增量式文件系统,而是采用一套自行维护的存储文件系统。当文件变动发生提交时,该文件系统存储的不是文件的差异...

3225
来自专栏知识分享

轻松使用ESP8266

自己做了一个轻松配置8266的板子,配合上位机很方便的就配置好8266的各种模式,上电自动运行上次配置的模式 而且多加了四路模拟量采集,5路IO口输出,,其中前...

3115
来自专栏SpringSpace.cn

Spring Boot 2.0 执行器端点(Actuator Endpoint)精简模式 顶

在基于Spring Boot的应用程序内通过Endpoint可以根据应用程序业务需求实现自定义的监控接口,但目前的版本中实现自定义Endpoint需要实现该接口...

1303
来自专栏张善友的专栏

FileSystemWatcher 导致Mono ASP.NET应用程序CPU使用率比较高

大家都知道ASP.NET 网站应用程序(WebSite)可以自动检测到你的ASP.NET应用的文件修改,其中要使用到的就是监视磁盘上的文件/目录的更改,以便应用...

19110

扫码关注云+社区