展开

关键词

F-Stack 1.20 Roadmap

F-Stack 1.20 将于 2019Q3 发布, 同步 Roadmap。 支持 IPv6 F-Stack 框架支持 IPv6。 ifconfig、route、netstat 工具支持 IPv6 相关配置。 支持ICMPv6(NUD和MLD), 不支持DHCPv6。 zhanghaisen, AdamYYan, mscbg, boat0, xklllll, acerlawson, rmkm, yumm007, vanlink等提交的 PR,也欢迎更多朋友参与到 F-Stack

83330

F-Stack与Seastar对比

本文是将知乎网友的提问 《如何评价腾讯开源的基于 DPDK 和 BSD 协议栈的网络框架 f-stack?》,将回答讨论内容和我们的一些想法进行了整理。 与Seastar的对比相同F-Stack和Seastar都是基本完整的网络编程框架,包含了DPDK网络IO模块、用户态协议栈、异步编程接口等整个系统共用户接入使用。 F-Stack使用纯C开发(部分第三方组件使用了C++,F-Stack进行了封装),容易上手;Seastar使用了C++14,Future-Promise, Shared-nothing,message-passing F-Stack的协议栈移植自FreeBSD 11.0,功能完善但也冗余(去除了部分模块未编译进F-Stack),调试分析工具完善,运行稳定;Seastar按照RFC协议自研协议栈,更精简,但外网运行不稳定 A:目前版本的F-Stack单核性能比内核协议栈高20-50%左右,多核优势更明显,后续会持续进行优化。

1.6K90
  • 广告
    关闭

    90+款云产品免费体验

    提供包括云服务器,云数据库在内的90+款云计算产品。打造一站式的云产品试用服务,助力开发者和企业零门槛上云。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    F-Stack Q&A 第三期

    Q2:在Windows上解压F-Stack后传到linux上进行编译,编译失败? A3:如果不需要使用这个网卡管理服务器,启动F-Stack的应用就可以了,然后 F-Stack里的 dpdk 会启动网卡并接收处理包的;如果还需要这个网卡管理服务器,还需要在配置文件中开启kni功能,启动 _in_one_minute.mdQ4:F-Stack是否有移植ipfw的计划? Q6:在使用F-Stack库时,其他线程为什么不能调用ff_sendto函数,有什么解决办法吗? F-Stack的开源会持续进行下去,但是特性和功能的开发肯定优先内部项目的需求,F-Stack欢迎所有人的参与,无论是建议还是贡献代码。Q9:请问一下发送端零拷贝怎么实现呢?

    1.7K100

    F-Stack Q&A 第二期

    Q1:请问再视频领域,媒体服务器,使用F-Stack是否合适?A1:F-Stack在纯推流的模式上是支持且合适的,如果有转码服务等计算密集型服务,需要等我们支持中断+轮询模式之后更合适。 Q2:请问,安装F-Stack对网卡有没有要求? Q7:现在F-Stack的宿主程序是独占网卡吗?A1:F-Stack启动后就会接管并独占网卡,但可以通过KNI与内核通信。 Q8:如果在F-Stack的IP层要支持IPSec,有什么建议吗?A8:F-Stack使用的FreeBSD协议栈包含IPSec模块,但当前尚未编译进F-Stack,后续将会支持。 Q11:请问一下,F-Stack 的文档中好像没有提到 UDP 的 QPS,实际应用中 DNS SERVER 使用 F-Stack 能达到多大的 QPS 呢,测试配置任何?

    1.7K100

    F-Stack Q&A 第一期

    A1:F-Stack暂时只支持轮询模式,后续会支持中断+轮询模式,避免与计算密集型业务抢占CPU及节省能源。 Q2:F-Stack如何实现zerco copy? Q3:F-Stack的运行环境有何要求?A3:目前F-Stack主要测试过的运行环境如下。 Q7:方便透露下F-Stack的业务场景吗?A7:F-Stack的主要业务场景就是高性能的网络接入服务,尤其是L4L7的网络业务可以快速使用F-Stack获得更高的网络性能。 Q10:F-Stack跑起来是那种cpu 100%模式吗?A10:是的,F-Stack当前只支持轮询模式,后续会支持中断+轮询模式。 Q12:F-Stack只支持Linux系统吗,为什么F-Stack不做到FreeBSD系统上,工作量应该比在Linux上做小?

    1.8K61

    F-Stack KNI 配置注意事项

    KNI介绍KNI(Kernel NIC Interface)内核网卡接口,是DPDK中用于与内核通信的模块,在主要的业务流程中可能并不需要,但在部分场景下,如服务器所有网卡都被F-Stack接管用于业务 KNI配置因为开启KNI将对收到所有的数据包按转发策略进行检查,会对性能造成一定的影响,所以在F-Stack中默认配置关闭了KNI选项,如有需要可以在控制文件config.ini中修改配置开启KNI并设置转发规则 当method参数设置为reject时,默认素有的数据包都通过KNI转发至系统内核,只将tcp_portudp_port参数指定的端口号的数据包交由F-Stack处理。 IP地址、掩码、MAC地址、路由表等信息才能正常完成F-Stack和内核间的数据交互。 【注意】 如果系统中没有额外的管理网卡,配置虚拟网卡地址的操作需通过执行脚本等方式与F-Stack应用程序一同启动,示例如下。.

    2.8K10

    F-Stack KNI配置注意事项

    F-Stack接管用于业务(或服务器本身只有单网卡),其他如SSH登录管理等数据等就必须开启KNI来与内核进行数据交互。? 当method参数设置为reject时,默认素有的数据包都通过KNI转发至系统内核,只将tcp_portudp_port参数指定的端口号的数据包交由F-Stack处理。 IP地址、掩码、MAC地址、路由表等信息才能正常完成F-Stack和内核间的数据交互。 【注意】 如果系统中没有额外的管理网卡,配置虚拟网卡地址的操作需通过执行脚本等方式与F-Stack应用程序一同启动,示例如下。. KNI创建的虚拟网卡和F-Stack中的用户态协议栈公用同一个网卡收发数据,所以KNI虚拟网卡的网络配置要跟FreeBSD协议的配置相同。 2.

    1.1K80

    F-Stack IPv6 的支持与使用

    本文将简单介绍 F-Stack 支持 IPv6 所做的修改,如何使用以及相关注意事项。 F-Stack 如何支持 IPv6 以下所列为 F-Stack 支持 IPv6 所进行的修改,具体改动细节可查看 github 相关 commits。 相关系统工具 参考以下命令配置和查看 IPv6 的相关地址和路由信息 # 为 f-stack-0 配置 IPv6 地址ff_ifconfig f-stack-0 inet6 auto_linklocal 0 # 查看本机端口监听和连接信息ff_netstat -na 在 F-Stack 配置了 IPv6 地址后,F-Stack 会发送 MLD 组播侦听报文加入广播组接收路由组播 RA 信息,并且会发送相关 其他在F-Stack 使用 IPv6 的注意事项 F-Stack 当前支持 ICMPv6,包括邻居发现协议(ND)和组播侦听发现协议(MLD),但不支持 DHCPv6,主要是 FreeBSD 本身对 DHCPv6

    1.2K30

    F-Stack vlan 的支持与使用

    限于 Vlan 测试环境的缺失, F-Stack 项目初期未对 Vlan 进行完全的支持,仅支持配置是否进行 Vlan 的硬件卸载,当交换机配置了服务器返回的包无需打 Vlan tag 本文将简单介绍 F-Stack 支持 Vlan 所做的修改,如何使用以及相关注意事项。 F-Stack 如何支持 Vlan  以下所列为 F-Stack 支持 Vlan 所进行的修改,具体改动细节可查看 github 相关 commits。 工具支持 原有 ifconfig等工具已经支持 Vlan 配置,无需修改 F-Stack 如何使用 Vlan       下面给出 F-Stack 和 KNI 分别配置 Vlan 的命令参考,供参考并根据自己的网络情况实际进行配置 createff_ifconfig f-stack-0.10 inet netmask # 清除原网卡上的 IP 信息,或者原网卡配置的是无效 IP 则不必处理ff_ifconfig f-stack-

    92540

    F-Stack 之 kqueue 封装为 epoll 介绍

    F-Stack是一个全用户态的高性能的网络接入开发包,基于DPDK、FreeBSD协议栈、微线程接口等,适用于各种需要网络接入的业务,用户只需要关注业务逻辑,简单的接入F-Stack即可实现高性能的网络服务器 F-Stack中使用的FreeBSD协议栈的高性能异步事件通知的API是kqueue,而Linux系统上则是我们熟悉的epoll,大量的Linux网络server都是基于epoll事件通知机制,为降低已有服务器接入 F-Stack的修改难度,F-Stack协议栈实现了把kqueue封装为epoll接口,提供的API如下:: int ff_epoll_create(int size): 创建epoll fd,底层实际调用 events.data.fd); } } else { fprintf(stderr, unknown event: %8.8Xn, events.events); } } }} 实际运行结果: 更多具体信息请访问F-Stack

    1.8K10

    F-Stack之kqueue封装为epoll介绍

    F-Stack是一个全用户态的高性能的网络接入开发包,基于DPDK、FreeBSD协议栈、微线程接口等,适用于各种需要网络接入的业务,用户只需要关注业务逻辑,简单的接入F-Stack即可实现高性能的网络服务器 F-Stack中使用的FreeBSD协议栈的高性能异步事件通知的API是kqueue,而Linux系统上则是我们熟悉的epoll,大量的Linux网络server都是基于epoll事件通知机制,为降低已有服务器接入 F-Stack的修改难度,F-Stack协议栈实现了把kqueue封装为epoll接口,提供的API如下:int ff_epoll_create(int size):创建epoll fd,底层实际调用FreeBSD F-Stack 的 github 主页源代码:https:github.comF-Stackf-stack

    1K110

    F-Stack 已支持 FreeBSD 13.0 正式版

    FreeBSD 13.0 正式版在 4 月份发布,正式支持了 BBR,我们在 7 月底开始进行 FreeBSD 13.0 的升级工作,用了2个周的空闲时间进行了 lib 库的基本移植,但是后续个人大量精力投入了 F-Stack 目前相关代码还未完成全部调试和测试,还存在一些问题,已知的包括:  F-Stack lib 库的 NETGRAPH 和 IPFW 的还不能编译使用,需要修改。 IPv6 尚未进行更多测试。

    29260

    F-Stack参加 DPDK中国技术峰会2017

    F-Stack在峰会进行了《F-Stack, a full user space network service on DPDK》的主题分享,介绍了F-Stack的由来、技术架构和实现,以及在腾讯云COSCDNDNS 腾讯云在业务在快速发展中面临大量的L7接入服务,亟需提升接入层性能以节省服务器资源和应对DDoS攻击,所以开发了基于DPDK、FreeBSD协议栈的网络开发套件F-Stack,并提供了协程和类POSIX 接着介绍了F-Stack总体架构和各个模块所做的一些工作,如为什么选择FreeBSD协议栈、FreeBSD协议栈移植到linux用户态所做的工作、类POSIX接口和协程接口的实现、网络工具的移植等。 F-Stack PPT下载地址:https:dpdksummit.comArchivepdf2017AsiaDPDK-China2017-Wang-FStack.pdfF-Stack 视频资料地址:http

    83590

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

    F-Stack 开发框架F-Stack 是一款兼顾高性能、易用性和通用性的网络开发框架,传统上 DPDK 大多用于 SDN、NFV、DNS 等简单的应用场景下,对于复杂的 TCP 协议栈上的七层应用很少 F-Stack,从而获得更高的网络性能。 F-Stack 架构F-Stack 总体架构如上图所示,具有以下特点:使用多进程无共享架构。各进程绑定独立的网卡队列和 CPU,请求通过设置网卡 RSS 散落到各进程进行处理。 官方网站,官网资源持续完善中,如果您的项目使用了 F-Stack,也希望通知我们,让我们加入到应用列表中。 微信公众号:搜索公众号FStack关注,会不定期发布 F-Stack 的技术细节、使用技巧和应用场景等文章,同时欢迎投稿。微信讨论群:我们建立了 F-Stack 讨论群,欢迎联系我们拉您加入。

    16.2K50

    F-Stack 助力 HTTP 网络服务器性能提升

    F-Stack 提供了一个低门槛、高性能、完整协议栈能力的网络服务器解决方案,F-Stack 使用 Intel DPDK 开发套件提高网络收发包性能,移植 FreeBSD 协议栈至用户态,提供了 Posix 名词解释F-Stack:F-Stack是一个全用户态的高性能的网络接入开发包,基于DPDK、FreeBSD协议栈、微线程接口等,用户只需要关注业务逻辑,简单的接入F-Stack即可实现高性能的网络服务器 在接入 F-Stack 之后,性能可以达到百万 TPS,F-Stack 使用了多进程的架构,每个进程有单独的协议栈,无资源共享和竞争,虽然单进程协议栈提升并不明显(约20%-50%),但是整体系统性能有了质的提升 下图为 F-Stack 上进行短连接的 HTTP TPS 测试数据。? 但是 F-Stack 此时依然有其实用价值,因为 F-Stack 除了多进程对共享资源的优化外,全用户态的协议栈同时也对锁竞争、内存拷贝、中断处理、上下文切换等进行了优化,能够消耗更少的资源达到相同的性能表现

    1.5K80

    FreeBSD下的工具(sysctl、netstat等)如何移植到F-Stack

    但是由于在用户态运行了FreeBSD的协议栈,我们可以移植FreeBSD下的这些工具到F-Stack。 下面以sysctl为例,介绍一下如何移植到F-Stack。 这里出入的ring是单生产者单消费者模式的,使用了两个,一个用于F-Stack出,工具入,一个用于F-Stack入,工具出。 是多进程架构,并且每个进程都有一个独立的FreeBSD栈,所以新增了一个参数proc_id,用于指定与哪个F-Stack进程通信,这个算是一个不方便的地方。 运行效果: 除了新增加了一个-p参数用于指定与哪个F-Stack进程通信外,其他参数与原生FreeBSD一致,具体可参考man page。

    1.4K10

    FreeBSD下的工具(sysctl、netstat等)如何移植到F-Stack

    F-Stack基于DPDK,绕过内核的协议栈,移植了FreeBSD协议栈到用户态,在大幅提高性能的同时,常规网络设置分析工具(如sysctl、netstat、ifconfig、route等)都无法直接使用 但是由于在用户态运行了FreeBSD的协议栈,我们可以移植FreeBSD下的这些工具到F-Stack。 下面以sysctl为例,介绍一下如何移植到F-Stack。 这里出入的ring是单生产者单消费者模式的,使用了两个,一个用于F-Stack出,工具入,一个用于F-Stack入,工具出。 是多进程架构,并且每个进程都有一个独立的FreeBSD栈,所以新增了一个参数proc_id,用于指定与哪个F-Stack进程通信,这个算是一个不方便的地方。

    87890

    全用户态网络开发套件 F-Stack 架构分析

    F-Stack是一个全用户态(kernel bypass)的高性能的网络接入开发包,基于DPDK、FreeBSD协议栈、微线程接口等,适用于各种需要网络接入的业务,用户只需要关注业务逻辑,简单的接入F-Stack 本文介绍F-Stack的详细架构及如何解决了内核协议栈面临的问题。传统内核协议栈的性能瓶颈在传统的内核协议栈中,网络包处理存在诸多瓶颈,严重影响网络包的收发性能。 F-Stack总体架构无共享架构F-Stack使用了多进程的无共享架构,每个进程CPU、网卡队列绑定,具有无竞争、零拷贝、线性扩展、NUMA友好等特点。 后续我们会提供类似LD_PRELOAD的方式,使得现有程序尽量无改动迁移到F-Stack。微线程框架,移植自腾讯开源的毫秒服务MSEC里使用的spp_rpc。 Roadmap继续移植各种网络配置工具,方便F-Stack在各种网络环境(如GIFGREVxLAN等隧道)下的部署使用。移植SPDK的用户态驱动至F-Stack,提升磁盘IO性能。

    8.2K60

    全用户态网络开发套件F-Stack架构分析

    F-Stack是一个全用户态(kernel bypass)的高性能的网络接入开发包,基于DPDK、FreeBSD协议栈、微线程接口等,适用于各种需要网络接入的业务,用户只需要关注业务逻辑,简单的接入F-Stack 本文介绍F-Stack的详细架构及如何解决内核协议栈面临的问题。传统内核协议栈的性能瓶颈在传统的内核协议栈中,网络包处理存在诸多瓶颈,严重影响网络包的收发性能。性能瓶颈主要包括以下几个方面 ? F-Stack总体架构无共享架构?F-Stack使用了多进程的无共享架构,每个进程CPU、网卡队列绑定,具有无竞争、零拷贝、线性扩展、NUMA友好等特点。 后续我们会提供类似LD_PRELOAD的方式,使得现有程序尽量无改动迁移到F-Stack。微线程框架,移植自腾讯开源的毫秒服务MSEC里使用的spp_rpc。 继续移植各种网络配置工具,方便F-Stack在各种网络环境(如GIFGREVxLAN等隧道)下的部署使用。移植SPDK的用户态驱动至F-Stack,提升磁盘IO性能。

    1.8K101

    如何对比 F-Stack 与 Seastar 这两个网络编程框架?

    5月13号知乎网友的提问 《如何评价腾讯开源的基于 DPDK 和 BSD 协议栈的网络框架 f-stack?》,我们将讨论内容和我们的一些想法进行了整理。 与Seastar的对比相同F-Stack和Seastar都是基本完整的网络编程框架,包含了DPDK网络IO模块、用户态协议栈、异步编程接口等整个系统共用户接入使用。 F-Stack使用纯C开发(部分第三方组件使用了C++,F-Stack进行了封装),容易上手;Seastar使用了C++14,Future-Promise, Shared-nothing,message-passing F-Stack的协议栈移植自FreeBSD 11.0,功能完善但也冗余(去除了部分模块未编译进F-Stack),调试分析工具完善,运行稳定;Seastar按照RFC协议自研协议栈,更精简,但外网运行不稳定 Q:单核性能提升有多少A:目前版本的F-Stack单核性能比内核协议栈高20-50%左右,多核优势更明显,后续会持续进

    6.1K00

    扫码关注云+社区

    领取腾讯云代金券