成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

高性能轉發領域的重要功臣——VPP開源代碼

開源
通過輪訓模式,繞過Linux內核協議棧,做到零拷貝,直接把數據收到用戶態,而DPDK僅僅是IO技術,并沒有完善的網絡協議棧,因此,VPP應運而生,VPP全程向量報文處理,是思科開源出來的一款網絡協議棧軟件。

Labs 導讀

眾所周知,在數據通信領域,傳統廠商如華為、中興、思科等均是用自己的網絡轉發平臺配合硬件板卡轉發,也就是我們俗稱的硬轉發。近些年,隨著SDN/NFV等新型網絡技術興起,使用x86平臺CPU轉發的需求不斷的被提及,發展迅速,也相應的出現了一些開源的網絡操作系統,比如Linux內核轉發,Linux內核中有豐富的網絡協議棧,能處理基本的網絡二三層轉發、NAT、ACL等功能,但是Linux內核最大的問題是性能不夠高,難以適應海量級用戶轉發。

Part 01、VPP簡介 

VPP全稱Vector Packet Processing,據說是Cisco 2002年開發的商用代碼。2016年2月11號,Linux基金會創建FD.io項目。Cisco將VPP代碼的開源版本加入該項目,目前已成為該項目的核心。VPP運行于用戶空間,支持多種收包方式,最常用的就是DPDK收發包。VPP有兩個關鍵特性:

  • 框架可擴展
  • 成熟的交換/路由功能

VPP是一個模塊化和可擴展的軟件框架,用于創建網絡數據面應用程序。更重要的是,VPP代碼為現代通用處理器平臺(x86、ARM、PowerPC等)而生,并把重點放在優化軟件和硬件接口上,以便用于實時的網絡輸入輸出操作和報文處理。

為了提高性能,VPP數據平面是由轉發節點的有向圖組成,這些節點在每次調用時處理多個數據包。階段模塊化設計框架允許任何人“插入”新的圖形節點,而不需要更改核心/內核代碼。

Part 02  VPP的技術原理 

所謂VPP向量報文處理是與傳統的標量報文處理相對而言的。傳統報文處理方式,同時也是人類常用的邏輯思維方式,即:報文是按照到達先后順序來處理,第一個報文處理完,處理第二個,依次類推;A callsB calls C….return return return,函數會頻繁嵌套調用,并最終返回。Linux內核轉發、OpenVswitch的報文處理都是標量報文處理。

由此可見,傳統標量報文處理有如下缺陷:

1、I-cache 抖動(cache時間局限性和空間局限性特點)

2、I-cache misses

3、除了擴大cache外,沒有變更方案。

相比較而言,向量報文處理則是一次處理多個報文,也相當于一次處理一個報文數組packet[n]如下圖:

圖片

直白來說,標量報文處理,也就是傳統的報文處理,一次是一個包走完整個轉發流水線,因為轉發流水線上包含各類的功能,比如以太處理、IP處理、ARP處理、策略處理、NAT處理等等,每個處理模塊在CPU中是不同的指令去完成,所以一個包順序的走完這些流程,導致CPU cache中緩存的指令不能復用,所以會產生抖動,勢必影響轉發效率。而向量報文處理,一次性處理一組向量的報文,一個處理模塊一次性處理多個報文,CPU cache中緩存的指令能夠最大程度得到復用,效率自然會高。

VPP把一批底層硬件隊列Rx ring收到的包,組成一個Packet Vector或者是一組包,借助于報文處理圖Packet Processing graph來實現處理流程,圖節點graph node把整個過程分解為一個個先后連接的服務node。這一組包(packet vector)被第一個graph node節點的任務處理,然后依次被第二個graph node節點的任務處理,依次類推,如下圖所示:

圖片

Part 03、  VPP的擴展性  

上圖中提到了新功能的插入。縱觀其他軟轉軟件比如Linux kernel協議棧、open vswitch,整個轉發協議棧代碼基本上是分層的,一個總的入口函數,然后根據不同的處理模塊,進入不同層次的處理函數,如果在某部分新增處理模塊,需要修改主框架的函數邏輯,業務和主框架未解耦,擴展起來不夠靈活。

而VPP則不是,VPP采用一種新的思路來實現業務功能處理,VPP是通過graph node串聯起來形成一條數據路徑來處理報文,每一個功能模塊是一個獨立的node實現,VPP的總體調度框架把這些node串聯起來,node之間可以指定優先級和前后關系,相互獨立,調整起來只需要改變優先級和先后關系。另外,如果新增功能,只需新增一個node,在node中實現新增功能邏輯,然后插入到相應node前后,不用的時候可以disable掉,非常方便,而且新增node可以以插件形式編譯,做到即插即用。

舉個例子,正常的處理順序:DPDK收包node ---> 以太處理node  --> IP輸入node --> IP路由查找node --> 輸出node。新增一個需求,需要DPI匹配指導轉發,那么DPI功能單獨寫成一個node,插入到IP輸入node和IP路由查找node之間,就ok了。

Part 04、VPP的應用 

前面提到過,VPP是個高性能轉發的開源軟件,在如今SDN、NFV、云化、算力網絡的時代,他會發揮更大的價值。VPP可以在云化場景中作為軟路由器/交換機來使用,比如SD-WAN場景中,云端POP點需要具備接入、策略轉發、路由、NAT、隧道等能力,VPP因其豐富的網絡協議棧功能以及高性能處理能力,能夠勝任。比如安全場景中,VPP可以應用于企業出口,做安全網關來使用,再比如,5G核心網中的UPF,也可以使用VPP來實現。總之,需要軟轉發的地方,總會出現VPP的身影。

Part 05、 后記  

前面提到VPP有諸多變革性的優點,比如豐富的二三層網絡協議棧、新增業務開發靈活可擴展、高性能轉發等等,但它也不是萬能的,VPP的代碼上手難度比OVS和Linux內核要高,另外和其他控制面軟件在交互的時候,還略有不足,比如對接路由開源軟件frrouting,需要通過自身的router插件來實現對接,但是router插件很早之前便沒有更新了,功能有所欠缺。同時,VPP本身的穩定性并未達到商用標準,需要使用者在使用的過程中不斷的修復和完善,當然,VPP社區也在不斷的更新,補充更加豐富的功能以及BUG修復,但要想把開源VPP改造成一個成熟的可商用的穩定產品,還有很多工作要做,同時也相信VPP會越來越好。

責任編輯:龐桂玉 來源: 移動Labs
相關推薦

2016-09-19 10:14:54

PythonNumpy數據

2012-12-17 13:51:22

Web前端JavaScriptJS

2009-08-12 17:48:56

存儲高性能計算曙光

2010-05-07 17:50:31

Unix服務器

2009-06-24 15:00:39

Javascript代

2024-03-20 08:00:00

軟件開發Java編程語言

2014-04-25 09:02:17

LuaLua優化Lua代碼

2015-12-17 13:19:29

編寫高性能Swift

2018-01-12 14:37:34

Java代碼實踐

2015-09-01 15:45:50

開源字體Hack

2021-02-23 15:24:51

騰訊組件開源

2015-07-16 11:33:10

聯想

2024-05-14 15:43:02

2010-07-29 11:20:49

Flex源代碼

2018-02-28 10:11:50

騰訊框架開源

2009-04-20 20:09:15

2011-04-25 14:06:23

java

2011-04-07 09:25:25

內存Java

2023-11-10 15:35:24

2012-07-05 09:33:32

WPSOpenOffice開源
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜精品一区二区三区在线观看 | 亚洲成人在线网 | 久久精品中文字幕 | 亚洲精品9999久久久久 | 欧美一区二区成人 | av一区在线 | 99视频在线播放 | 精品国产欧美一区二区三区成人 | 欧洲精品在线观看 | 久久欧美精品 | 久久亚洲精品国产精品紫薇 | 久久神马| 91国内精精品久久久久久婷婷 | 国产成人在线观看免费 | 欧美一级片在线看 | 91久色 | 又黄又爽的网站 | 国产综合久久久久久鬼色 | 爱草在线 | 中文字幕一区二区三区乱码在线 | 亚洲激情一区二区三区 | 国产精品揄拍一区二区 | 欧美一级免费黄色片 | 久久国内精品 | 久久久五月天 | 亚洲视频在线播放 | 最新国产精品 | av在线一区二区三区 | 91久久久久久久久久久 | 91精品国产乱码久久久久久久 | 综合视频在线 | 久久av一区| 欧美亚洲国产一区 | 欧美男人天堂 | 久久久一二三区 | 欧美视频在线观看 | 亚洲欧美一区二区三区1000 | 成人欧美一区二区三区黑人孕妇 | 亚洲综合字幕 | 国产精品成人69xxx免费视频 | 久久国产精品免费一区二区三区 |