网络通信 频道

腾讯云姜凤波:全用户态服务开发套件F-Stack

    【IT168 现场报道】2017年10月20日,一年一度的中国系统架构师大会(SACC)再度盛装来袭。作为国内最负盛名的架构师盛会,SACC 2017云集了百余位国内外的优异专家,围绕云计算、人工智能、大数据、移动互联网、产业应用等热点领域进行思维碰撞和技术交流。

姜凤波:全用户态服务开发套件F-Stack
▲腾讯云高级工程师姜凤波

  在第三天的网络架构设计及优化实践(专场17),来自腾讯云高级工程师姜凤波先生以《F-Stack - 基于DPDK的全用户态网络服务开发套件》为主题进行了精彩分享。

姜凤波:全用户态服务开发套件F-Stack

  随着网卡性能的飞速发展,10GE 网卡已经大规模普及,25GE/40GE/100GE 网卡也在逐步推广,linux 内核在网络数据包处理上的瓶颈也越发明显,在传统的内核协议栈中,网卡通过硬件中断通知协议栈有新的数据包到达,内核的网卡驱动程序负责处理这个硬件中断,将数据包从网卡队列拷贝到内核开辟的缓冲区中(DMA),然后数据包经过一系列的协议处理流程,最后送到用户程序指定的缓冲区中。在这个过程中中断处理、内存拷贝、系统调用(锁、软中断、上下文切换)等严重影响了网络数据包的处理能力。操作系统的对应用程序和数据包处理的调度可能跨 CPU 调度,局部性失效进一步影响网络性能。

姜凤波:全用户态服务开发套件F-Stack

  而互联网的快速发展亟需高性能的网络处理能力,kernel bypass 方案也越来被人所接受,市场上也出现了多种类似技术,如 DPDK、NETMAP、PF_RING 等,其核心思想就是内核只用来处理控制流,所有数据流相关操作都在用户态进行处理,从而规避内核的包拷贝、线程调度、系统调用、中断等性能瓶颈,并辅以各种性能调优手段,从而达到更高的性能。其中 DPDK 因为更彻底的脱离内核调度以及活跃的社区支持从而得到了更广泛的使用。

  但是,业务的压力其实并不是一天两天的事情了,从web2.0开始,互联网的爆发式增长,迫使我们必须从这条路上躺一躺。所以从几年前开始腾讯云在从简到易的实践by kernel的方案,时至今日,已经形成完整的、成熟的、易用的一个开发工具栈。

姜凤波:全用户态服务开发套件F-Stack

  F-Stack 是一款兼顾高性能、易用性和通用性的网络开发框架,传统上 DPDK 大多用于 SDN、NFV、DNS 等简单的应用场景下,对于复杂的 TCP 协议栈上的七层应用很少,市面上已出现了部分用户态协议栈,如 mTCP、Mirage、lwIP、NUSE 等,也有用户态的编程框架,如 SeaStar 等,但统一的特点是应用程序接入门槛较高,不易于使用。

  F-Stack 使用纯 C 实现,充当胶水粘合了 DPDK、FreeBSD 用户态协议栈、Posix API、微线程框架和上层应用(Nginx、Redis),使绝大部分的网络应用可以通过直接修改配置或替换系统的网络接口即可接入 F-Stack,从而获得更高的网络性能。

  随后分享了采用FreeBSD原因,其中重要的原因是支持多种工具,包括了sysctl、ifconfig、Route、netstat、top、etc..以及F-Stack 在腾讯云发展历程。

姜凤波:全用户态服务开发套件F-Stack
▲更多信息尽在IT168现场报道专题 http://sacc.it168.com/topic2017/

0
相关文章