基于ONOS的SDN-IP架構概述篇
SDN-IP是ONOS上的一個應用程序,允許軟件定義網絡使用標準的邊界網關協議(BGP)連接到外部網絡。從BGP角度看,SDN網絡表現為單一的自治系統(AS),其行為與任何傳統的AS一樣。基于AS的SDN-IP應用提供BGP和ONOS之間的集成整合機制,在協議層SDN-IP的行為作為一個有規則的BGP發言人。從ONOS的角度來看,它只是使用其服務,在SDN數據平面安裝和更新相應的轉發狀態的應用程序。
1 架構目標
1.1 SDN-IP設計目標
(1)兼容性Compatibility:SDN-IP可以與已經使用BGP的網絡集成,外部、內部、或兩者之間都可以,兼容性很好。
(2)操作靈活性Operational flexibility:SDN-IP可以在一個或多個ONOS實例中運行。SDN-IP也可以在多種BGP的部署方案中使用,體現出很強的靈活性。
(3)高可用性High availability(HA):SDN-IP應用程序本身提供HA服務。只要有其中一個SDN-IP應用實例在運行,SDN-IP服務就會保持無縫連接。此外,SDN-IP利用提供ONOS的HA機制在數據平面中維持一致的轉發狀態。
(4)可擴展性Scalability:可以通過正在運行的基于BGP網絡和多個ONOS集群的SDN-IP控制大型的軟件定義網絡。
(5)協議兼容性和供應商的獨立性Protocol compatibility and vendor independence:SDN-IP依賴于標準的BGP協議交換網絡信息,并且不需要任何專有或特定于供應商的擴展。
1.2 架構概述
SDN-IP架構如圖所示:

2 連通性
2.1 SDN-IP應用intents
下面是兩種類型的SDN-IP使用應用intents的簡要說明
(1)單點對單點的intents
在外部路由器和SDN BGP Speakers之間建立BGP對等會話使用單向intents。每個intents在SDN網絡中連接兩個連接點。每個連接點包含以下信息:SDN交換機的DPID、交換機Port和連接的BGP Speaker路由器的MAC地址。
(2)多點對單點的intents
多點對單點的intents用于與外部網絡的主機連接在一起的單向intents。每個intent與每個IP前綴(目的IP)相關聯,并連接SDN網絡的入口連接點與單一的出口連接點,指向下一跳路由器的目的IP。在SDN網絡的邊緣入口,一個IP包匹配目的IP地址。選擇******的轉發項匹配轉發數據包到相應的出口連接點。此外,該數據包被轉發之前,應用“改變目的MAC地址”,使得包含出口IP路由器的數據包轉發到目的MAC地址。
2.2 SDN數據平面連通
在SDN-IP網絡的數據平面主要用于以下情況:
(1)進行內部BGP Speaker和外部BGP路由器(配置eBGP peerings)之間的BGP流量控制。
(2)橫穿SDN-IP網絡的外部IP網絡之間數據流量傳輸。
eBGP 控制流量與每個eBGP 對等的操作有關。這種流量在eBGP 對等操作配置的基礎上是點對點的、雙向的,且終點是相對靜態設定的。當一個數據平面失敗,可能會導致終點之間的路徑改變。這種故障可被自動檢測且相關的intents會被ONOS重新設置路由。目前,具體的連接點與每個BGP Speaker相關,且外部BGP路由器需要在SDN-IP配置文件中手動配置,但是將來這種需求會被淘汰。
傳輸數據流量的路徑是通過由外部BGPpeers發布的BGP路由定義。類似于常規的BGP部署,這些路由是相對動態的,且它們的數量非常大。如果BGP peer通告特定IP前綴的路由,并且被選為路由***的下一跳地址,SDN-IP將負責建立相應的數據路徑。所有的流量決定進剩余外部IP網絡的IP前綴被轉發向最匹配的外部下一跳BGP路由器上。ONOS應用intents的情況下,通過創建一個多點對單點應用intents實現IP前綴:出口路由器(即***的下一跳路由器)是(出口)單點intent,其余外部BGP路由器是(入口)多點的intents。

SDN-IP應用負責生成多點對單點的應用intents請求和用于更新BGP路由動態響應的intents。ONOS本身負責匯編這些請求、在交換機數據平面安裝相應的轉發流和以防SDN網絡發生故障重新設置路由的intents。
2.3 SDN控制平面連通
在SDN網絡和SDN-IP應用程序實例中BGP Speaker通信使用iBGP。對等會話在控制平面中創建,因此,每一個BGP Speaker連接到它。
在任何的BGP部署中 BGP Speaker和SDN-IP應用實例是互連的:一個完整的iBGP網狀、路由反射等。唯一的區別是,在SDN-IP實例它們之間不需要iBGP peerings,他們只需要與BGP Speaker互連即可。
SDN-IP實現了IBGP協議的子集:只接收處理來自BGP Speaker的BGP路由信息,但從來不發起或重新發送BGP路由。一旦SDN-IP接收來自外部路由器(經由BGP Speaker接收)的通知,它將路由信息變換成intents請求給ONOS。ONOS本身將其轉換交換機中的OpenFlow流表項。

BGP Speaker使用iBGP傳輸路由信息給SDN-IP應用實例,當在常規的BGP部署中,通過全網或者使用路由相應服務器實現互連通是非常重要的。因此,我們可以使用BGP本身所提供的故障失效性。SDN-IP應用程序實例之間是不需要iBGP peering的:peering是在BGP Speaker和SDN-IP應用程序實例之間的。
2.4 高可用性支持
SDN-IP提供使用熱備份模式支持高可用性。SDN-IP應用程序可以加載在多個ONOS實例。所有的SDN-IP應用監聽路由更新BGP的到達信息,但只有一個SDN-IP實例被指定為主實例負責推送intents到ONOS。如果主實例失敗,剩余實例中的一個將成為新的主實例繼續推送intents到ONOS。
SDN-IP使用ONOS領導選舉服務來選擇主SDN-IP實例。我們必須確保在任何時間只有一個實例推送intents,防止錯誤的intents被推送到ONOS。當每個SDN-IP實例啟動時,它參與領導選舉試圖成為主實例。選舉確保在任一時間只有一個實例可以是主實例。當主實例發生故障,選舉機制檢測到故障,并允許另一個實例接管負責成為主實例。新的主實例首先進行intents同步保證intents更新之前學習的BGP路由。一旦同步完成,主實例正常工作,為響應BGP更新繼續安裝和刪除intents。
盡管SDN-IP應用程序支持HA(高可用性),該系統仍然容易受到組件故障,除非內部BGP Speaker和BGP peer會話之間有冗余。每個SDN-IP實例能夠接收來自BGP Speaker的BGP更新,確保多個內部BGP Speaker部署在SDN網絡中。
3 限制
在SDN-IP應用程序的當前實施中具有以下限制:
(1)詳細配置信息只能在SDN-IP啟動之前配置。啟動后用戶不能改變配置,例如,當SDN-IP運行時,用戶不能添加其他外部BGP peer。
(2)只有傳輸IP流量被支持。也就是說,SDN-IP網絡里來自主機的或者決策于主機的IP流量不支持。作為應急措施,用戶可以手動創建專門的intents允許內部主機與外部網絡的通信未來這應該是SDN-IP自動完成的。
(3)SDN-IP應用默認監聽BGP連接的是非標準端口2000,這不是用于BGP連接的正常標準端口179。但是這個端口號是可配置的,它可以配置為179 ,但必須以root身份運行綁定到一個受保護的端口。以root身份運行ONOS目前還不支持。
(4) ONOS實例之間SDN-IP不會進行負載均衡。所有的工作是由一個單一的主實例進行。如果一個實例失敗,可以切換到備份的情況下運行。
(5)在SDN-IP應用端沒有明確的IBGP會話配置。默認情況下,SDN-IP應用將接受所有BGP 開放消息,并會自動配置來使用原始BGP Speaker的AS號。
(6)如果所有的SDN-IP應用程序實例被卸載,相關的應用程序intents不會自動從ONOS中刪除。
(7)如果下一跳的MAC地址發生變化,不會更新intents而使流量將停止流動。
(8)目前只支持IPv4。
(9)外部BGP路由器和內部BGP Speaker間的peer會話必須使用TCP端口179進行對等連接。只有TCP連接到端口179才被允許進出SDN網絡的對等IP地址。
(10) 由于intents框架的局限性,在1.0.0版本系統可以處理約15000路由。