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)

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏猛牛哥的博客

centos安装aria2

2.2K3
来自专栏邹立巍的专栏

Linux 的进程间通信:管道

管道,英文为 pipe 。这是一个我们在学习 Linux 命令行的时候就会引入的一个很重要的概念。管道是UNIX 环境中历史最悠久的进程间通信方式。本文主要说明...

9462
来自专栏FreeBuf

巡风风险扫描开源系统的一些演变

同程SRC团队开源巡风资产风险控制系统也有一段时间了,我们临时用它作为一个简单的soc平台来使用,期间也做了一些定制化开发,此次分享,权当做个笔记吧。基于巡风我...

1392
来自专栏从零开始学自动化测试

git+jenkins在windows机器上新建一个slave节点

前言 我们在跑自动化项目的时候,希望有单独的测试机能跑自动化项目,并且能集成到jenkins上构建任务。如果公司已经有jenkins环境了,那无需重新搭建。 只...

4426
来自专栏FreeBuf

如何突破Windows环境限制打开“命令提示符”

如今,许多企业或组织都会通过使用受限的windows环境来减少系统表面的漏洞。系统加固的越好,那么也就意味着能被访问和使用到的功能就越少。 我最近遇到的情况是,...

2946
来自专栏linux运维学习

linux学习第六十篇:Linux监控平台介绍,zabbix监控介绍,安装zabbix,忘记Admin密码如何做

Linux监控平台介绍 常见开源监控软件:cacti、nagios、zabbix、smokeping、open-falcon等等 cacti、smokeping...

4034
来自专栏JMCui

Hybris安装和各个Extention简单介绍

前言:突然想好好梳理一下这几个月所学的内容了,顺便让自己的知识有一个系统的框架。这种安装仅仅适用于开发环境,不适于生产环境。 一、  安装JDK 请安装最新的O...

51411
来自专栏刘明的小酒馆

事务与一致性:刚性or柔性?

在高并发场景下,分布式储存和处理已经是常用手段。但分布式的结构势必会带来“不一致”的麻烦问题,而事务正是解决这一问题而引入的一种概念和方案。我们常把它当做并发操...

91010
来自专栏容器云生态

Openstack平台搭建之第一天 基于RDO方式搭建

openstck基于web方式的rdo部署 If you have any question ,please contact me by weichuangxx...

33510
来自专栏芋道源码1024

Java 工程师居家必备的 Intellij IDEA Top10 插件

支持lombok的各种注解,从此不用写getter setter这些 可以把注解还原为原本的java代码 非常方便

5255

扫码关注云+社区

领取腾讯云代金券