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

高性能轉(zhuǎn)發(fā)領(lǐng)域的重要功臣——VPP開源代碼

開源
通過輪訓(xùn)模式,繞過Linux內(nèi)核協(xié)議棧,做到零拷貝,直接把數(shù)據(jù)收到用戶態(tài),而DPDK僅僅是IO技術(shù),并沒有完善的網(wǎng)絡(luò)協(xié)議棧,因此,VPP應(yīng)運(yùn)而生,VPP全程向量報(bào)文處理,是思科開源出來的一款網(wǎng)絡(luò)協(xié)議棧軟件。

Labs 導(dǎo)讀

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

Part 01、VPP簡介 

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

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

VPP是一個(gè)模塊化和可擴(kuò)展的軟件框架,用于創(chuàng)建網(wǎng)絡(luò)數(shù)據(jù)面應(yīng)用程序。更重要的是,VPP代碼為現(xiàn)代通用處理器平臺(tái)(x86、ARM、PowerPC等)而生,并把重點(diǎn)放在優(yōu)化軟件和硬件接口上,以便用于實(shí)時(shí)的網(wǎng)絡(luò)輸入輸出操作和報(bào)文處理。

為了提高性能,VPP數(shù)據(jù)平面是由轉(zhuǎn)發(fā)節(jié)點(diǎn)的有向圖組成,這些節(jié)點(diǎn)在每次調(diào)用時(shí)處理多個(gè)數(shù)據(jù)包。階段模塊化設(shè)計(jì)框架允許任何人“插入”新的圖形節(jié)點(diǎn),而不需要更改核心/內(nèi)核代碼。

Part 02  VPP的技術(shù)原理 

所謂VPP向量報(bào)文處理是與傳統(tǒng)的標(biāo)量報(bào)文處理相對(duì)而言的。傳統(tǒng)報(bào)文處理方式,同時(shí)也是人類常用的邏輯思維方式,即:報(bào)文是按照到達(dá)先后順序來處理,第一個(gè)報(bào)文處理完,處理第二個(gè),依次類推;A callsB calls C….return return return,函數(shù)會(huì)頻繁嵌套調(diào)用,并最終返回。Linux內(nèi)核轉(zhuǎn)發(fā)、OpenVswitch的報(bào)文處理都是標(biāo)量報(bào)文處理。

由此可見,傳統(tǒng)標(biāo)量報(bào)文處理有如下缺陷:

1、I-cache 抖動(dòng)(cache時(shí)間局限性和空間局限性特點(diǎn))

2、I-cache misses

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

相比較而言,向量報(bào)文處理則是一次處理多個(gè)報(bào)文,也相當(dāng)于一次處理一個(gè)報(bào)文數(shù)組packet[n]如下圖:

圖片

直白來說,標(biāo)量報(bào)文處理,也就是傳統(tǒng)的報(bào)文處理,一次是一個(gè)包走完整個(gè)轉(zhuǎn)發(fā)流水線,因?yàn)檗D(zhuǎn)發(fā)流水線上包含各類的功能,比如以太處理、IP處理、ARP處理、策略處理、NAT處理等等,每個(gè)處理模塊在CPU中是不同的指令去完成,所以一個(gè)包順序的走完這些流程,導(dǎo)致CPU cache中緩存的指令不能復(fù)用,所以會(huì)產(chǎn)生抖動(dòng),勢必影響轉(zhuǎn)發(fā)效率。而向量報(bào)文處理,一次性處理一組向量的報(bào)文,一個(gè)處理模塊一次性處理多個(gè)報(bào)文,CPU cache中緩存的指令能夠最大程度得到復(fù)用,效率自然會(huì)高。

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

圖片

Part 03、  VPP的擴(kuò)展性  

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

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

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

Part 04、VPP的應(yīng)用 

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

Part 05、 后記  

前面提到VPP有諸多變革性的優(yōu)點(diǎn),比如豐富的二三層網(wǎng)絡(luò)協(xié)議棧、新增業(yè)務(wù)開發(fā)靈活可擴(kuò)展、高性能轉(zhuǎn)發(fā)等等,但它也不是萬能的,VPP的代碼上手難度比OVS和Linux內(nèi)核要高,另外和其他控制面軟件在交互的時(shí)候,還略有不足,比如對(duì)接路由開源軟件frrouting,需要通過自身的router插件來實(shí)現(xiàn)對(duì)接,但是router插件很早之前便沒有更新了,功能有所欠缺。同時(shí),VPP本身的穩(wěn)定性并未達(dá)到商用標(biāo)準(zhǔn),需要使用者在使用的過程中不斷的修復(fù)和完善,當(dāng)然,VPP社區(qū)也在不斷的更新,補(bǔ)充更加豐富的功能以及BUG修復(fù),但要想把開源VPP改造成一個(gè)成熟的可商用的穩(wěn)定產(chǎn)品,還有很多工作要做,同時(shí)也相信VPP會(huì)越來越好。

責(zé)任編輯:龐桂玉 來源: 移動(dòng)Labs
相關(guān)推薦

2016-09-19 10:14:54

PythonNumpy數(shù)據(jù)

2012-12-17 13:51:22

Web前端JavaScriptJS

2009-08-12 17:48:56

存儲(chǔ)高性能計(jì)算曙光

2010-05-07 17:50:31

Unix服務(wù)器

2014-04-25 09:02:17

LuaLua優(yōu)化Lua代碼

2009-06-24 15:00:39

Javascript代

2024-03-20 08:00:00

軟件開發(fā)Java編程語言

2010-07-29 11:20:49

Flex源代碼

2015-12-17 13:19:29

編寫高性能Swift

2018-01-12 14:37:34

Java代碼實(shí)踐

2009-04-20 20:09:15

2018-02-28 10:11:50

騰訊框架開源

2015-09-01 15:45:50

開源字體Hack

2021-02-23 15:24:51

騰訊組件開源

2015-07-16 11:33:10

聯(lián)想

2024-05-14 15:43:02

2011-04-25 14:06:23

java

2011-04-07 09:25:25

內(nèi)存Java

2023-04-07 12:30:04

開源ShmipcIPC

2023-11-10 15:35:24

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: www.黄网 | 国产ts人妖另类 | 国产剧情久久 | 久久精品国产免费高清 | 天天综合亚洲 | 久久亚洲国产 | 91精品一区二区 | 九九热国产视频 | av网站在线播放 | 国产午夜精品一区二区三区嫩草 | 在线亚洲一区二区 | 亚洲毛片在线 | 日韩午夜影院 | 一区视频 | 日韩一区二区不卡 | 日韩免费高清视频 | 成人蜜桃av | wwwxxx日本在线观看 | 天堂视频中文在线 | 成人做爰9片免费看网站 | 日本三级日产三级国产三级 | 四虎影院在线观看av | 欧美中文字幕 | 午夜视频网站 | 一道本视频 | 日本久草视频 | 亚洲一级视频在线 | 蜜月aⅴ国产精品 | 99精品免费久久久久久日本 | 国产精品99久久久久久动医院 | 国产成人精品一区二区 | 一区二区三区精品视频 | 精品国产一区二区三区久久久久久 | 91视视频在线观看入口直接观看 | 午夜在线免费观看 | 欧美一区二区三区视频 | 精品国产精品三级精品av网址 | 日日摸天天添天天添破 | 中文字幕免费视频 | www.久久久久久久久久久久 | 久草热在线|