在现代计算环境中,虚拟网络设备在实现灵活的网络配置和隔离方面发挥了至关重要的作用🔧,特别是在容器化和虚拟化技术广泛应用的今天🌐。而Linux网络协议栈则是操作系统处理网络通信的核心💻,它支持广泛的协议和网络服务🌍,确保数据正确地在网络中传输。本文将深入分析虚拟网络设备与Linux网络协议栈的关联,揭示它们如何共同工作以支持复杂的网络需求。
本文是将知乎网友的提问 《如何评价腾讯开源的基于 DPDK 和 BSD 协议栈的网络框架 f-stack?》,将回答讨论内容和我们的一些想法进行了整理。 项目背景 F-Stack 这个项目起始于DNSPod的授权DNS项目,当时是12年,DPDK还未开源的时候,我们就基于DPDK做了授权DNS,做完的时候正好DPDK也开源了,正式上线后10GE单网卡性能达到1100万qps,后面又实现了一个简易的TCP协议栈用于支持TCP DNS。 后来DNSPod合并进入腾讯云,腾讯云有大量业务需要高性能的接入服务,而D
零拷贝作用 : 在网络编程中 , 如果要进行性能优化 , 肯定要涉及到零拷贝 , 使用零拷贝能极大的提升数据传输性能 ;
Linux内核是高并发服务的关键组件之一。以下是一些可用于优化Linux内核的配置。
原文链接:https://blog.csdn.net/dog250/article/details/46666029
Q1:F-Stack有中断模式吗,有计划支持吗?在计算密集型的应用中,轮询模式会占用更多的CPU资源? A1:F-Stack暂时只支持轮询模式,后续会支持中断+轮询模式,避免与计算密集型业务抢占CPU及节省能源。 Q2:F-Stack如何实现zerco copy? A2:目前F-Stack尚未做到完全零拷贝。在收包时使用FreeBSD的mbuf ext add可以避免拷贝。在发包时尚存在拷贝,后续会优化为无拷贝,主要的方案是自己实现内存管理,完全使用hugepage。 Q3:F-Stack的运行环境有何
过去几十年互联网呈爆发式的增长,内容的丰富以及层出不穷的DDoS攻击等,对网络性能提出了极大的挑战,也同样促进了网络基础设施的快速发展。运营商的带宽越来越大,CPU/网卡等硬件的性能也会越来越强。但在很长时间内,软件的性能提升落后于硬件的性能提升,并严重限制了应用程序的性能,大部分时间不得不依靠堆机器来应对,造成了大量的资源浪费和成本提高。 随着软件的不断发展,在新世纪的第一个10年时,通过多线程和事件驱动(kqueue/epoll等)解决了C10K的问题。但是在第二个10年却不堪重负,亟需新的解
过去几十年互联网呈爆发式的增长,内容的丰富以及层出不穷的DDoS攻击等,对网络性能提出了极大的挑战,也同样促进了网络基础设施的快速发展。运营商的带宽越来越大,CPU/网卡等硬件的性能也会越来越强。但在很长时间内,软件的性能提升落后于硬件的性能提升,并严重限制了应用程序的性能,大部分时间不得不依靠堆机器来应对,造成了大量的资源浪费和成本提高。
昨晚读了一篇Paper:https://penberg.org/parakernel-hotos19.pdf
作者Liam,海外老码农,对应用密码学、CPU微架构、高速网络通信等领域都有所涉猎。
什么是虚拟化 虚拟化是指计算机元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。 几种虚拟化软件介绍 RedHat KVM 虚拟化方式:完全虚拟化 架构:寄居架构(linux内核);祼金属架构RHEV-H 特点:祼金属架构RHEV-H或在关键的硬盘和网卡上支持半虚拟化VirtIO,达到最佳性能。 I/
现在很多人都在诟病Linux内核协议栈收包效率低,不管他们是真的懂还是一点都不懂只是听别人说的,反正就是在一味地怼Linux内核协议栈,他们的武器貌似只有DPDK。
将 Kubernetes 的 CNI 从其他组件切换为 Cilium, 已经可以有效地提升网络的性能. 但是通过对 Cilium 不同模式的切换/功能的启用, 可以进一步提升 Cilium 的网络性能. 具体调优项包括不限于:
冯克环,腾讯云异构计算研发工程师,专注于云上 AI 训练加速相关技术,对 GPU 虚拟化、GPU 训练加速有深厚的积累,目前负责腾讯云 AI 训练加速相关技术的研发以及性能优化工作。 张锐,腾讯云网络虚拟化研发工程师,在之前的工作中专注于 AI 训练网络优化方面的工作,在 RDMA、GPU 通信优化等方面有较多经验,目前专注于做云上AI训练通信优化方面的工作。 背景 随着 AI 模型规模的越来越大,训练数据的越来越多,用户对模型的迭代效率也要求越来越高,单个 GPU 的算力显然无法满足大部分业务场景,使
作者:wentaomao,腾讯 TEG 后台开发工程师 前言 QUIC 作为互联网下一代标准传输协议,能够明显提升业务访问速度,提升弱网请求成功率以及改善网络变化场景下的平滑体验。 STGW 作为公司级的 7 层接入网关以及腾讯云 CLB(负载均衡器)的底层支撑框架,每天都为公司内部业务和腾讯云外部客户提供数万亿次的请求服务,对请求处理的性能、传输效率、运营的可靠性都有非常严苛的要求。 本文主要介绍 STGW 大规模运营 QUIC 过程中的一些经验和开发工作。 QUIC 简介 QUIC 的诞生和发展
很高兴大家回到这次深潜之旅,让我们继续挖掘 NGINX 的潜力。今天我的分享包括四个部分。首先从整体上来看一下 NGINX的协议栈如何进行优化。接着我们将按照 OSI七层网络模型,自上而下依次讨论HTTP协议栈、TLS/SSL协议栈以及TCP/IP协议栈。
HTTP 协议因其易用性和普适性得到了大规模的普及,我们说HTTP协议是互联网的基石一点也不为过,当前提供HTTP服务的Server性能要求越来越高,如何提高 HTTP 服务器的性能变得非常重要。近年来网卡性能快速发展,给高性能HTTP服务提供了硬件支持,但是linux 内核却越来越成为高性能网络服务器的瓶颈。 HTTP 的传输层协议为 TCP ,TCP作为面向连接的协议能够提供可靠传输,但是在性能有非常大的短板,尤其在短连接网络业务服务中,受限于PCB表锁竞争等因素,系统内核大并发创建 T
背景 随着 AI 模型规模的越来越大,训练数据的越来越多,用户对模型的迭代效率也要求越来越高,单个 GPU 的算力显然无法满足大部分业务场景,使用单机多卡或多机多卡训练成为趋势。单机多卡训练场景的参数同步借助目前 NVIDIA NVLINK 技术已经得到了很好地解决,而多机多卡场景由于对网络通信的强依赖就没有那么简单。 目前网卡厂商提供的 RoCE 等 RDMA 技术,使得多机通信效率大幅提升,但是如何在25G或 50G VPC 网络环境下提升分布式训练系统的通信效率,仍然是目前公有云厂商亟需解决的
大家好,我是来自哔哩哔哩的郑龙,2012年至2017年我在广播电视行业从事工作,2017年我转型至互联网行业并加入了哔哩哔哩的视频云团队。在视频云团队的三年里,主要参与了哔哩哔哩的亿秒级日吞吐视频转码系统的开发与自营视频窄带高清技术的探索,以上两项服务都已上线并长期运行。
本文介绍了如何使用 F-Stack 实现高性能的 HTTP 服务器,通过实例测试验证了 F-Stack 的性能和优势。
Linux内核主要由 进程管理、内存管理、设备驱动、文件系统、网络协议栈 外加一个 系统调用。
1、信鸽的挑战 应用的用户的生命周期来说分5个阶段,即用户的获取、激活、留存、传播和收入,信鸽的消息推送是触达用户,提升留存的重要途径。 信鸽平台现已服务于数万的App开发者,日推送消息数
数据平面开发套件(DPDK [1] ,Data Plane Development Kit)是由6WIND,Intel等多家公司开发,主要基于Linux系统运行,用于快速数据包处理的函数库与驱动集合,可以极大提高数据处理性能和吞吐量,提高数据平面应用程序的工作效率。
随着云计算产业的异军突起,网络技术的不断创新,越来越多的网络设备基础架构逐步向基于通用处理器平台的架构方向融合,从传统的物理网络到虚拟网络,从扁平化的网络结构到基于 SDN 分层的网络结构,无不体现出这种创新与融合。
存储加速方向 存储软件自身软件栈 存储软件自身一般通过是通过减少软件栈开销来达到优化自身的目的,比如软件栈的一些校验或者保护算法可以通过CPU的特殊指令集对存储校验或者保护算法进行优化 网络IO Linux网络的开销一般比较大,封包和解包一般都是在CPU端进行,数据的可靠性需要依赖TCP协议栈,而TCP协议栈保证稳定的同时TCP的操作必须经过协议栈,这就带来了数据从用户态->内核态->网卡驱动开销。数据拷贝和CP开销让网络IO往往不低。因此可以所经过的网络中,可以把数据传输的任务从CPU中卸载,交给具有RD
F-Stack是一个全用户态(kernel bypass)的高性能的网络接入开发包,基于DPDK、FreeBSD协议栈、微线程接口等,适用于各种需要网络接入的业务,用户只需要关注业务逻辑,简单的接入F-Stack即可实现高性能的网络服务器。 本文介绍F-Stack的详细架构及如何解决内核协议栈面临的问题。 传统内核协议栈的性能瓶颈 在传统的内核协议栈中,网络包处理存在诸多瓶颈,严重影响网络包的收发性能。性能瓶颈主要包括以下几个方面 局部性失效 - 一个数据包的处理可能跨多个CPU核心、缓存失效、NUM
Netfilter/iptables是Linux内核内置的报文过滤框架,程序可以通过该框架完成报文过滤、地址转换(NAT)以及连接跟踪等功能。
首先,DPDK和内核网络协议栈不是对等的概念。 DPDK只是单纯的从驱动拿数据,然后组织成数据块给人用,跑在用户态。功能相当于linux的设备无关接口层,处于socket之下,驱动之上。只不过linux协议栈的这部分在核心态。 你说的包处理器,很多时候是不用linux内核协议栈的,而是用专用包处理程序,类似于DPDK加上层应用处理。通常会有些硬件加速器,包处理效率更高些。缺点是一旦用不上某些功能,那些加速器就白费了。而纯软件处理就非常灵活,不过代价就是功耗和性能。 纯DPDK性能非常高,intel自己给出的数据是,处理一个包80时钟周期。一个3.6Ghz的单核双线程至强,64字节小包,纯转发能力超过90Mpps,也就是每秒9千万包。 不知你有没有看出来,80周期是一个非常惊人的数字?正常情况下,处理器访问一下ddr3内存都需要200个周期,而包处理程序所需要操作的数据,是从pcie设备送到ddr内存的,然后再由处理器读出来,也就是说,通常至少需要200周期。为啥现在80周期就能完成所有处理?我查了下文档,发现原因是使用了stashing或者叫direct cache access技术,对于PCIe网卡发过来的包,会存在一个特殊字段。x86的pcie控制器看到这个字段后,会把包头自动塞到处理器的缓存,无序处理器来干预。由于包头肯定是会被读取的,这样相当于提前预测,访问的时间大大缩短。 如果加上linux socket协议栈,比如跑个纯http包反弹,那么根据我的测量,会掉到3000-4000周期处理一个包,单核双线程在2.4Mpps,每秒两百四十万包,性能差40倍。 性能高在哪?关键一点,DPDK并没有做socket层的协议处理,当然快。其他的,主要是使用轮询替代中断,还有避免核心态到用户态拷贝,并绑定核,避免线程切换开销,还有避免进入系统调用的开销,使用巨页等。 还有很关键的一点,当线程数大于12的时候,使用linux协议栈会遇到互斥的瓶颈,用性能工具看的话,你会发现大部分的时间消耗在spin_lock上。解决方法之一是如github上面的fastsocket,改写内核协议栈,使包始终在一个核上处理,避免竞争等。缺点是需要经常自己改协议栈,且应用程序兼容性不够。 另外一个方法是使用虚拟机,每个特征流只在一个核处理,并用虚拟机隔绝竞争,底层用dpdk做转发,上层用虚拟机做包处理,这样保证了原生的linux协议栈被调用,做到完全兼容应用程序。不过这种方法好像还没有人做成开源的,最近似的是dpdk+虚拟交换机ovs的一个项目。 如果你只想要dpdk的高性能加tcp/ip/udp的处理,不考虑兼容性,那么还可以去买商业代码,我看了下供应商的网站介绍,纯转发性能大概在500-1000周期左右一个包。
本文作者网易数帆云网络数据面负责人汪翰林,在工作中从事服务网格的网络数据面性能优化,发现其中的网络性能优化的原理具有相通性。本文对通用的网络性能优化方法做出了总结,包括服务网格及网络性能优化分析、网络性能优化技术介绍、网络性能优化思路三个方面,并列举了实际案例进行进一步诠释,供大家在实际做性能优化时参考。
本文是一篇翻译,翻译自https://software.intel.com/en-us/blogs/2015/06/12/user-space-networking-fuels-nfv-performance,文章有点老了,15年写的,但是文章总结了一些用户态的协议栈,很有学习参考的意义。 如今,作为一个网络空间的软件开发人员是非常激动人心的,因为工程师的角色随着这个世界的规则在逐渐改变。 过去这 15 年来,人们对高性能网络做了很多努力,网络模型也发生了很多改变,起初,数据包的收发都要推送到内核才能完成
“如何在激烈的移动社交市场竞争中脱颖而出?”这是当前移动社交应用领域众多开发者们所面临的现实问题。在产品功能特性同质化越来越严重的形势下,动用最小的研发资源实现“附近的人”,进而将更多的团队资源投入到产品创新,是大家的深层诉求。 据了解腾讯云分析(mta.qq.com)近日推出的“社交LBS”SDK服务,其覆盖Android和iOS两大主流平台,所有功能免费。开发者只需花10分钟集成SDK之后,便可无视各项复杂的技术挑战,轻松实现“附近的人”。 腾讯社交LBS提供何种服务? 首先,社交LBS服务主要围绕
原文链接:https://blog.csdn.net/dog250/article/details/103301816
这是一篇干货满满、如假包换的文章 读完大约要10分钟 要说现在市面上最火爆的手游,莫非拥有两亿注册用户的王者荣耀了。据悉,王者荣耀的渗透率高达22.3%,这意味着每7个中国人中就有一位是王者荣耀注册用户。众所周知,手游App对推送实时性和稳定性要求非常高,而王者荣耀这种日活跃千万级的应用对推送的要求就更高了,下面我们来看看王者荣耀背后的信鸽推送是怎么应对挑战,做到海量、实时和精准推送的。 2017年7月7日-8日,ArchSummit全球架构师峰会在深圳召开。ArchSummit全球架构师峰会是InfoQ
作者 | 汪翰林 编辑 | 蔡芳芳 Redis 作为最受欢迎的 NoSQL 数据库之一,具备高性能、高可用性、高扩展性等特点,在各互联网业务中使用广泛。目前业界针对 Redis 的性能优化主要针是配置项优化以及使用方式的优化。本文介绍网易数帆尝试撇开 Redis 本身,而从通用的协议栈层面来做优化,这种优化方式理论上可推广到其他 Socket 类互联网应用,如 Memcached、Ngnix、Envoy 等。 分 析 Redis-server 作为一个标准的 Socket 类应用,会通过监听地
这段代码就是读取一个文件,然后再把它写出去,看起来就几行代码,其实涉及到多次拷贝,其流程如下:
“如何在激烈的移动社交市场竞争中脱颖而出?”这是当前移动社交应用领域众多开发者们所面临的现实问题。在产品功能特性同质化越来越严重的形势下,动用最小的研发资源实现“附近的人”,进而将更多的团队资源投入到产品创新,是大家的深层诉求。 据了解腾讯云分析(mta.qq.com)近日推出的“社交LBS”SDK服务,其覆盖Android和iOS两大主流平台,所有功能免费。开发者只需花10分钟集成SDK之后,便可无视各项复杂的技术挑战,轻松实现“附近的人”。 腾讯社交LBS提供何种服务? 首先,社交LBS服务主要
本文介绍了 F-Stack 框架,它是一个基于 FreeBSD 内核的用户态协议栈实现,解决了传统内核协议栈在高性能、可扩展、兼容性、功能完备等方面的问题。F-Stack 提供了丰富的功能,包括零拷贝、无锁队列、内存池、红黑树等,支持多种调度算法,并提供了易用的接口。在性能测试中,F-Stack 的表现优异,最高达到了 2000 万 QPS,并支持多种网络协议,包括 HTTP、TCP、UDP、IPX 等。同时,F-Stack 也提供了丰富的开发文档和示例代码,方便开发者进行二次开发和功能扩展。
Docker的技术依赖于Linux内核的虚拟化技术的发展,Docker使用到的网络技术有Network Namespace、Veth设备对、Iptables/Netfilter、网桥、路由等。接下来,我将以Docker容器网络实现的基础技术来分别阐述,在到真正的容器篇章节之前,能形成一个稳固的基础知识网。
LiveVideoStack:请简要介绍下自己,以及目前主要的工作方向,对哪些技术或领域感兴趣?
有多火?目前在这个领域的玩家或者潜在玩家有Broadcom、Intel、英伟达、Netronome、Pensando、Fungible和Xilinx,还包括云供应商三大巨头,国内也有很多玩家。
领取专属 10元无门槛券
手把手带您无忧上云