专栏首页F-Stack的专栏F-Stack Q&A 第一期

F-Stack Q&A 第一期

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系统的支持,出于业务考虑可能不会去做,但是出于情怀,后期可能会做。

本文分享自微信公众号 - FStack(F-Stack),作者:F-Stack

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-07-02

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • F-Stack Q&A 第二期

    Q1:请问再视频领域,媒体服务器,使用F-Stack是否合适? A1:F-Stack在纯推流的模式上是支持且合适的,如果有转码服务等计算密集型服务,需要等我们支...

    F-Stack
  • F-Stack 全用户态 (Kernel Bypass) 服务开发套件

    F-Stack 是一个全用户态的高性能的网络接入开发包,基于 DPDK、FreeBSD 协议栈、微线程接口等,用户只需要关注业务逻辑,简单的接入 F-Stack...

    F-Stack
  • F-Stack Q&A 第三期

    Q1:如果在一个阻塞型的socket上执行recv,会不会把相应的线程卡死,调用recv时该socket中没有数据包,导致sleep,sleep导致该线程没办法...

    F-Stack
  • 2019: A Blockchain Odyssey

    这次回国,基本都是马不停蹄地参加各种活动。本来事先确定的是上海的 KubeConf,深圳的 TC hackathon,以及在微软的区块链漫游指南讲座。就我个人而...

    tyrchen
  • 1分钟链圈| EOS大涨,突破20美元!巴菲特再次唱衰比特币:购买比特币不是投资

    区块链大本营
  • 云中看链: 区块链 – 万物互联时代信任的基石 (二)

    上期介绍了在互联网上传统的信任建立方式。然而传统的信任建立方式概况的说存在五个问题。第一个问题是成本高。要维持一个中心化的机构,开销很大。第二个问题是独立性、客...

    Henry Zhang
  • 第6封凌帅来信:币圈小白如何避免韭菜轮回

    新进入投资的小白很难避免被割韭菜的轮回。必须经历牛熊甚至几次牛熊才能成为合格的投资人。但区块链却不同,为小白避免被割提供了千载难缝的机会。

    凌帅出口
  • 并发编程之第四篇

    一间大屋子有两个功能 : 睡觉、学习、互不相干 现在小南要学习,小女要睡觉,但如果只用一间屋子(一个对象锁)的话,那么并发度很低 解决方法时准备多个房间(多...

    海仔
  • 币聪早报:摩根大通在区块链和加密之间的平衡法案

    多年来,跨国投资银行摩根大通(JPMorgan Chase)与加密货币有着格格不入的关系。虽然它对比特币和类似产品保持着明显的冷漠态度,但该金融机构已公开接受区...

    币聪财经
  • 日韩三巨头联手推出 AI 语音助手平台;蓝牙、WiFi 版树莓派发布 | 开发者头条

    树莓派也有蓝牙和 Wifi 啦! 日韩三巨头联手,推出 AI 语音助手 Clova 微软发布 Azure Stack 第三技术预览版本 每日推荐阅读 14 ...

    AI研习社

扫码关注云+社区

领取腾讯云代金券