F-Stack KNI配置注意事项

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

注意事项:

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

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

题图

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

原文地址http://dpdk.org/doc/guides/progguide/kernelnic_interface.html

原文发布于微信公众号 - FStack(F-Stack)

原文发表时间:2017-05-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

Service Fabric 与 Ocelot 集成

云应用程序通常都需要使用前端网关,为用户、设备或其他应用程序提供同一个入口点。 在 Service Fabric 中,网关可以是任意无状态服务(如 ASP.NE...

26730
来自专栏农夫安全

浅谈XXE攻击

前言 现在越来越多主要的web程序被发现和报告存在XXE(XML External Entity attack)漏洞,比如说facebook、paypal等等。...

36260
来自专栏王二麻子IT技术交流园地

二、VueJs 填坑日记之基础项目构建

在上一篇文章中,大致介绍了一下本系列博文以及学习vuejs我们需要了解的一些概念,希望大家认真阅读,所谓知己知彼,百战百胜,学习也一样,工欲善其事,必先利其器,...

22470
来自专栏FreeBuf

浅谈XXE攻击

0×00. 介绍 现在越来越多主要的web程序被发现和报告存在XXE(XML External Entity attack)漏洞,比如说facebook、pa...

22780
来自专栏全栈数据化营销

用python爬取qq空间说说

环境:PyCharm+Chorme+MongoDB Window10 爬虫爬取数据的过程,也类似于普通用户打开网页的过程。所以当我们想要打开浏览器去获取好友空间...

1K130
来自专栏Java帮帮-微信公众号-技术文章全总结

Java企业面试——Javaweb

2.Javaweb阶段 2.1 Ajax你以前用过么?简单介绍一下 AJAX = 异步 JavaScript 和 XML。 AJAX 是一种用于创建快速...

37880
来自专栏Java帮帮-微信公众号-技术文章全总结

Hessian体验与分析【面试+工作】

Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能;相比WebService,Hessian更简单、快捷。

11820
来自专栏自动化测试实战

新版本PyCharm Debug mode off解决方案

就是即使代码中增加了app.debug=True执行时这里仍然是off,网上答案说在Edit Configurations中勾选FLASK_DEBUG:

15930
来自专栏好好学java的技术栈

java工程师必备linux常用命令,这篇文章就够了

bash 是一个为GNU计划编写的Unix shell。它的名字是一系列缩写:Bourne-Again SHell — 这是关于Bourne shell(sh)...

34410
来自专栏性能与架构

大规模服务器管理利器 Fabric

Fabric 是什么 Fabric 是对服务器进行系统管理、应用部署的自动化脚本工具,特点是可以便捷的支持多台服务器 在一个脚本文件中就可以对多台服务器执行...

45660

扫码关注云+社区

领取腾讯云代金券