SDN閑聊

註:本博文中圖片都源自互聯網,如侵犯圖作者權利,請聯繫,我將刪除之。

軟體定義網路(Sofeware DefinenNetworking,SDN)是近年來湧現的新興網路技術。SDN的核心思想主要有兩點:

1. 網路資源的可編程式控制制。例如Switch,Router,傳統的方式就是一個設備對應一個資源,需要增刪資源,就去機房插拔設備。SDN可以基於硬體或者純軟體,在一個/套設備上,通過軟體編程,虛擬出多個資源,並且可以動態增刪。

2. 把網路控制層面(controller plane)與數據轉發層面(data plane)分離。通過分離控制層面,可以提高網路整體的管控能力。統一的網路管控加上分散在各個轉發設備(也可能就是伺服器)上的轉發層面,可以更好的實現網路的管理能力。

美國斯坦福大學提出的OpenFlow協議是當前最具代表性的SDN協議,但是原則上不能將SDN與OpenFlow劃等號。現在 ONF(Open Networking Foundation)主導的以 OpenFlow為標準的SDN設計可以視為狹義的 SDN。

SDN的介面

SDN的架構需要向北向提供用戶介面,向南向提供設備管理介面。現在比較統一的南向介面就是OpenFlow。北向介面沒有一個統一的標準,OpenStack Neutron似乎可以作為一個統一的北向介面,許多SDN方案都有自己對接OpenStack Neutron的方式,例如networking-ovn,networking-odl等項目。

SDN的南向設備,可以是硬體設備,也可以是軟體設備,例如OpenVSwitch。硬體廠商多推崇基於自家硬體的SDN,以便更好的搭載售賣硬體。而在開源領域,為了達到廠商中性,一般是基於軟體實現SDN,例如OVN,Midonet,Dragonflow。

SDN控制器

SDN控制器是SDN實現中的大腦。SDN控制器可以分為集中式(Centralized)和分散式(Distributed),又可以分成主動式(Proactive)和混合式(Hybrid)。對應的可以有4類SDN控制器。Centralized Proactive、Centralized Hybrid、Distributed Proactive和Distributed Hybrid。

集中式控制器是由一個/組控制器統一管理一個SDN集群,所有的交換設備都連接到這個/組控制器上。並由這個/組控制器下發OpenFlow流表。集中控制器的負擔將隨著SDN集群的增加而加大,但是由於是集中控制,實現起來比較簡單。

分散式控制器是指,在一個SDN集群中,每個交換設備都有一個對應的控制器。每個交換設備的OpenFlow流表由對應的控制器下發。分散式控制器的負擔不隨SDN集群的增加而加大,但是控制著各個交換設備的控制器之間的數據同步,以及對應的邏輯將會使實現變得複雜。

Proactive控制器,指控制器將所有必須的網路功能都下發到交換設備。這樣設備在接收完OpenFlow轉發規則後,自己就能完成網路功能。這對於簡單的二三層轉發,或者安全組等功能,可以實現。對於一些應用層功能,例如dhcp,用OpenFlow實現將會極其複雜。這個時候一般是上送控制器,由控制器完成dhcp的解包封包,再將網路包回送至交換設備。控制器參與到網路通訊中,並結合proactive方式,即是hybrid方式。

Hybrid控制器,部分網路功能下發至交換設備完成,由交換設備上送至控制器完成。上送控制器完成的網路功能,其延時(latency)將遠大於直接在交換設備上完成。因此,在設計時,應當盡量將一些複雜的功能,並且不是很頻繁使用的網路功能交由控制器實現。

實際使用時,二三層轉發功能也可以上送控制器完成。當一個交換設備設計的路由表過多時,如果都由OpenFlow完成轉發,每次查表時間也是可觀的。這個時候可以將首包上送至控制器,控制器再下發具有一定ttl(time to live)的OpenFlow規則用於轉發。在ttl到期之後,OpenFlow流表會被刪除,這樣可以保證交換設備上的OpenFlow表項不至於太大。

4種控制器如何選擇,上圖給出了答案。小規模網路下,集中式控制器是首選,因為統一管控,不需要控制器之間同步,控制器邏輯簡單,對應的網路延時小。當網路規模上升到一定程度,分散式控制器的優勢開始體現。在相對小規模的網路中,proactive控制器更佔優勢,因為直接可以由交換機完成網路功能,不需要控制器介入。但是網路規模變得巨大時,如果還是用proactive,首先更新OpenFlow表項的代價越來越大,尤其是對集中式控制器;同時由於OpenFlow表項變得巨大,查表時間變長,對應的網路延時(latency)也加大,這個時候,應該選用hybrid控制器。

另外,在選擇SDN控制器還應考慮部署難度,HA等。分散式SDN控制器的部署比如比集中式SDN控制器要複雜,但是好在天生具備HA性能。

SDN的功能

SDN的功能其實就是網路功能,只不過加上了SDN的特色。網路功能有很多,二三層轉發,安全組,防火牆,負載均衡,DNS等等。通常可以分為兩類:

  • NetworkingnInfrastructure:提供網路基礎架構功能。或者說,提供SDN中各個終端設備(例如VM)的網路連通性功能。

  • NetworkingnService:提供網路服務功能。向SDN的用戶提供網路服務(Networking As A Service),Load Balance,Firewall,QoS等等,都可以認為是網路服務功能。

SDN可以說是Cloud中最重要的技術。以OpenStack為例,Neutron項目可以說是與Nova項目熱度相當,有時還會超過Nova。在研究Cloud的時候,SDN將會是一個不可或缺的部分。


推薦閱讀:

OpenStack容器網路項目Kuryr(libnetwork)
SDN再談
NFV再談(應用現狀篇)
VXLAN with EVPN as Control Plane
Traceroute in OpenFlow based SDN

TAG:SDN | SDN控制器 | OpenStack |