博主這個(gè)關(guān)于SDN&NFV的博客已經(jīng)寫了有一年了,竟然一直在寫SDN,從來沒有寫過NFV。今天博主終于打算開始寫第一篇關(guān)于NFV的文章,主要是因?yàn)椴┲饔X著NFV已經(jīng)箭在弦上,離落地不遠(yuǎn)了。關(guān)于NFV的文章有很多,但國內(nèi)外都是軟文居多,看了也不知道在說什么,主要是因?yàn)閷?shí)在沒有什么干貨可寫,于是就只能堆砌概念了。在博主看來,讓NFV落地的種種條件直到最近這半年才基本成熟。估計(jì)再過半年或者一年市場上就會出現(xiàn)比較靠譜的NFV解決方案,等明年這個(gè)時(shí)候可能就會有比較有說服力的案例出現(xiàn)了。
博主就不花筆墨科普NFV了,目前為止博主見到的最好的解釋NFV以及NFV和SDN關(guān)系的文章是sigcomm 2014的OpenNF,特別是它的前兩章,博主建議做SDN和NFV的兄弟們都讀一下。 這篇文章的結(jié)論之一是沒有SDN,NFV是玩兒不轉(zhuǎn)的。但這僅僅是故事的一部分,博主今天會把我眼中那些決定NFV落地的關(guān)鍵因素搭個(gè)框架出來,細(xì)節(jié)會在之后的文章陸續(xù)展開。
需求:
NFV (Network Function Virtualization,網(wǎng)絡(luò)功能虛擬化),如果非要用一句話解釋就是:把在傳統(tǒng)網(wǎng)絡(luò)中只在專門硬件上跑著的功能放到虛擬機(jī)里跑,比較典型的例子是把防火墻跑在虛擬機(jī)上。這樣做有很多好處:省錢;升級虛擬機(jī)比升級硬件方便;根據(jù)業(yè)務(wù)需求彈性部署;易于管理等等。總之那些主機(jī)虛擬化的好處對于NFV同樣適用。對NFV最大的需求來自兩類大金主:運(yùn)營商和云。
運(yùn)營商會在網(wǎng)絡(luò)中部署各種各樣的middlebox (Network Function的又一種說法,真不明白人們?yōu)槭裁椿ň幵觳煌拿~來描述同一個(gè)東西...),middlebox種類之繁雜讓博主一度目瞪口呆,sigcomm 2012的APLOMB說運(yùn)營商管理的middlebox的數(shù)量比他們管理的路由器加交換機(jī)的總和還多。面對如此龐雜的middlebox,運(yùn)營商對于NFV的需求也最為旺盛。
對于NFV的另外一個(gè)需求大戶是云,特別是在多租戶大行其道的今天。每一個(gè)租戶都要在自己的網(wǎng)絡(luò)入口部署防火墻和負(fù)載均衡。云服務(wù)提供商不可能為每一個(gè)租戶購買專門的硬件設(shè)備來完成這些功能。把這些功能跑在虛擬機(jī)里幾乎是唯一的選擇。
對NFV的需求如此強(qiáng)烈,為什么遲遲沒有落地呢?因?yàn)橐恍╆P(guān)鍵的技術(shù)問題直到最近才有比較靠譜的解決方案。
技術(shù):
NFV最大的技術(shù)難題是性能。還是拿防火墻來舉例:防火墻是有狀態(tài)的,它要追蹤每一個(gè)TCP鏈接并且根據(jù)規(guī)則做出判斷。人們?yōu)榉阑饓υO(shè)計(jì)專門的芯片就是為了能夠線速處理網(wǎng)絡(luò)流量。于是從2000左右開始,硬件防火墻就一直統(tǒng)治著市場。如果把所有這些功能都放到虛擬機(jī),放到軟件上來做,就意味著中斷,數(shù)據(jù)拷貝,要達(dá)到線速非常困難。伴隨著基于DPDK,SR-IOV的一系列方案的不斷完善,這個(gè)問題得到了比較好的解決。解決思路就是用最少的中斷,尋址和數(shù)據(jù)拷貝將數(shù)據(jù)包搬運(yùn)于網(wǎng)卡和防火墻虛擬機(jī)之間。博主會寫專門的文章比較這兩個(gè)技術(shù)流派,目前更傾向于認(rèn)為DPDK會得到更廣泛的應(yīng)用(事實(shí)上在大型互聯(lián)網(wǎng)企業(yè)里,基于的DPDK的應(yīng)用已經(jīng)走得很遠(yuǎn)了)。以SR-IOV為代表的網(wǎng)卡技術(shù)有兩個(gè)硬傷博主還沒想清楚怎么破:1) 沒有HA,一個(gè)網(wǎng)卡掛了,它所有的virtual function全掛。SR-IOV沒有bond的概念。2) 產(chǎn)品升級困難,唯一的方法就是換網(wǎng)卡,重新部署,重新配置。
NFV面臨的第二個(gè)難題是根據(jù)middlebox的功能和在網(wǎng)絡(luò)中的位置,高度動態(tài)的計(jì)算路徑,將流量正確的轉(zhuǎn)發(fā)入/出middlebox。這個(gè)問題伴隨著SDN的落地開花,不少SDN廠家都有了比較靠譜的解決方案。
部署:
直到上面的兩個(gè)技術(shù)問題得到解決,談NFV的部署才有意義。NFV的部署其實(shí)和虛擬機(jī)的編排沒有太本質(zhì)的區(qū)別。最大的不同是需要為middlebox分配專屬的硬件資源,比如一個(gè)防火墻的CPU都應(yīng)該處于一個(gè)NUMA上。這些接口在過去半年里也終于被openstack支持了。
講到這里,大家也就明白為什么博主會認(rèn)為NFV離落地不遠(yuǎn)了:需求旺盛,技術(shù)難題已經(jīng)得到了比較好的解決,部署方式和現(xiàn)有的編排系統(tǒng)高度相似。NFV真的要來了。