軟件定義網(wǎng)絡(luò )(SDN,一般認為是Software Defined Networking)在數年前興起,并迅速引起了軟件定義的風(fēng)潮,將軟件定義的理念應用到各個(gè)領(lǐng)域,如:軟件定義計算(SDC,Software Defined Compute)、軟件定義存儲(SDS,Software Defined Storage),還有軟件定義數據中心(SDDC,Software Defined Datacenter)、軟件定義環(huán)境(SDE,Software Defined Environment)等等等等。
為什么軟件定義的概念首先在網(wǎng)絡(luò )領(lǐng)域得到應用呢?網(wǎng)絡(luò )和計算、存儲不同——實(shí)際上,計算和存儲非常相像,稍微大型的存儲設備都需要一定的運算能力來(lái)實(shí)現相當部分(如果不是所有部分的話(huà))的存儲功能,因此它們的架構實(shí)際上有很多相似的部分,這也是融合系統乃至超融合系統得以很快實(shí)現的原因:本質(zhì)上我們的(計算)服務(wù)器和存儲服務(wù)器沒(méi)有區別。
實(shí)質(zhì)上說(shuō),所有的網(wǎng)絡(luò )設備都是在硬件上運行網(wǎng)絡(luò )操作系統,然而在過(guò)去數十年來(lái),不管是硬件上,還是在軟件上,網(wǎng)絡(luò )設備的互操作性都很低,不同公司的產(chǎn)品具有不同的設置界面/命令行,而即使是同一公司的產(chǎn)品,不同的產(chǎn)品線(xiàn)可能也會(huì )具有不同的操作系統乃至操作界面。曾幾何時(shí),配置網(wǎng)絡(luò )設備本身就形成了一個(gè)職業(yè):網(wǎng)絡(luò )管理員。有些糟糕的是,過(guò)去了這么多年,即使是最新的設備,也仍然需要使用效率低下的配置方法,至多是提供了載入配置文件的手段。-
隨著(zhù)數據中心規模的變大,網(wǎng)絡(luò )規模也在變大,而網(wǎng)絡(luò )設備的難以應用和管理顯然是一個(gè)限制。而SDN——軟件定義網(wǎng)絡(luò )——最早就是為了解決這個(gè)配置的問(wèn)題:通過(guò)一個(gè)集中的控制器,管理著(zhù)多個(gè)特殊的交換機,從而實(shí)現網(wǎng)絡(luò )控制、管理的功能。SDN架構最早的設想是用于網(wǎng)絡(luò )安全領(lǐng)域,后來(lái)擴展到通用網(wǎng)絡(luò )設備領(lǐng)域,并發(fā)展為OpenFlow規范。不管是原始的OpenFlow,還是后來(lái)興起的OpenDaylight、NFV或者ONSOS,這些典型的軟件定義網(wǎng)絡(luò )都具有相似的架構,它們都將網(wǎng)絡(luò )劃分為三個(gè)名字可能有所不同但功用相似的平面:Data Plane(數據平面)、Control Plane(控制平面)和Application Plane(應用平面),并在控制平面實(shí)現集中式的控制器,從而提供給用戶(hù)一個(gè)快速的、統一的、方便的配置管理界面,更進(jìn)一步地,通過(guò)控制平面提供的API,用戶(hù)可以在應用平面進(jìn)行開(kāi)發(fā),從而實(shí)現全自動(dòng)化的網(wǎng)絡(luò )架構控制。
顯而易見(jiàn),全自動(dòng)化的網(wǎng)絡(luò )配置和管理相對以往的命令行或者尋常的GUI配置方式是一個(gè)巨大的進(jìn)步。在出現之后,只經(jīng)過(guò)了數年,SDN就迅速成為了一股浪潮。到2014年為止,大部分傳統的廠(chǎng)商也已經(jīng)開(kāi)始生產(chǎn)SDN相關(guān)的設備,并且很多軟件廠(chǎng)商也開(kāi)始進(jìn)入這個(gè)市場(chǎng)——主要是Hypervisor廠(chǎng)商,因為Hypervisor可以和虛擬交換機vSwitch結合,從而掌握了網(wǎng)絡(luò )與計算之間的邊界,可以很容易通過(guò)SDN實(shí)現復雜靈活的網(wǎng)絡(luò )功能。
軟件定義網(wǎng)絡(luò )將更強大的計算屬性引入了網(wǎng)絡(luò )領(lǐng)域。在之前,網(wǎng)絡(luò )和計算設備(服務(wù)器)、存儲設備(存儲控制器/服務(wù)器)不一樣,從外觀(guān)上看,網(wǎng)絡(luò )設備有較大的硬件成分屬于網(wǎng)絡(luò )接口,并且,網(wǎng)絡(luò )設備最基本的功能就是進(jìn)行網(wǎng)絡(luò )傳輸。因此,對IO的性能、延遲要求比較高,因此網(wǎng)絡(luò )產(chǎn)品傾向于使用硬件來(lái)實(shí)現各種各樣的功能。通常,在不考慮SDN的情況下網(wǎng)絡(luò )設備的芯片內部都會(huì )劃分Data Plane(數據平面)和Control Plane(控制平面),如加密等功能通過(guò)各種額外的數據平面硬件模塊來(lái)實(shí)現,對應的控制平面則采用較弱的RISC架構CPU,如網(wǎng)絡(luò )芯片中曾占據統治地位的MIPS架構,以及現在家用芯片上盛行的ARM架構,和偶爾可以看到的PowerPC架構,還有一些廠(chǎng)商專(zhuān)有的架構。一般來(lái)說(shuō)網(wǎng)絡(luò )分層中越處于高層協(xié)議的設備,其CPU就會(huì )越強,因為需要的控制邏輯會(huì )越多,簡(jiǎn)單的L2交換機對CPU的需求很低,而處于L1的中繼器干脆就是個(gè)純硬件設備。
總體來(lái)說(shuō)傳統網(wǎng)絡(luò )設備是偏向數據包收發(fā)功能的硬件設施,到了軟件定義時(shí)代,網(wǎng)絡(luò )設備需要更多的計算能力來(lái)實(shí)現軟件部分的功能,也就是更偏向控制邏輯部分,例如要實(shí)現SDN架構的南向API,在ONF中就是OpenFlow,在OpenDaylight中則更復雜,有OpenFlow,也有NETCONF/YANG等等,還要實(shí)現通過(guò)南向API接受SDN控制器發(fā)來(lái)的指令,總之,SDN中,即使是處于Data Plane的交換機等設備相比以往也需要更強大的計算能力,而處于Control Plane中的SDN控制器干脆就是一個(gè)(或者一組)運行在服務(wù)器上的虛擬機。
軟件定義網(wǎng)絡(luò )提供了一個(gè)使用通用服務(wù)器代替舊有的專(zhuān)用硬件的機會(huì )。軟件定義網(wǎng)絡(luò )并未要求數據平面的網(wǎng)絡(luò )設備一定要運行在通用服務(wù)器上,不過(guò)使用通用服務(wù)器的好處就在于,它和計算服務(wù)器、存儲服務(wù)器可以是沒(méi)有什么區別的,或者甚至就是一樣的,因此它的成本可以相當低,不管是CAPEX還是OPEX。通用服務(wù)器可以提供所需要的強大計算能力,來(lái)充分滿(mǎn)足Control Plane層的需要。在現下一些完全虛擬化的環(huán)境當中,SDN的Data Plane通過(guò)虛擬交換機來(lái)實(shí)現,實(shí)質(zhì)上運行于Hypervisor當中,Control Plane就是一臺虛擬機,VMware vSphere/NSX、Hyper-V/Hyper-V vSwitch和KVM/Open vSwitch的方案都是一樣,大部分的較為復雜網(wǎng)絡(luò )功能都由通用的服務(wù)器擔當了,需要的僅僅是一些二層的接入交換機。
采用通用服務(wù)器的另一個(gè)好處是開(kāi)發(fā)很簡(jiǎn)單,這牽涉到了生態(tài)系統的問(wèn)題,生態(tài)系統越大,那么開(kāi)發(fā)成本(包括人員費用)、維護成本以及管理都比專(zhuān)有系統要低。
通過(guò)在《數據中心2013:硬件重構與軟件定義》對軟件定義網(wǎng)絡(luò )的介紹,SDN可以讓網(wǎng)絡(luò )更加靈活、易于管理已經(jīng)沒(méi)有疑問(wèn)了,使用通用服務(wù)器做Control Plane也已經(jīng)成為了廣泛的現實(shí),但最關(guān)鍵的問(wèn)題還有一個(gè):數量龐大的Data Plane設備。Data Plane需要性能,專(zhuān)有系統是為了專(zhuān)門(mén)的目的設計和優(yōu)化的,通用的系統則要面對著(zhù)更廣泛的應用,實(shí)際上是一個(gè)對“通用”這個(gè)目標做的專(zhuān)門(mén)設計。例如,在四五年前,X86被認為不適用于網(wǎng)絡(luò )架構當中的Data Plane部分,因為其IO能力很受限制。這有指令集的緣故,也有內存接口、IO接口以及內部處理邏輯的緣故。
但是情況很快有了變化,從Nehalem-EP(至強5500)開(kāi)始,英特爾的服務(wù)器處理器開(kāi)始集成內存控制器,從而提升了對IO的處理——因為IO的處理牽涉到很多DMA(直接內存存取),一個(gè)網(wǎng)絡(luò )包的處理可能需要經(jīng)過(guò)多次存取內存,因此這個(gè)改動(dòng)提升了性能。到了Sandy Bridge-EP(至強E5),處理器開(kāi)始對PCI Express總線(xiàn)進(jìn)行了集成,并將PCI Express總線(xiàn)升級到速率達8GT/s的3.0規范,這個(gè)特性被稱(chēng)為Integrated I/O,這大幅度提升了IO性能,到了此時(shí),使用x86平臺搭建的網(wǎng)絡(luò )設備已經(jīng)開(kāi)始變得多了起來(lái)。
但更重要的還是在于一套開(kāi)發(fā)軟件:英特爾數據平面開(kāi)發(fā)套件(Intel Data Plane Development Kit,即Intel DPDK),里面提出了很多改進(jìn)x86平臺在Data Plane數據平面的性能的做法,例如Polling模式,Cache管理等等,人們忽然發(fā)現,x86的Data Plane性能其實(shí)也很可觀(guān),現在已經(jīng)有如6WIND等的公司在DPDK平臺上進(jìn)行網(wǎng)絡(luò )功能的開(kāi)發(fā)。
軟件定義網(wǎng)絡(luò )并未要求使用通用服務(wù)器,但是使用通過(guò)用服務(wù)器是降低成本、更快速地建立軟件定義網(wǎng)絡(luò )生態(tài)環(huán)境的方法,在性能方面,DPDK這樣的思路已經(jīng)解決了很多問(wèn)題,但還有更多的問(wèn)題等待著(zhù)去解決,本年度的數據中心技術(shù)研究報告中,將會(huì )對這些問(wèn)題進(jìn)行進(jìn)一步的探討。