本文作為碼農學ODL系列的SDN基礎入門篇,分為兩部分。第一部分,主要講述SDN是什么,改變了什么,架構是什么樣的,第二部分,簡要介紹如何去學習SDN。
1.什么是SDNSDN(Software Define Network) ,即為軟件定義網絡,可以看成網絡界的操作系統。從SDN的提出至今,其內涵和外延也不斷地發生變化,越來越多的人認為“可以集中控制、開放可編程和轉控分離的網絡”就是SDN網絡,并且還延伸出軟件定義計算、軟件定義存儲以及軟件定義安全等。SDN加快了新業務引入的速度,提升了網絡自動化運維能力,同時,也降低了運營成本。SDN的基礎知識如下圖所示,下面各小節內容將根據該圖內容進行展開論述:
1.1.SDN基礎1.1.1.SDN本質及核心
我們知道,傳統網絡中的路由器也存在控制平面和轉發平面,在高端的路由器或交換機還采用物理分離,主控板上的CPU不負責報文轉發,專注于系統的控制;而業務板則專注于數據報文轉發。所以路由器或交換機內的控制平面與轉發平面相對獨立又協同工作,如圖所示:
但這種分離是封閉在被稱為“盒子”的交換機或路由器上,不可編程;另一方面,從IP網絡的維度來考慮,采用的是分布式控制的方式:在控制面,每臺路由器彼此學習路由信息,建立各自的路由轉發表;在數據面,每臺路由器收到一個IP包后,根據自己的路由轉發表做IP轉發;
IP網絡的這種工作方式帶來了運維成本高、業務上線慢等問題,并越來越難以滿足新業務的需求,傳統上通過添加新協議、新設備等手段來緩解問題的方式,收益越來越少。窮則思變,許多人產生了革命的想法,現有的網絡架構既然無法繼續演進發展,為何不推倒重來,重新定義網絡呢?真可謂“時勢造英雄”,2006年斯坦福大學Nick McKeown教授為首的研究團隊提出了OpenFlow的概念用于校園網絡的試驗創新,后續基于OpenFlow給網絡帶來可編程的特性,SDN(Software Defined Network)的概念應運而生。
SDN將原來封閉在“盒子”的控制平面抽取出來形成一個網絡部件,稱之為SDN控制器,這個控制器完全由軟件來實現,控制網絡中的所有設備,如同網絡的大腦,而原來的“盒子”只需要聽從SDN控制器的命令進行轉發就可以了。在SDN的理念下,所有我們常見的路由器、交換機等設備都變成了統一的轉發器,而所有的轉發器都直接接受SDN控制器的指揮,控制器和轉發設備間的接口就是OpenFlow協議。其簡單模型如圖所示:
因此,我們說它是一種網絡設計理念,即利用IT技術來軟化網絡,給網絡領域帶來變革,而非某種具體的技術,其核心為:轉控分離、集中控制、開放可編程。所以SDN的提出,并不說傳統方法滿足不了什么業務需求,而只是通過SDN可以快速部署、縮短業務上線時間,能夠做得更快更好而已。其本質是網絡軟件化,提高網絡的可編程能力,是一次網絡架構的重構,而不是一種新特性、新功能。
1.1.2.分類
隨著SDN在產業界設備制造商和運營商的實踐不斷展開,SDN的概念不斷模糊,任何允許軟件對網絡可以進行編程或者配置的網絡架構,并且具體實現的技術和接口協議是各種各樣的。SDN也逐漸形成不同的發展路線:
首先,采用OpenFlow標準,轉控分離、集中控制,主張硬件標準化,控制上移到由軟件實現的控制器上,打破原有網絡的封閉狀態,受到初創公司和學院科研單位的歡迎,可以看作為革命型或狹義SDN。
其次,設備提供商感受到壓力,希望在市場繼續保持優勢,另一方面,運營商即想擁抱新理念,也想保護現有的投資,這樣希望針對現有網絡進行平滑的過渡,所以采取大多不動設備上的控制智能,控制器(只能說是一種偽控制器)與轉發設備間的接口采用NETCONF/SNMP協議,提出更為廣泛的SDN架構,可以看作演進型或廣義SDN。
最后,還有一種發展路線,它以現有IP網絡為基礎設施,在其上建立疊加的邏輯網絡,實現網絡資源的虛擬化,本質上屬于軟件定義的虛擬網絡。這一思路被稱為Overlay方案。
總的說來,這3種發展路線都能實現集中控制、可編程和開放接口,但在靈活性、使用難度以及用戶業務場景等方面存在不同之處。其優缺點如下表所示:
1.2.SDN架構1.2.1.ONF定義的SDN架構
ONF定義的SDN架構主要分為應用層、控制器層和基礎設施層,其中,應用層聚焦網絡業務邏輯開發,負責資源編排;控制器層進行全局網絡的管理;基礎設施層為各種網絡設備,負責數據的轉發。如圖所示:
從控制器層的角度來說,與應用層的接口被為北向接口(NBI, Northbound Interface),與基礎設施之間的接口被定義為南向接口(SBI, Southbound Interface)。
通過對北向接口的封裝,應用層以軟件編程的形式調用各種網絡資源和把控整個網絡的資源狀態,并對資源進行統一調度。理想情況下,應用層封裝所有的“How”操作,向用戶隱藏了網絡相關的技術信息。上層應用在調用應用層的服務時,只需描述想要“What”就可以了。但當前北向接口方面還缺少業界公認的標準。其主要原因是北向接口直接為業務應用服務,其設計需密切聯系業務應用需求,具有多樣化的特征,很難統一。
ONF定義的SDN架構中南向接口協議是OpenFlow,用于控制器和交換機之間的通信,控制器可以通過OpenFlow下發流表控制交換機,交換機也可以反饋信息給控制器,同時,OpenFlow也規定了交換機對報文的轉發方式。
總的來說,SDN架構不僅簡化了網絡設計與操作,而且也極大簡化了網絡設備本身,因為這些設備不再需要解析和處理數以千計的協議標準,只需接受來自控制器的指令。更為重要的是,網絡管理員可以通過編程的方式來集中控制數以千計的設備,而不用針對每臺設備進行手工配置,有效地縮短了業務上線的時間。
1.2.2.SDN平臺實現框架
理想是豐滿的,但現實往往呈現出很骨感,學術界提出的正統SDN,在產業界和運營商的不斷實踐下,南向接口不僅僅局限在OpenFlow,也包含了NETCONF、SNMP等協議。SDN不同的發展路線決定了SDN開發技術架構如圖所示:
SDN體系架構分為4層,分別為應用層、業務編排層、控制層和轉發層。其中,應用層專注于描述用戶業務需求,而業務編排層專注于業務需求的“How”操作封裝。需要說明的是,在運營商網絡的SDN改造部署過程,基本上采用平滑演進的策略進行,用到的協議就不再單純使用OpenFlow了。
了解了SDN的基本概念、架構以及應用場景后,如何去學習SDN呢,我們先來分析下碼農與SDN的結合點,從上面的分析可知,SDN的核心在于“轉控分離、集中控制和開放可編程”,提到“集中控制和開放可編程”,碼農的腦海中可能迅速呈現出類似下圖所示的內容:
但是當提到“轉控分離”,可能是一臉的迷茫,我連網卡是如何工作都不是很清楚,何況交換機、路由器呢? 下面針對碼農的“強于編程,弱在網絡”的特點,大致上給出了初步的學習路線,并列出了學習中容易產生困惑的問題。
學習路線主要分基礎網絡知識、技術準備、SDN基礎和SDN實戰等4個階段。如下圖所示:
1.基礎網絡知識:又分網絡設備、網絡協議和網絡拓撲等3個方面。首先,網絡設備這部分內容要清楚每種設備的問題空間、基本原理以及優缺點;其次,網絡協議的研究可以根據網絡的發展史,要清楚IP網絡的基本原理、客戶請求到服務器路徑選擇等;最后,了解公司所在網絡的基本信息,數據中心網絡的物理部署情況等。
2.技術準備:分為工具、框架和技術等3個方面。這里主要列出SDN學習需要具備的基礎技術能力,不同人員可能具有不同的技術背景,已全部掌握的人員可直接跳到SDN基礎的學習,沒有掌握的人員再補充了解相關技術即可。
3.SDN基礎:分為OpenFlow、控制器和工具等3個方面。首先,了解OpenFlow標準、控制器和交換機之間的工作流程等;其次,當前已經有很多的開源控制器,如OpenDaylight、ONOS等,需要了解其基本概念、基礎架構等信息,如MD-SAL、Yang等;最后,SDN的學習,還需要了解像Mininet之類的工具,以進行相關的實驗。
4.SDN實戰:分為實例學習、特性開發和云結合等3個方面。首先,通過控制器的Sample來了解其工作原理和特性,了解整個開發、測試、部署過程;其次,挑選可行的特性進行實際操練,掌握控制器開發的全流程;最后,與OpenStack之類的云平臺進行融合。
2.2.易混淆的幾個問題后續碼農學習ODL的系列文章直接從SDN實戰開始,所以在SDN基礎部分的學習過程中可能會遇到一些問題,這里將我們遇到的易混淆的問題羅列出來,與大家共享:
1. northbound southbound or consumer producer
南向和北向是傳統網絡中的術語,可以從網絡工程師的角度來理解,而如果從軟件工程師的角度來說,稱為生產者、消費者。
2. RESTCONF、NETCONF是南向協議還是北向協議?
首先就RESTCONF和NETCONF本身作為協議來講,是不區分北向協議還是南向協議的;其次,在實際的應用過程中,通常情況下RESTCONF用在北向,NETCONF用在南向,但同時也注意到有些廠家控制器提供的北向接口使用的是NETCONF。
3.Internal or external system
基于ODL的二次開發時,如果提供API的接口能夠滿足當前需求,那么只需基于REST API開發external System(外置式應用),如果提供的API接口不能滿足當前需求,則需要進行Internal system(內置式)的開發,可以理解為插件。
4.主動模式 or 被動模式
SDN控制有兩種工作模式:主動和被動。主動模式下,控制器將flow table信息一次性下發到交換機;被動模式下,在數據平面收到新的數據包時,控制器才將相關flow table信息下發到交換機。通常情況下,往往預先下發部分流表信息。
作者:SDNLAB--SDN/NFV開發團隊
簡介:致力于SDN/NFV等前沿技術的研究、應用與實踐,已研發推出UMS網絡流量監控、SDN智能流量調度、NFV管理編排等產品。專注為高校、企業、政府以及電信運營商等客戶提供定制化及個性化的SDN/NFV系統開發服務。