當前位置:文思屋>社會工作>電腦培訓>

多程序OSPF及程序號的意義

文思屋 人氣:2.22W

在配置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程序即可。

展示了一個大型企業的網路拓撲,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)。

TAGS:OSPF 程序