在配置網絡時,工程師通常關注于實現網絡服務交付的各個任務。意圖驅動的網絡則將他們的注意力轉移到了整個網絡上。
特定的網絡服務要求網絡工程師投入更大的精力去實現高質量的最終用戶體驗。對于統一通信和分布式數據庫架構等服務而言,工程師需要配置基礎架構——通常是逐個設備進行配置,才能保證服務流量的正確處理。
最終,這些服務會面對最終用戶。然而,直到最近,之前關注于網絡服務交付的專業模式才集中到微配置上,而非服務背后的意圖。意圖驅動的網絡實際上是指告訴網絡你想要什么,而不是告訴它去做什么。它有不一樣的模式,它抽象各個配置,同時將網絡與服務的真正意圖更緊密地對齊。
微配置指的是通常與配置網絡設備相關的各個任務。這其中包括一些常見任務,如在交換機上配置服務質量(QoS)策略,在防火墻上配置訪問控制列表,在數據中心設備上配置巨型幀,在路由器上配置路由語句,以及編制整個網絡所需要的全部任務。
這種模式關注于與宏配置完全相反的各種任務,宏配置主要關注于整體技術,而非個體任務。例如,一個宏配置會配置整個網絡的QoS,而微配置則指各個類圖、策略圖、訪問控制列表、服務策略及其他實現網絡服務交付的操作。
網絡工程師可能會無法處理這些任務,從而導致設計、實現和部署后故障修復時間大大延長。網絡服務交付變得越來越關注于各個組件的配置,而不是任何的網絡編制。最終,網絡配置的意圖就可能迷失在處理各種瑣碎的配置任務上。
這種網絡工程實際上完全不是編制,配置意圖甚至要比宏配置更加抽象。
意圖驅動網絡背后的意圖是什么?簡單來說,意圖是指應用程序準備向最終用戶交付什么(服務)。這不同于它將如何交付服務(方式)。例如,一個新的統一通信服務的意圖可能是在網絡兩個終端之間交付高質量的語音和視頻。意圖(即What)就是指交付高質量語音和視頻。而方式就是大多數工程師最熟悉的部分:在各種設備之間配置QoS,打開防火墻的特定端口,或者配置新的虛擬LAN,用于傳輸特定的流量。
關注于服務交付方式的問題是網絡會發生變化。網絡資源一直在變動——動態路由會改變流量模式,網絡更新會出現新的硬件和軟件平臺,而網絡工程師變動則會影響實現團隊配置網絡的實際能力。通常,工程師的能力總是有一定的限度,他們總是希望網絡或應用程序永遠不要變化。
這個動態性恰恰會導致應用程序出現問題。除非一個應用程序本身的用途發生變化,否則它的意圖是不會改變的,即使底層網絡發生變化也一樣。
意圖驅動的網絡解決這個問題的方法是讓一名工程師只操作一個接口——或者是使用某種控制器,由它來告訴整個網絡應該部署哪一種服務。然后,網絡可以相應地自動完成配置。這個過程完全沒有微配置。這歸功于網絡與工程師之間的意圖引擎所實現的完全抽象。這種意圖驅動的方法可以在各種各樣的硬件平臺和軟件版本之間實現輕松的編制,完全不依賴于工程師自身的技術水平。此外,這種方法還允許網絡在環境發生變化時自己進行重新配置。
這種意圖驅動的過程不同于主流的軟件定義網絡控制器,后者可以通過一個接口來管理網絡,同時創建一些實現編制的功能。意圖驅動控制器背后的概念是它們可以給工程師提供一個預先配置好的網絡應用程序,它能夠解析意圖并根據需要將它轉換為各種語言、協議和語法,從而可配置任何類型的網絡設備。工程師不需要單擊“在千兆以太網2/3上配置服務策略”的按鈕。相反,網絡工程師只需要單擊相關的意圖策略——也稱為意圖描述,然后軟件就會智能地將配置應用到基礎架構需要的位置,完全不受平臺或軟件版本的影響。
這是一種強大的方法,它能簡化動態網絡分配與調整,從而實現高效的網絡服務交付。而且,由于它具有更大的互操作性,因此工程師完全不需要依賴任何一個網絡供應商。
實現意圖驅動的網絡連接
“編寫一次,處處運行”,這是意圖驅動網絡的主要概念。然而,它是一個來自于軟件開發的概念,并不是新事物。軟件開發者多年以來一直在做這一件事情,以便讓他們的程序能夠運行在任何操作系統上。例如,Web瀏覽器開發者必須保證他們的代碼能夠運行在任何一種操作系統上。將這種與平臺無關的接口應用到網絡上,看起來來很讓人吃驚,但是它也是保證意圖驅動網絡變成為現實的最大挑戰。
開源社區目前正在各種項目中構建這一類系統,同時在處理編寫跨平臺代碼的復雜性。但是,這并不是一件輕松的任務。編寫能夠配置任何平臺同時還能夠從網絡收集和解析數據的的代碼是一件難度巨大的工作。OpenStack、開放網絡基金會、OpenDaylight和開放網絡實驗室都在致力于設計能給系統添加這一種處理能力的方法。但是,它還需要很長的時間才能成為一種成熟產品。
編寫一個聰明的RESTful API,實現設備的自動分配,是其中一種任務。編寫一個完全與供應商無關的接口,用于配置端到端網絡服務交付,同時能夠在應用程序行為發生變化時智能地動態重新配置網絡,這是一個完全不同的任務。
幸好,這個工作并不需要重新編寫整個網絡堆棧。相反,它只是增加了一層可以慢慢部署的軟件,而且一次只會影響一部分的網絡。例如,當與意圖驅動網絡相關的方法和產品日益成熟和豐富時,網絡工程師就只需要在數據中心使用它們。
最終,意圖驅動網絡的目標是擴展網絡管理,給基礎架構增加真正的智能——所有技術都是為了讓數據包到達它們應該到達的位置,同時與業務目標保持一致。工程師最終能夠在一個網絡上聲明一個意圖,然后它就能自我配置,我們離這個目標仍然還有很遠距離。但是,或許有一天網絡工程師就能夠像電影里面一樣輸入一個命令就能夠完成網絡的配置。