前言算法
今年3月,國家人大會議提出,要加快5G網絡、數據中心等新型基礎設施的建設進度。新型基礎設施建設,包括信息基礎設施、融合基礎設施以及創新基礎設施。數據庫
信息基礎設施包括以5G、物聯網、工業互聯網、衛星互聯網爲表明的通訊網絡基礎設施;以人工智能、雲計算、區塊鏈等爲表明的新技術基礎設施;以數據中心、智能計算中心爲表明的算力基礎設施等。其中,雲計算做爲智能世界的冷靜大腦,可以更好地計算數據,是將來數字經濟的基礎設施,也將在推進經濟與社會的進步中,發揮更加劇要的做用。安全
隨着新基建建設速度的不斷加快、建設規模的不斷擴大,雲計算中對網絡的要求也愈來愈高,尤爲以大型數據中心網絡上云爲表明,構建雲數據中心,如何解決雲數據中心與物理數據中心聯接的問題也愈發明顯。以往,多數雲平臺通常是經過加載「外部網絡」到達物理交換機或防火牆設備上,而後再經過物理交換機或防火牆,與物理數據中心網絡實現路由互通;但這種方式也增長了硬件及運維的成本。在此狀況下,OSPF就成了可以很好解決雲平臺內部網絡和物理外部網絡之間鏈接問題的「橋樑」。網絡
OSPF路由協議簡架構
在瞭解OSPF的基本概念以前,咱們先大概介紹下路由。運維
衆所周知,路由分爲直連路由、靜態路由和動態路由。其中,動態路由經過動態路由協議進行維護,動態路由協議包括了RIP、OSPF、IS-IS等內容。動態路由協議經過路由信息的交換生成並維護轉發所需的路由表,當網絡拓撲結構改變時動態路由協議能夠自動更新路由表,並負責決定數據傳輸的最佳路徑。在此環境下,管理員不須要像對待靜態路由同樣,經過人工方式對路由器上的路由表進行維護,而是在每臺路由器上運行一個路由協議。這個路由協議會根據路由器上接口的配置及所鏈接的鏈路狀態,生成路由表中的路由表項。學習
OSPF是一種基於SPF算法的鏈路狀態的內部網關路由協議,全稱叫開放最短路徑優先協議。下圖爲OSPF路由協議實現「自力更生」的過程:區塊鏈
每臺運行OSPF的路由器都瞭解整個網絡的鏈路狀態信息。首先,OSPF的收斂過程由鏈路狀態公告LSA(Link State Advertisement)泛洪開始,收到LSA的路由器根據LSA提供的信息,創建本身的鏈路狀態數據庫LSDB(Link State Database)。以後,經過SPF算法,在LSDB的基礎上自行計算,構建起到每一個網絡的最短路徑樹。最後,經過最短路徑樹,得出到達目的網絡的最優路由,並將其加入到IP路由表中。測試
在此過程當中,只有創建起鄰接關係纔會計算路由信息。在使用OSPF以後,路由器會週期性的發送Hello報文;當收到鄰居發來的Hello包之後,狀態變動爲Init狀態;路由器互相收到了從鄰居發來的Hello報文,就會切換爲2-Way狀態;在此狀態下,雙向通訊已經創建,可是還沒有與鄰居創建起鄰接關係,這是創建鄰接關係之前的最高級狀態。雲計算
若是網絡爲廣播網絡,這個時候就會選舉DR/BDR(DR:廣播網絡中的指定路由器,全部鄰居只和DR/BDR同步LSA條目,以此減小OSPF流量;BDR:備份指定路由器),與後續全部路由器創建關係,減小鄰居會話;再以後,網絡會通過ExStart、Exchange、Loading、Full狀態創建起鄰接關係,再由DR將計算出的整個網絡的拓撲信息發送給全部路由器;最後,全部路由器以本身爲根,根據算法計算出到各網段的最優路徑並寫入路由表。該段所描述過程以下圖所示:
數據鏈路層協議分爲多種,Ethernet、PPP、HDLC及幀中繼等,通常經常使用的爲Ethernet。那麼當數據鏈路層協議是Ethernet的時候,OSPF支持的默認網絡類型爲廣播類型,在此網絡類型下,須要進行DR和BDR的選舉,選舉的目的是減小鄰居會話,產生網絡LSA。通常在鄰居發現完成以後,路由器會根據網段類型、以及參與選舉的每一個接口的優先級,進行DR選舉,值越高越優先,默認爲1;當優先級相同時,再去比較Router ID,值越大越優先。爲了給DR作備份,還要選舉一個BDR。DR、BDR會與網絡上全部的路由器創建鄰接關係。
爲了控制LSA 泛洪的範圍,減少LSDB的大小,實現網絡快速地收斂,OSPF協議會按照必定標準,將一個自治系統劃分爲不一樣區域,用於分層管理路由器。
一、Standard:標準區域(Standard Area),支持全部類型的LSA;
二、Stub:末節區域(Stub Area),不支持第四、5類型的LSA;
三、NSSA:Stub衍變的末節區域(Not So Stubby Area),只支持學習第7類型的LSA。
其中,Stub區域中路由器的路由表規模,以及路由信息傳遞的數量,都會大大減小。Stub區域是不能引入外部路由的,這樣能夠避免大量外部路由對Stub區域路由器帶寬和存儲資源的消耗。
那麼,對於既須要引入外部路由又要避免外部路由帶來資源消耗的場景,Stub區域就再也不知足需求了。所以,Stub區域的變形——NSSA區域(not so stub area)就產生了。
OSPF在ZStack雲平臺中的實現
咱們在ZStack雲平臺中的網絡資源-VPC-路由協議資源裏面,能夠配置OSPF路由協議。
區域ID:在一個自治系統中,每一個OSPF區域採用區域ID標識,全局惟一。0號區域(區域ID:0.0.0.0)稱爲骨幹區域,全部區域必須與骨幹區域連通。
區域類型:OSPF區域包括Standard、Stub及NSSA三種類型。同一VPC路由器能夠添加到不一樣OSPF區域;但同一VPC路由器上的網絡(VPC網絡、公有網絡)只能添加到一個OSPF區域。
認證方式:爲加強協議包的安全性,OSPF協議支持區域認證加密,OSPF區域共支持三種認證方式。一、None:接收報文時不進行身份認證;二、Plaintext:接收報文時經過報文中攜帶的密碼進行身份認證;三、MD5:接收報文時經過報文中攜帶的Key ID和密碼散列值進行身份認證。
OSPF的應用場景
場景一:用戶存在於雲平臺上的兩個不一樣的虛擬VPC網絡環境。爲了兩個VPC網絡環境可以相互通訊,在ZStack環境中,建立同一區域的OSPF區域,將兩個三層網絡隔離的虛擬VPC路由器加入到同一個OSPF區域;路由器間經過OSPF協議創建鄰居關係,相互通訊,便可實現兩個不一樣的虛擬VPC路由器中網絡之間的相互通訊。過程以下圖所示:
場景二:用戶存在兩套網絡環境:一套爲雲平臺上的虛擬VPC網絡環境、一套爲物理環境中已配置OSPF協議的傳統網絡環境。爲了兩套網絡環境可以相互通訊,在ZStack環境中,建立一個與物理環境中同樣的OSPF區域,將三層網絡隔離的虛擬VPC路由器和傳統路由器加入到同一個OSPF區域;路由器間經過OSPF協議創建鄰居關係,相互通訊,就可實現虛擬VPC路由器中的網絡與傳統網絡間相互通訊。過程以下圖所示:
不一樣VPC網絡經過OSPF實現網絡互通實戰
最後,咱們經過實戰來演示OSPF的配置過程。咱們先看下OSPF的配置流程圖,這裏咱們拿應用場景一爲例。首先,建立兩個VPC網絡,驗證未使用OSPF協議時網絡的連通性;而後,建立OSPF區域,將VPC路由器加入OSPF區域;最後,驗證OSPF協議生效後的網絡連通性。
具體步驟以下:
第一步:建立兩個VPC網絡,分別爲VPC網絡-01(192.168.3.0/24)和VPC網絡-01(192.168.4.0/24)。
第二步:分別使用兩個VPC網絡建立兩臺雲主機,分別爲VPC雲主機-01(地址:192.168.3.254)和VPC雲主機-02(地址:192.168.4.101)。
第三步:驗證未使用OSPF協議時網絡的連通性,在VPC雲主機-01上ping測試VPC雲主機-02,能夠看到沒法正常通訊。
第四步:建立OSPF區域並將VPC路由器加入到OSPF區域中,區域ID爲0.0.0.0,類型爲Standard標準區域,認證方式None。
等待一段時間後,能夠看到DR和BDR已經選舉成功,且鄰居狀態爲Full狀態,鄰接關係創建成功。
第五步:驗證使用OSPF協議時網絡的連通性,在VPC雲主機-01上ping測試VPC雲主機-02,能夠看到可以正常通訊。
總結
經過OSPF爲不一樣VPC網絡之間、雲平臺內部網絡與物理外部網絡之間,搭建起通訊的橋樑,簡化了網絡架構,減小了硬件及運維的成本,也提升了雲平臺的簡單易用性。
從此,ZStack也將在產品化道路上持續發力,提供一個簡單、健壯、彈性、智能的可信賴的、產品化的雲平臺。