OSPF進程號的意義及多進程OSPF—吳錦霖分享
1. OSPF進程號的概念安全
在配置OSPF時,咱們採用的是router ospf命令,在該命令後面須要加上這個OSPF進程的進程號(Process-Id),進程號用於在一臺路由器上區分不一樣的OSPF進程。這就有點像人格分裂的感受 —— 一個天然人有多種不一樣人格,每種人格之間相互獨立,互不影響。進程號的取值範圍是1-65535。
上圖所示的拓撲中,R1使用進程號10建立了一個OSPF進程,同時激活了本身的直鏈接口FE0/0,而R2使用進程號20建立了一個OSPF進程,同時也在本身的直鏈接口上激活了OSPF。雖然這兩個進程號不同,可是R1-R2之間的鄰居關係創建是徹底沒有問題的。由於OSPF進程號只具備本地意義,路由器之間交互的全部OSPF報文中,都不會體現任何關於進程號的信息。進程號只在一臺路由器上用於區分多個OSPF進程,所以對於R1而言,它並不關心它的直連OSPF鄰居R2使用的是什麼OSPF進程號,10也號,20也罷,這就有點像「本身的事本身知道就行「 -- 本地意義。服務器
固然,在實際的網絡部署中,除非有特定的需求,咱們仍是建議全網使用統一的進程號,雖然每臺設備使用不一樣的進程號對OSPF的運行沒什麼影響,可是卻給網絡的管理和維護帶來了多餘的成本,你不會這麼幹的,對吧?
網絡
2. 多個OSPF進程
上面的拓撲頗有意思,在R2上,常規的作法是用一個進程號建立一個OSPF進程,同時將本身的兩個直鏈接口都宣告進這個OSPF進程,可是爲了講解OSPF進程ID的本地意義,我這裏在R2上使用兩個進程號分別建立了兩個OSPF進程,而且分別宣告了R2的兩個直鏈接口,換句話說,R2使用OSPF進程12與R1創建鄰居關係,使用OSPF進程23與R3創建OSPF鄰居關係。如此一來,R2在本地就有了兩個OSPF進程,使用進程號12及23進行區分。整個網絡中也就出現了兩個OSPF域(OSPF Domain)。這兩個OSPF進程,都會各自從其鄰居R1和R3學習到OSPF路由,可是值得強調的是:學習
· 這兩個OSPF進程相互獨立和隔離(兩個OSPF Domain),兩個進程獨立維護各自的LSDB。換而言之R2經過OSPF進程12從R1學習到的OSPF路由(嚴格的說,應該是LSA),例如描述1.1.1.0/24的LSA,缺省時不會傳遞到進程23的(這是由於在R2,這兩個OSPF進程互相獨立互相隔離),固然,從R3學習過來的OSPF路由,R2雖然本身能學習到,可是照樣不會傳遞給R1,這就好像,這兩個進程雖然都在R2上,可是彼此之間有着一道鴻溝,世界上最遙遠的距離,莫過於此啊。設計
· 再者,R2這兩個OSPF進程雖說彼此隔離,可是均可覺得R2自身貢獻路由,例如若是R1更新過來一條路由1.1.1.0/24,R3更新過來一條3.3.3.0/24,那麼在R2的全局路由表裏都是能看到這兩條路由的。但這兩條路由不會互相灌進對方的OSPF進程(形成的直接結果是R1沒有R3的路由,R3沒有R1的路由),除非 -- 對了,路由重發布,你懂的。router
3. OSPF進程之間的路由重發布接口
同一臺路由器上的不一樣OSPF進程相互獨立,各自維護本身的LSDB。若是要把一個OSPF進程內的路由注入到另外一個進程中,就須要部署路由重發布,例如上圖所示,R2做爲一臺ASBR,要把進程12中的路由注入到進程23中,配置如上。固然,若是要實現全網路由互通,則還須要在OSPF進程12中,將進程23的路由重發布進來。進程
4. 何時會使用不一樣的OSPF進程路由
咱們知道一臺路由器能夠建立多個OSPF進程,並且進程之間相互隔離。通常狀況下,當咱們在作網絡建設時,整個網絡就是一個統一的路由選擇域,若是選用OSPF做爲路由協議,則全部的OSPF路由器使用一個OSPF進程便可。
上圖展現了一個大型企業的網絡拓撲,R一、R二、R3及R4是省公司的設備,SW一、SW2及往下是市公司的設備,R5是區縣站點設備(實際上有多個區縣站點,此處只顯示了一個)。爲了實現市公司與各區縣站點的網絡互通,咱們在市公司全部設備,以及區縣站點的全部路由器上都配置了OSPF而且進行了多區域的規劃。因爲整個企業數據網絡的規模較大,要想打通整個網絡的路由,使用一個OSPF域直接從區縣站點往上拉到省公司,顯然是不靠譜的,一來整個域太大,路由前綴數量太多,二來OSPF的多區域設計在面對這麼大規模網絡的時候顯得仍是有點力不從心,三來總公司並不但願看到分公司以及下面的子站點的路由明細,路由彙總勢必是要考慮的,加之對流量的走向還有嚴格的要求,策略部署上如何考慮?所以爲省公司網絡規劃了另一個OSPF域,在省公司的邊界設備R三、R4上建立兩個OSPF進程,進程1面向總公司,進程2面向下面的市公司及區縣站點。兩個進程相互獨立不互相干擾,而R3及R4又可以學習到省公司、分公司及各個區縣站點的路由,兩個OSPF域能夠獨立規劃,域內Area的設計又變得更加寬鬆和靈活。文檔
固然,省公司、總幹以及地市公司是須要相互通訊的,這時候因爲省公司的網絡屬於OSPF進程1,而市分公司及區縣站點的網絡屬於OSPF進程2,相互獨立,爲了把路由打通,就須要在R3和R4上執行OSPF進程之間的路由相互重發布。一旦把R三、R4設計爲路由重發布的執行點,他倆瞬間就變得很是重要和牛逼了,由於在重發布的過程當中,能夠執行路由策略、能夠作路由過濾,更能夠作路由彙總,網絡的設計和規劃就變得很是有彈性了。
下面再來看多進程OSPF的另外一個例子:
在上圖所示的網絡中,存在兩個不一樣的業務。生產及辦公,兩個業務各有本身的服務器網絡,兩臺Router分別鏈接着這兩個業務的服務器網絡。而終端用戶則鏈接在SW上,如今終端用戶須要訪問各自業務的服務器,那麼SW固然是須要有相應的路由的。咱們但願將生產及辦公的業務進行隔離,可是這兩個業務的終端用戶又都是鏈接在SW上,如何隔離?很簡單,在SW上建立兩個OSPF進程,其中進程1用於生產業務,進程2用於辦公業務。在OSPF進程1中,激活VLAN10及VLAN20對應的SVI,並激活與SC-Router對接的三層接口;在OSPF進程2中,激活VLAN30、40對應的SCI,並激活與BG-Router對接的三層接口,如此一來辦公及生產服務器網段的路由經過這兩個OSPF進程在SW上進行了隔離。
這的確是一種好方法,可是雖然OSPF進程是隔離的,SW的全局路由表中卻擁有者生產及辦公兩個業務的路由,也就是說兩個業務的路由實際上在SW這個點上是打通的,顯然不夠安全,若是有人從辦公網絡登到辦公終端,而後再從辦公終端跳轉,去訪問生產服務器就麻煩了。因此,咱們又引入了另外一個概念——VRF(Virtual Routing Forwarding,虛擬路由轉發),所謂的VRF你能夠理解爲虛擬設備,經過在SW上建立VRF實例,而且將生產的OSPF進程關聯到一個VRF實例中,從而完全將生產路由與辦公路由進行隔離(辦公路由及業務跑在根設備上,生產路由及業務跑在VRF實例上,二者徹底隔離,能夠想象爲兩臺SW)。關於VRF的進一步內容,請查閱相關文檔,這裏篇幅所限,不作詳細探討。