多進程OSPF及進程號的意義

來源:文萃谷 1.87W

在配置OSPF時,我們採用的是router ospf命令,在該命令後面需要加上這個OSPF進程的進程號(Process-Id),進程號用於在一台路由器上區分不同的OSPF進程。這就有點像人格分裂的感覺 —— 一個自然人有多種不同人格,每種人格之間相互獨立,互不影響。進程號的取值範圍是1-65535。

多進程OSPF及進程號的意義

拓撲中,R1使用進程號10創建了一個OSPF進程,同時激活了自己的直連接口FE0/0,而R2使用進程號20創建了一個OSPF進程,同時也在自己的直連接口上激活了OSPF。雖然這兩個進程號不一樣,但是R1-R2之間的鄰居關係建立是完全沒有問題的。因為OSPF進程號只具有本地意義,路由器之間交互的所有OSPF報文中,都不會體現任何關於進程號的信息。進程號只在一台路由器上用於區分多個OSPF進程,因此對於R1而言,它並不關心它的直連OSPF鄰居R2使用的是什麼OSPF進程號,10也號,20也罷,這就有點像“自己的事自己知道就行“ -- 本地意義。

當然,在實際的網絡部署中,除非有特定的需求,我們還是建議全網使用統一的進程號,雖然每台設備使用不同的進程號對OSPF的運行沒什麼影響,但是卻給網絡的管理維護帶來了多餘的成本,你不會這麼幹的,對吧?

  1. 多個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),例如描述的LSA,缺省時不會傳遞到進程23的(這是因為在R2,這兩個OSPF進程互相獨立互相隔離),當然,從R3學習過來的OSPF路由,R2雖然自己能學習到,但是照樣不會傳遞給R1,這就好像,這兩個進程雖然都在R2上,但是彼此之間有着一道鴻溝,世界上最遙遠的距離,莫過於此啊。

再者,R2這兩個OSPF進程雖然説彼此隔離,但是都可以為R2自身貢獻路由,例如如果R1更新過來一條路由,R3更新過來一條,那麼在R2的全局路由表裏都是能看到這兩條路由的。但這兩條路由不會互相灌進對方的OSPF進程(造成的直接結果是R1沒有R3的路由,R3沒有R1的路由),除非 -- 對了,路由重發布,你懂的。

  2. OSPF進程之間的路由重發布

同一台路由器上的不同OSPF進程相互獨立,各自維護自己的LSDB。如果要把一個OSPF進程內的路由注入到另一個進程中,就需要部署路由重發布,例如上圖所示,R2作為一台ASBR,要把進程12中的路由注入到進程23中,配置如上。當然,如果要實現全網路由互通,則還需要在OSPF進程12中,將進程23的路由重發布進來。

  3. 什麼時候會使用不同的OSPF進程

我們知道一台路由器可以創建多個OSPF進程,而且進程之間相互隔離。一般情況下,當我們在做網絡建設時,整個網絡就是一個統一的路由選擇域,如果選用OSPF作為路由協議,則所有的OSPF路由器使用一個OSPF進程即可。

展示了一個大型企業的網絡拓撲,R1、R2、R3及R4是省公司的設備,SW1、SW2及往下是市公司的設備,R5是區縣站點設備(實際上有多個區縣站點,此處只顯示了一個)。為了實現市公司與各區縣站點的網絡互通,我們在市公司所有設備,以及區縣站點的所有路由器上都配置了OSPF並且進行了多區域的規劃。由於整個企業數據網絡的規模較大,要想打通整個網絡的路由,使用一個OSPF域直接從區縣站點往上拉到省公司,顯然是不靠譜的,一來整個域太大,路由前綴數量太多,二來OSPF的多區域設計在面對這麼大規模網絡的時候顯得還是有點力不從心,三來總公司並不希望看到分公司以及下面的子站點的路由明細,路由彙總勢必是要考慮的,加之對流量的走向還有嚴格的要求,策略部署上如何考慮?因此為省公司網絡規劃了另外一個OSPF域,在省公司的邊界設備R3、R4上創建兩個OSPF進程,進程1面向總公司,進程2面向下面的市公司及區縣站點。兩個進程相互獨立不互相干擾,而R3及R4又能夠學習到省公司、分公司及各個區縣站點的'路由,兩個OSPF域可以獨立規劃,域內Area的設計又變得更加寬鬆和靈活。

當然,省公司、總幹以及地市公司是需要相互通信的,這時候由於省公司的網絡屬於OSPF進程1,而市分公司及區縣站點的網絡屬於OSPF進程2,相互獨立,為了把路由打通,就需要在R3和R4上執行OSPF進程之間的路由相互重發布。一旦把R3、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)。

熱門標籤