SDN控制器是網(wǎng)絡的一種操作系統(tǒng),是軟件定義網(wǎng)絡中的應用程序,負責流量控制以確保智能網(wǎng)絡,允許服務器告訴交換機向哪里發(fā)送數(shù)據(jù)包,基于軟件的網(wǎng)絡控制使得集成業(yè)務申請和網(wǎng)絡更容易。
1. 南向接口
這個方面很好描述,交換機來自不同的廠家,控制器來自不同的廠家,如何讓它們互聯(lián)互通?本質(zhì)上,這不是一個技術(shù)問題,而是不同廠商的利益問題。ONF的OpenFlow和OF-Config,Cisco的OpFlex,甚至有些廠家使用XML/Json + REST API。根據(jù)目前的情況,要建立南向接口標準困難重重。
OpenFlow + OF-Config是目前最好的選擇,標準相對而言最完善,開源的實現(xiàn)最完整并且已經(jīng)有廠家開始開始支持OpenFlow1.3和1.4了?;贠penFlow的系統(tǒng)已經(jīng)在Google得到了部署[link]。
對于OpFlex和ACI,博主還呈觀望態(tài)度。如果沒有Cisco之外的其他交換機廠商支持,用戶仍然會陷入vendor lock-in的窘境,希望通過SDN節(jié)省成本可能會比較困難。
對于采用XML/Json + REST API作為南向接口,博主并沒有特別強烈的偏好。不少云服務提供商的網(wǎng)絡就是用REST API從控制器向交換機推送配置的。唯一的問題是:這種集中的配置管理其實只是包裝在傳統(tǒng)網(wǎng)絡上面的一個feature,交換機之間仍然通過傳統(tǒng)的二層三層協(xié)議互聯(lián)互通。這種方案不會節(jié)省網(wǎng)絡部署和運維的成本,相反,由于這個新的feature,企業(yè)可能還要購買額外的軟件,聘請額外的工程師圍繞這個新feature進行開發(fā)和維護。這也從一個側(cè)面解釋了為什么有些企業(yè)部署所謂的SDN之后,成本反而增加:它們SDN的不徹底。
2. 分布式的狀態(tài)管理
也許大家會問:SDN都集中控制了,哪里需要分布式的狀態(tài)管理呢?但事實上,這是一個非常棘手的問題。博主會在之后的文章里詳細討論這個問題,這里給大家舉個例子先:試想在SDN網(wǎng)絡中的一條link突然斷了,交換機將這個事件通知了SDN控制器。SDN控制器決定將所有經(jīng)過這條link的流轉(zhuǎn)移到另外一條路徑上,換言之,僅僅斷掉一條link,新舊路徑上的每一個交換機都需要做出相應的更新。更復雜的問題是:SDN控制器應該以怎樣的順序來更新眾多的交換機呢?由于SDN控制器和各個交換機的通信延時,控制平面的擁塞狀況,交換機CPU的負載不同,SDN控制器發(fā)給各個交換機的Flow_Mod會無序的生效。那么,在流表被更新的這段時間,網(wǎng)絡便處于一個完全無法描述的狀態(tài)。擁塞丟包,路由黑洞都可能在這段時間發(fā)生。如果這段時間足夠的短,整個網(wǎng)絡馬上從上一個穩(wěn)定的狀態(tài)進入到下一個穩(wěn)定的狀態(tài),大家也需可以接受。但是如果由于某些原因,這次狀態(tài)變化失敗,我們是否允許網(wǎng)絡處于一個未知的中間狀態(tài)?我們是否需要像數(shù)據(jù)庫那樣支持網(wǎng)絡狀態(tài)的回滾?通過這個簡單的例子,我們已經(jīng)發(fā)現(xiàn),要維持SDN控制器和網(wǎng)絡中所有交換機的狀態(tài)保持同步是一件非常困難的事情。如何解決這個問題,博主會在稍后的博文中分享一些教訓。
3. 用戶模型到轉(zhuǎn)發(fā)模型的映射
正如Martin所說,這個問題是SDN中最難也是最容易被忽略的一個問題。我們不妨集體腦補一個場景,看看這究竟是一個什么樣的問題:博主我剛剛用最高大上的SDN技術(shù)搭建了一個支持多租戶的數(shù)據(jù)中心(multi-tenancy datacenter)。我很開心的迎來了第一個租戶(tenant),這個租戶的要求是建立一個擁有2 臺web服務器和1臺數(shù)據(jù)庫服務器的網(wǎng)站。web 服務器和數(shù)據(jù)庫屬于不同的子網(wǎng),在web服務器之前需要部署一個防火墻。web和數(shù)據(jù)庫之間只允許在TCP端口1234上進行通訊。要命的是,這個租戶希望自己能夠一站式的完成所有以上的配置。我們仔細想想這個要求意味著什么。首先,SDN控制器要允許不同的租戶登錄,并且每個租戶僅僅能夠看到和配置自己的網(wǎng)絡及服務。其次,SDN控制器需要定義一套配置語言,并且這套語言僅僅需要描述業(yè)務邏輯,和底層網(wǎng)絡沒有絲毫的關(guān)系。再次,在租戶定義完成之后,不論實際網(wǎng)絡的拓撲是什么樣子,SDN控制器都需要把租戶的配置轉(zhuǎn)變?yōu)榫W(wǎng)絡中實實在在的流表。在上面的這個例子中,SDN控制器甚至需要部署防火墻等網(wǎng)絡服務。有些數(shù)據(jù)中心是使用專門的硬件來履行這些網(wǎng)絡服務的,那么SDN控制器就一定要準確的計算和更新流表,確認網(wǎng)絡流量會沿著正確的路徑經(jīng)過這些硬件服務節(jié)點。
在設計SDN系統(tǒng)時,還存在一些更難的問題,比如高可靠性(high availability),自動化部署(zero-touch provisioning),無丟包升級(hit-less upgrade)等等。之后的博文中會陸續(xù)涉及。在這里博主只想強調(diào):要設計一個最最基本的SDN系統(tǒng),這里所提到的三個方面是一定要仔細斟酌,設計和施工的。
以上及時腳本之家小編為大家介紹的關(guān)于SDN控制器的三個用處,想了解更多精彩教程請繼續(xù)關(guān)注腳本之家網(wǎng)站!
關(guān)鍵詞: 控制器功能