前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >F-Stack Q&A 第一期

F-Stack Q&A 第一期

作者头像
F-Stack
发布2018-01-31 10:25:31
2.9K0
发布2018-01-31 10:25:31
举报
文章被收录于专栏:F-Stack的专栏F-Stack的专栏

Q1:F-Stack有中断模式吗,有计划支持吗?在计算密集型的应用中,轮询模式会占用更多的CPU资源? A1:F-Stack暂时只支持轮询模式,后续会支持中断+轮询模式,避免与计算密集型业务抢占CPU及节省能源。 Q2:F-Stack如何实现zerco copy? A2:目前F-Stack尚未做到完全零拷贝。在收包时使用FreeBSD的mbuf ext add可以避免拷贝。在发包时尚存在拷贝,后续会优化为无拷贝,主要的方案是自己实现内存管理,完全使用hugepage。 Q3:F-Stack的运行环境有何要求? A3:目前F-Stack主要测试过的运行环境如下。 操作系统:Linux 发行版本:Redhat/CentOS 7.0+, Ubuntu14.04+, SUSE linux 12 内核版本:3.10.0+ GCC版本:4.8.0+ 网卡要求:参考DPDK的[list of supported NICs ](http://dpdk.org/doc/nics) 其他版本的测试也在进行中,如kernel 2.6.33+和gcc 4.5+相关版本(如Ubuntu11.04)的支持测试。 Q4:Roadmap里有提到iptables/hook, 是要在FreeBSD做一套类似netfilter? FreeBSD网络配置大量依赖ifconfig, 不像Linux基本都能用 iproute2, 有没有计划移植 FreeBSD 版ifconfig, 这样就能动态修改IP? A4:FreeBSD的类似netfilter的叫netgraph,后面会进行移植。 sysctl/ifconfig/route工具已经移植到F-Stack,支持动态修改各进程协议栈的网络参数,动态修改IP,创建GIF(IP-IP)、VIP等虚拟设备。在使用上需要注意的是因为每个F-Stack进程都有一个FreeBSD的协议栈,在修改或设置相关内容时需指定进程号分别进行设置。具体信息可以查看[tools](https://github.com/F-Stack/f-stack/tree/master/tools)目录的相关文档和源代码。 Q5:F-Stack为什么会选择FreeBSD的协议栈? A5:我们最早是自研协议栈,后来发现自研工作量太大,维护成本太高。然后选择开源的协议栈,因为实际业务部署的网络环境千差万别,而各种简易协议栈在功能性、稳定性上都有很大的不足,无法直接应用到实际的业务环境中。 全功能的协议栈FreeBSD和Linux对比,Linux协议栈虽然高效,但实现复杂,FreeBSD的代码更清晰,便于阅读开发;另外Linux使用GPL协议,可能会限制部分用户的使用。 Q6:FreeBSD一般应用在什么场景? A6:FreeBSD主要在路由器,DPI设备,嵌入式设备等场景中广泛使用,也有少部分互联网厂商使用了大量的FreeBSD系统。 Q7:方便透露下F-Stack的业务场景吗? A7:F-Stack的主要业务场景就是高性能的网络接入服务,尤其是L4/L7的网络业务可以快速使用F-Stack获得更高的网络性能。当然不依赖协议栈的L2/L3应用依然可以使用F-Stack。 Q8:F-Stack为什么不通过代码注入劫持C库与系统调用的方式来提供API呢? A8:目前F-Stack提供的类posix API还需要应用修改初始化函数和修改网络接口调用,后续会提供类似LD_PRELOAD的方式来支持,当前还有一些问题正在修改,如Nginx的fork函数,UNIX SOCKET等相关接口需要支持。 Q9:F-Stack的ARP都是自己主动去维护的吗? A9:F-Stack是多进程架构,每个进程都有一套协议栈,对于ARP协议的处理是这样进行的,在程序初始化时创建了用于多进程间通信的rte_ring,当任何一个F-Stack进程收到ARP包后,都会转发至其他所有进程的协议栈,如果启用了KNI,会同时转发至系统内核。 Q10:F-Stack跑起来是那种cpu 100%模式吗? A10:是的,F-Stack当前只支持轮询模式,后续会支持中断+轮询模式。 Q11:F-Stack的IP协议栈是完整版的功能的吗,是否支持SCTP? A11:F-Stack使用了FreeBSD协议栈,包含完整的TCP/IP协议栈的功能,和SCTP的相关代码,但当前版本并未将SCTP模块编译进来,后续会考虑编译SCTP作为TCP的另一个选择。 Q12:F-Stack只支持Linux系统吗,为什么F-Stack不做到FreeBSD系统上,工作量应该比在Linux上做小? A12:我们现有的业务服务器都是Linux系统,对于FreeBSD系统的支持,出于业务考虑可能不会去做,但是出于情怀,后期可能会做。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-07-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FStack 微信公众号,前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档