SDN解讀:網(wǎng)絡(luò)可編程性
SDN基礎(chǔ):網(wǎng)絡(luò)可編程性
網(wǎng)絡(luò)工程師通常會使用命令行接口(CLI)或圖形化用戶界面(GUI)來配置網(wǎng)絡(luò)設(shè)備。雖然這種工作方式很普遍,但是這里也有一些問題。實(shí)現(xiàn)復(fù)雜的網(wǎng)絡(luò)配置可能要求工程師分別配置幾個不同的網(wǎng)絡(luò)設(shè)備。這個過程非常耗費(fèi)時間、繁雜且容易出錯。系統(tǒng)管理員可以使用一些自動化工具(如Puppet )來簡化他們的工作。盡管簡單網(wǎng)絡(luò)管理協(xié)議(SNMP)遠(yuǎn)處不在,但是網(wǎng)絡(luò)工程師從未有一些能夠處理任務(wù)分配的可預(yù)言管理工具。
網(wǎng)絡(luò)可編程性旨在轉(zhuǎn)變原先的做法:通過提供應(yīng)用編程接口(API),通過編程語言向網(wǎng)絡(luò)設(shè)備發(fā)送強(qiáng)大的編程指令。使用這種API,就意味著網(wǎng)絡(luò)分配不需要網(wǎng)絡(luò)工程師通過發(fā)送CLI來實(shí)現(xiàn),而是通過一些支持網(wǎng)絡(luò)編程的工具來實(shí)現(xiàn)。下面是一些例子:
網(wǎng)絡(luò)工程師可以使用腳本創(chuàng)建自動化分配任務(wù),或者收集網(wǎng)絡(luò)統(tǒng)計(jì)信息。(雖然網(wǎng)絡(luò)工程師現(xiàn)在可以使用腳本,但是他們通常只是對CLI或SNMP交互的一種封裝而已。)API可以提供更豐富的功能,也可以為工程師創(chuàng)造可以協(xié)作的生態(tài)系統(tǒng)。
編排工具可以整合網(wǎng)絡(luò)分配任務(wù)和其他用于開發(fā)業(yè)務(wù)應(yīng)用程序的任務(wù)。
網(wǎng)絡(luò)應(yīng)用程序可以作為中央控制器的插件,它們可以給網(wǎng)絡(luò)環(huán)境增加功能,概念上很像一個類似于智能手機(jī)的應(yīng)用程序。
許多網(wǎng)絡(luò)供應(yīng)商一直在努力開發(fā)能夠完全利用網(wǎng)絡(luò)硬件特性的自定義API。思科和瞻博網(wǎng)絡(luò)就是這樣的。雖然思科的onePK在早期提供了一個API庫,它允許對運(yùn)行IOS、IOS-XR和NX-OS的各種思科網(wǎng)絡(luò)硬件進(jìn)行編程。瞻博的Junos一直有XML API;甚至它的CLI都會生成XML代碼,然后再發(fā)送到底層操作系統(tǒng)。
在提及網(wǎng)絡(luò)可編程性時,不可避免地要涉及OpenFlow。在開放網(wǎng)絡(luò)聯(lián)盟成員的穩(wěn)定支持和開發(fā)下,OpenFlow已經(jīng)成為使用中央控制器實(shí)現(xiàn)網(wǎng)絡(luò)編程的主流方法。OpenFlow是一個不依賴供應(yīng)商的標(biāo)題,它描述了如何編程控制一個網(wǎng)絡(luò)交換機(jī)。它使用各種匹配條件(MAC地址、IP目標(biāo)地址等)來標(biāo)識特定的流,然后在這些流上執(zhí)行一些操作(通過端口X轉(zhuǎn)發(fā)、丟棄數(shù)據(jù)包等)。掌握整個網(wǎng)絡(luò)拓?fù)湫畔⒌腛penFlow中央控制器可以在所有網(wǎng)絡(luò)交換機(jī)上通過編程實(shí)現(xiàn)這種行為。
開源的OpenFlow控制器有Beacon和FloodLight。在交換產(chǎn)品中支持OpenFlow的網(wǎng)絡(luò)供應(yīng)商有惠普、瞻博、Pica8、思科等。雖然OpenFlow在概念上很龐大,但是它也遇到了規(guī)模和兼容性問題,因?yàn)镺penFlow操作經(jīng)常無法與網(wǎng)絡(luò)芯片相匹配,從而導(dǎo)致不同的供應(yīng)商在“兼容OpenFlow”時會遇到各不相同的問題。因此,OpenFlow的未來并不明朗。