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