深入探討OSPF環路問題

前言:

OSPF是我們每一個網絡工程師都非常熟悉的一個IGP協議,因爲其自身的優點(配置簡單,分層設計,網絡類型豐富等)使得OSPF在現有的網絡中部署的非常之多,各種討論OSPF的文章及案例也層出不窮,所以我就在想,如果我要以OSPF爲題寫一篇技術型文章,到底寫什麼樣的內容纔會讓你們有觀看的***,絞盡腦汁最後把思路聚焦於環路的問題上。

我們都知道OSPF是基於SPF算法的動態路由協議,SPF算法有一個最大的優點是可以保證網絡的絕對無環,但因爲OSPF採用的是分區域設計,每一個區域都單獨的維護各自的數據庫,執行各自的SPF算法,所以SPF可以保證OSPF無環的前提條件是在同一個區域內,即在同一個區域內,OSPF構建的網絡是一個絕對無環的網絡。但OSPF區域間信息的傳遞是依靠3 類lsa,而3類lsa裏面攜帶的其實就是路由,所以我們說OSPF在區域間是存在失量形爲(直接傳遞路由的形爲稱爲失量形爲)的,因爲失量形爲的存在,也就導致了OSPF的環路問題。

接下來,我會帶領大家進入OSPF環路的世界,也會讓大家見識到當初設計OSPF協議的工程師是如何費盡心思的解決OSPF環路問題的。

環路場景:

場景一:OSPF區域間環路

我們都知道,OSPF在設計區域結構的時候有兩個非常重要的規則:

規則一、所有非骨幹區域都必須與骨幹區域相連

規則二、骨幹區域不能被分割

因爲有這兩個規則的存在,說實話大大的限制了OSPF在部署時的靈活性,那協議開發者爲什麼要設計這兩個規則出來呢? 如果沒有這兩個規則又會帶來什麼問題?帶着這此問題,我們來看兩個拓撲:

在這裏插入圖片描述

如圖一所示(假定沒有所有非骨幹區域都必須與骨幹區域相連這條規則):

1、R6上有一個loopback接口,地址爲:6.6.6.6/32,宣告進了Area 4.

2、R6會產生關於6.6.6.6的1類lsa,類型爲stub,並傳遞給R2。

3、因爲R2位於區域邊界,連接兩個不同的區域,所以會把1類lsa中描述路由信息的stub轉換爲3類lsa,並在其它區域傳遞。

4、在圖一中,R1;R3;R4也都位於區域邊界,所以當R1收到這份3類lsa時,會傳遞給R3,R3此時又傳遞給R7,R7傳遞給R4,R4同理也會傳遞給R2。

5、此時R2會認爲去往6.6.6.6這個網段有兩條路徑可達,一條是直接走R6,另一條是走R4,如果R2選擇了R4去往6.6.6.6,那就產生了R2-R4-R7-R3-R1-R2這個環路。

總結:因爲有了以上環路的風險,所以開發者在設計OSPF時必須解決這個問題,也就有了規則一(所有非骨幹區域都必須與骨幹區域相連),那協議的設計者是如何保證規則一不被打破的呢? 要明白這個問題,首先需要明白一個非常重要的概念:ABR(區域邊界路由器),需要滿足以下三個條件才能成爲一臺真正意義上的ABR:

1、至少連接兩個區域

2、連接的區域中有一個是區域零(骨幹區域)

3、在區域零中至少有一個活躍的鄰居

而定義ABR的作用就在於:只有ABR才能產生3類lsa,如圖一所示,R3與R4都連接了兩個區域,但他們卻都不是ABR(不滿足第2第3條),也就是說當R1這臺ABR把描述6.6.6.6這條路由的3類LSA傳遞給R3時,因爲R3不是ABR,所以不會把該條3類LSA傳遞給R7,R4在區域3中也就收不到這份3類lsa,同理R2也不會從區域2中收到關於6.6.6.6網段的3類LSA,也就防止了環路的產生。

接下來我們來研究一下第二個規則的必要性:

在這裏插入圖片描述

如圖二所示:(假定骨幹區域能被分割)

1、R2上有一個loopback接口,地址爲2.2.2.2/32,宣告進了區域3。

2、R2作爲區域2的ABR,所以會向區域2內產生關於2.2.2.2網段的3類LSA

3、R4從區域2中學習到此條3類LSA,因爲R4也是一臺ABR,所以R4也會向區域0中產生關於2.2.2.2網段的3類LSA。

4、R3從區域0中學習到此條3類LSA,因爲R3也是一臺ABR,所以R3也會向區域1中產生關於2.2.2.2網段的3類LSA。

5、R1從區域1中學習到此條3類LSA,因爲R1也是一臺ABR,所以R1也會向區域0中產生關於2.2.2.2網段的3類LSA。

6、此時R2學習到了兩條關於2.2.2.2的路由,一條是自己產生的,另一條是R1發過來的,當R2自己產生的2.2.2.2不可達時,就會優選從R1過來的路由,所以就會導致R2訪問2.2.2.2時出現R2-R1-R3-R4-R2這樣一條環路。

總結:有了環路,一定要想辦法規避,所以針對圖二的環路問題,協議開發者制定了規則二(骨幹區域不能被分割),爲了保證規則二不會被打破,OSPF規定:從非骨幹區域收到的3類LSA,ABR能接收但不會使用這條3類LSA(此條規定也可以稱爲OSPF的水平分割原則)。所以在上述的第三步中,R4作爲一臺ABR,從非骨幹區域(Area 2)中收到一條3類LSA,R4是不會處理的(不會參與路由計算,不會泛洪),在上圖中R4與R3都無法訪問2.2.2.2網段,從而避免了環路。

場景二:OSPF外部路由引起的環路

OSPF的路由可以分爲兩種,一種是內部路由,由1類,2類,3類LSA形成的路由都是內部路由,即network產生的路由。另外一種是外部路由,由5類,7類LSA形成的稱爲外部路由,即import產生的路由。內部路由的環路問題可以通過場景一的內容解決,那外部路由是否會有環路問題?以及我們的解決辦法又是什麼呢? 在正式講外部路由引起的環路問題時,需要先科普一下OSPF的一些相關知識點:

1、特殊區域:OSPF爲了能適應各種環境及路由器的組網,開發了特殊區域這一概念,OSPF的特殊區域可分爲兩種類型:

A、stub區域:stub區域拒絕5類lsa進入,即拒絕外部路由進入本區域,也不能在本區域下面引入外部路由,區域內的路由器通過ABR下發的默認路由來訪問外部網絡。

B、NSSA區域:這是一種特殊的stub區域,它保持了stub區域拒絕5類lsa的特點,但是它能允許在該區域引入外部路由,外部路由以7類lsa的形式存在於本區域中,nssa區域的ABR會向其它區域把此7類LSA翻譯(轉換)成5類LSA(俗稱7轉5),使其它區域的路由器可以訪問此外部路由。

2、外部路由類型:ospf外部路由有兩種類型

A、Type 1:也稱爲E1。路由器在計算type1路由的Cost時,會把此路由的外部cost(ASBR到達目標網段的cost)與內部cost(本路由器到達ASBR的cost)相加。

B、Type 2:也稱爲E2,引入路由時默認爲此類型,路由器在計算type2路由的cost時,只計算外部cost,而忽略內部cost。但當一臺路由器收到兩條相同的type2路由時,首先會對比外部cost的值,如果一樣再對比內部cost值。

3、FA地址:FA的全稱爲forwarding address,是5類lsa與7類lsa中的一個字段,FA字段可以影響路由器的選路,所以它的作用是用於解決次優與環路。(FA作爲OSPF協議中的一個重點與難點,要講的東西可以有很多,因爲本文章我們主要講解環路,所以FA只會以結論的形式引入)。

4、外部路由的選路問題:大致可分爲兩種情況

情況一:外部路由中未包含FA地址:此時路由器計算去往ASBR的路徑。

情況二:外部路由中包含FA地址:此時路由器直接計算去往FA的路徑。

回顧了以上知識點後,我們來看這樣一張拓撲圖:
在這裏插入圖片描述

如圖三所示:區域1爲NSSA區域,各鏈路的cost如圖所示:

1、在R1上把1.1.1.1引入OSPF,此時R1會產生關於1.1.1.1網段的7類LSA。

2、R2與R3作爲Area1的ABR,都有責任進行7轉5的動作,但OSPF規定默認情況下只有R-ID大的才能進行7轉5,R2與R3的R-ID如圖所示,即R3會進行7轉5的動作,由R3產生關於1.1.1.1的5類lsa,並在Area0中泛洪。

3、R4從Area 0中收到此5lsa,並泛洪給R2。

4、我們來分析R4如何去往1.1.1.1,此時會有兩種情況:

情況一:R4收到的這條5類LSA中FA地址爲0.0.0.0

根據OSPF外部路由的選路規則,當5類LSA中FA地址爲0時,則計算去往ASBR的路徑。

1、此時產生此條5類LSA的是R3,所以R3爲ASBR,R4可直接通過Area 0到達ASBR(R3)。

2、R3是通過Area 1學習到的1.1.1.1網段,所以R3可通過Area1去往1.1.1.1,即把數據包發送給R2。

3、此時R2可通過兩條LSA學習到1.1.1.1的路由

第一條:R1產生的7類LSA。類型爲Type2,外部Cost爲1(外部cost默認都爲1),內部cost爲10(內部cost,本路由器到ASBR的cost)

第二條:R3產生的5類LSA,由R4泛洪給R2(參考上面第二步),類型爲Type 2,外部Cost爲1,內部Cost爲2(R2-R4-R3的cost)

4、R2執行選路規則,兩條LSA同爲Type2類型,先對比外部cost值,都爲1,然後對比內部cost值,第一條爲10,第二條爲2,所以R2會優選第二條(R3產生的5類lsa),即會把數據包轉發給R4。

5、環路形成:R4-R3-R2-R4

情況二:R4收到的這條5類LSA中FA地址爲10.1.12.1(R1與R2的互聯接口)

根據OSPF外部路由的選路規則,當5類LSA中FA地址爲非0時,直接計算去往FA地址的路徑。

1、在此圖中R4收到的5類LSA中FA地址爲10.1.12.1,關於10.1.12.1這個地址,R4是通過3類LSA學習到的(10.1.12.1位於Area 1中,R2與R3都爲ABR,都會產生關於10.1.12.0網段的3類lsa),R4此時其實可以收到兩條10.1.12.0的3類LSA,一條R2產生,一條R3產生,通過計算cost後發現,選擇R2去往10.1.12.1更近,所以R4會把數據包轉發給R2。

2、R2同樣執行選路計算,計算去往FA地址10.1.12.1的路徑,此地址是R2的一個直連路由,所以R2會把數據包轉發給R1。

3、此時全程的路徑爲:R4-R2-R1,解決了環路問題。

總結:OSPF針對外部路由可以通過FA地址來防環,7類LSA中一般情況下都會攜帶FA地址,在執行7轉5後FA地址會默認保留,所以在默認情況下面不會出現環路問題。如果我們在做7轉5時把FA地址抵制了,就有可能出現上述的環路問題。5類LSA FA地址的填充需要滿足一些條件,有機會我再整理一篇文章來單獨講FA地址。

場景三:OSPF Vlink導致的環路問題

我們在場景一的時候討論過設計區域的兩個規則,因爲有這兩個規則的存在,大大降低了網絡部署的靈活性,爲了解決這個靈活性問題協議開發者開發了Vlink這個技術。

使用Vlink技術可以很好的解決區域被分割的問題,但Vlink卻是一把雙刃劍,配置好了可以修復區域分割,但配置錯了的話也會導致環路,接下來我們就一起來討論一下Vlink導致環路的問題。
在這裏插入圖片描述

如圖四所示:此拓撲中Area 2沒有與Area 0相連,打破了OSPF區域設計時所有非骨幹區域都需要與骨幹區域相連的規則,所以在正常情況下,區域0與區域2中的路由器是不能互訪的,爲了能使這兩個區域互訪,我們可以在R2與R4之間建立一條Vlink,使得區域2能使用R2與R4之間的這條虛鏈路連接到區域0,此時我們一步一步的分析下這個拓撲所產生的問題。

1,R5上有一個loopback接口,地址爲5.5.5.5/32,宣告進了區域2。

2,R4作爲區域2中的ABR(R2與R4之間的Vlink建立起來後,R4就成爲了一臺ABR),會產生關於5.5.5.5網段的3類LSA,並向區域1與區域0泛洪。

3,此時區域1中的關於5.5.5.5網段的這條3類LSA會傳遞給R3,R3在區域1中傳遞給R2。

4,區域0中的關於5.5.5.5網段的這條3類LSA會通過Vlink傳遞給R2(Vlink使用單播傳遞LSA),R2經區域0傳遞給R1,R1經區域0傳遞給R3(注意R2並不能直接把這條3類LSA傳遞給R3,因爲R2與R3之間的鏈路在區域1中)。

5,這個時候我們來分析下R3的情況,經第三步與第四步可得知,R3能收到兩條關於5.5.5.5網段的3類LSA:

A:由R4產生,在區域0中由R4-R2-R1-R3傳遞過來

B:由R4產生,在區域1中由R4-R3傳遞過來

6,根據場景一中所講的規定,從非骨幹區域收到的3類LSA,ABR能接收但不會使用這條3類LSA,即R3雖然能收到兩條關於5.5.5.5網段的3類LSA,但它能使用的只有第一條,即由區域0傳遞過來的這條3類LSA。

7,因爲只能使用R1傳遞給R3的3類LSA,所以當R3要訪問5.5.5.5時,會先把數據包轉發給R1,R1轉發給R2,R2知道去往5.5.5.5的數據包是要轉發到R4的,但R2去往R4只能經過區域1傳遞給R3,所以此時產生了R3-R2-R1-R3的環路。

總結:在華爲設備上此環路的解決辦法爲修改Vlink的鄰居建立路由器,在R3與R4之間配置Vlink就可以避免環路。

在思科設備上,除了修改建立鄰居的路由器外,還可以通過no capability transit(默認啓用)命令來解決此環路。

no capability transit命令解釋:

首先得明白transit,transit是指Vlink所建立的區域,在上圖中區域1爲transit區域。使能這條命令後,當R3在區域0中收到一條3類lsa時,發現此3類LSA的ADV(通知者)爲R4,並且R4在transit區域中可達,此時R3會計算從transit區域中去往此ADV-Router的Cost,如果計算結果爲經過transit區域去往R4要比走區域0近,那就會選擇從transit區域去往目標。如圖四所示,R3此時會選擇走transit區域去往目標網段,還不走區域0,從而避免了環路。

場景四:OSPF選路規則導致的環路(RFC2328、RFC1583)

OSPF的選路規則對於每一個網絡工程師來說都應該能說出幾點,選路規則的設計原本是爲了讓路由器能選擇出更好的路由,那爲什麼會產生環路呢,在探討這個問題之前,我們先來複習一下OSPF的選路規則有哪些:

1、域內路由優於域間路由:即由1類或者2類lsa生成的路由是優先於3類lsa生成的路由的。

2、域間路由優於外部路由:即由3類lsa產生的路由是優於5類或者是7類產生的路由。

3、如果同爲外部路由,則先比較路由的Type,Type1優於Type2

4、如果同爲Type1:則比較路由的外部cost與內部cost之和,選擇選小的。

5、如果同爲Type2:則先比較路由的外部cost值,相同再比較路由的內部cost值,不一樣就選擇小的。(詳情見上篇文章的場景二)。

知道如上選路規則後,再給你們介紹一下OSPF的開發歷史:OSPF由IETF在20世紀80年代末期開發,最初的OSPF規範體是在RFC1131中描述的,這稱爲OSPF的第一個版本,但因爲這個OSPF版本1有很多不成熟的地方,所以很快就被新開發的標準所替代,這個新的標準在RFC1247文檔中進行描述,RFC1247在穩定性和功能性方面都有了實質性的改進,所以稱爲OSPF版本2,在後續的發展中,又針對了這個OSPF版本有許多更新文檔出現,每一個更新都是對是OSPF的精心改進,這些更新文檔包括RFC1583、2178和2328中。目前我們所學習與使用的OSPF版本2中的各種特性都在RFC2328中進行了描述。

有了以上歷史知識後,回到我們這個場景主要討論的兩個標準:RFC1583與RFC2328,RFC1583與RFC2328存在着諸多的不一樣,這裏我們主要討論下這兩個RFC標準中選路規則所涉及的問題:

RFC1583規定:外部路由選路時只需要對比cost值,cost值小的優先,如果cost值相同則負載。

RFC2328規定:外部路由選路時只需要對比區域號大小,而不需要對比cost值,區域號大的將優先使用。

有了以上理論知識後,我們來分析一個拓撲圖:
在這裏插入圖片描述

深入探討OSPF環路問題(二)-2656969-1

如圖五所示:假設R2上運行的OSPF是執行RFC2328的選路規則,其它路由器執行RFC1583選路規則。

1、R3上有一個loopback接口,地址爲10.1.3.3,引入進OSPF,產生5類LSA,ASBR爲R3。

2、當R2收到這條5類LSA後,經計算會有3條路徑去往ASBRR3,分別爲:

A、R2-R1-R3:經過區域0,內部cost值爲11(如果不清楚內部cost與外部cost區域,請參考場景二)

B、R2-R3:經過區域0,內部cost值爲1。

C、R2-R4-R3:經過區域1,內部cost值爲21。

3、根據RFC2328的選路規則,只比較路徑的區域號大小,不比較cost值,所以R2會優先C路徑去往R3。此時R2會將數據發送給R4。

4、R4也需要計算到達ASBRR3的路徑,此時R4上也有兩條路徑可達到R3。

A、R4-R1-R3:經過區域0,內部cost值爲11。

B、R4-R3:經過區域1,內部cost值爲20。

5、根據RFC1583的選路規則,只比較路徑的cost值,不比較區域號,所以R4會優選cost值小的路徑A。此時R4將數據發送給R1。

6、R1也需要計算到達ASBRR3的路徑,此時R1上也有兩條路徑可達到R3。

A、R1-R3:經過區域0,內部cost值爲10。

B、R1-R2-R3:經過區域0,內部cost值爲2。

7、根據外部路由選路規則,如果從同一區域收到,則直接比較cost,cost值小的優先,所以R4會優選B路徑到達R3,此時數據包會轉發給R2。

8、此時環路產生:R2-R4-R1-R2。

由環路現象可知,此環路產生的原因是由於R2上執行的是RFC2328選路規則,而R4上執行的是RFC1583選路規則所致,有環路就必須要有解決此環路的辦法,針對此處我們能想到的最簡單的辦法應該是修改ospf路由器的選路規則,使全網保持一致。這樣修改完成後確實可以解決此問題,但是你到底是修改成2328呢還是1583,因爲他們都有各自的特點,2328考慮到了骨幹區域的負載問題,但沒有考慮到cost,而1583考慮到了cost,又沒有考慮到區域的問題。如果有一種技術能把這兩種選路規則結合起來,那肯定就是最完美的解決方案。其實協議開發者早就想到了這個問題,並且也確實設計了這種完美的解決方案,那就是RFC1583的兼容模式。

默認情況下,華爲的設備啓用OSPF後都工作在RFC1583兼容模式,此模式的特點爲:當一臺路由器收到能從不同的路徑去往目標外部路由,會先比較路徑的cost值,只有在cost值相同的情況下才會進一步比較區域號。如果cost值與區域號都相同,纔會形成負載。

華爲設備上面可以設置關閉RFC1583的兼容模式:命令爲:undo rfc1583 compatible。關閉後將執行RFC2328的選路標準,在上述拓撲中,R2上就是執行了此條命令,所以纔出現了環路。

場景五:OSPF在MPLS_v*n中的環路(DN位,Domain-tag)

要看明白此場景,需要各位對MPLS_v*n有一定的認識,MPLS_v*n作爲數通的一個難點內容,學習起來確實有一定的難度,我這裏儘量會使用一些通俗的語言去解釋MPLS_v*n中的技術名詞,因篇幅有限,所以不能非常詳細的講解MPLS_v*n中的技術,下次我會寫一篇MPLS_v*n的專題,在文章中再詳細的介紹相關技術。

對MPLS_v*n熟悉的人都知道,PE與CE之間可運行多種路由協議,如RIP、OSPF、ISIS、BGP並且靜態路由也可以使用,在如此多的協議之間到底選擇何種協議進行部署,是每個網絡工程師都需要慎重考慮的問題,而在衆多的協議之中,OSPF因爲大衆對它的熟悉,及在部署時有非常完善的防環特性而受到廣泛的使用,所以我們這個場景就來討論一下,在PE與CE之間運行OSPF所遇到的環路問題,及解決方法。
在這裏插入圖片描述

如上圖所示:這是一個雙PE的組網環境,整個網絡已經提前配置好了MPLS_v*n的基礎配置,兩臺PE的關鍵配置如下:
在這裏插入圖片描述

1、R3與R4連接的實例爲site1,在site1裏添加一條靜態路由:ip route-static v*n-instance site1 30.30.30.30 255.255.255.255 NULL0 preference 200,下一跳指向Null0,優先級修改爲200。此時路由表顯示如下:

在這裏插入圖片描述

2、進入R3的BGP配置下,把30網段network進v*n-instance,配置如下:

bgp 10

ipv4-familyv*n-instance site1

network30.30.30.30 255.255.255.255

import-route ospf1

3、因爲R3與R4建立了v*nv4鄰居,所以此時30網段的v*nv4路由會傳遞給R4,在R4上經過路由交叉(mpls-v*n技術名詞,簡單說是把路由接收進實驗路由表)後可以R4的實例路由表查看到此條路由,下一跳爲10.1.3.3,通過IBGP學到。

在這裏插入圖片描述

4、進入R4的實例OSPF中,輸入命令:import-route bgp permit-ibgp,默認情況下在PE設備上引入IBGP路由是不需要加入permit-ibgp,但此時我們的設備上配置了一條:v*n-instance-capability simple,此條命令會導致運行OSPF的PE設備喪失PE特性(具體命令細節稍後會介紹),因爲在非PE設備上,import-route bgp只能引入ebgp路由(爲了防環,有機會再給大家整理一篇BGP環路介紹),所以此處在引入時一定要加入permit-ibgp參數。命令如下:

在這裏插入圖片描述

5、因R4與R7建立了ospf鄰居,所以此時在R7上查看路由表,可查看到R7已經學習到了一條30網段的路由,下一跳指向R4,併爲ase路由。

在這裏插入圖片描述

6、因R7與R6建立了ospf鄰居,繼續前往R6上查看路由表,發現R6也學習到了一條30網段路由,下一跳指向R7:

在這裏插入圖片描述

7、因R6與R3建立了OSPF鄰居,繼續前往R3上查看site1實例路由表,可發現此時實例表中出現的一條ase的30網段路由,優先級爲150。回顧第一步的路由表顯示可知,此時R3會有兩條去往30網段的路由,一條是通過OSPF學習到的優先級爲150的ase路由,另外一條是第一步添加的優先爲200的靜態路由。所以此時R3會優先選擇優先級小的ospf路由。
在這裏插入圖片描述

8、此時就需要了一個R3-R4-R7-R6-R3的路由環路,數據環路則是R3-R6-R7-R4-R1-R3

在這裏插入圖片描述

從以上分析可知,此環路形成的原因爲R3使用了本來就屬於R3發送出去的30網段路由,從而形成了環路,爲了解決此種路由回灌的問題,OSPF協議開發者在開發協議時設計了兩種防環機制:DN位與Route tag。

DN位位於ospf lsa頭部的option中,主要用於mpls_v*n場景中3類,5類,7類Lsa的防環,OSPF規定當一條路由從PE發往CE時,LSA中的DN位就會被置位,當一條LSA的DN位被置位了,PE設備將會忽略此條LSA。在以上場景中R4通過v*nv4從R3學習到30網段路由,並且發送給CE-R7,此時DN位就會被置位,當30網段的這條lsa發送回給R3時,R3發現此LSA的DN被置位,所以不會使用此條LSA,從而避免了環路的產生。在上述場景中因爲在PE上面配置了v*n-instance-capability simple命令,所以此時PE設備將忽略DN檢測,也就導致了上述環路的產生。

Route tag同樣位於ospf lsa裏,但只存在於5類與7類lsa中,即Route tag只能用於5類與7類的防環。當PE給CE發送LSA時,會在5類與7類lsa中添加tag值,此tag值會以PE設備上BGP的AS號來計算,當此條填充的tag值的lsa傳入對端PE時,PE設備會檢測此tag中的AS號與本地的AS號是否一致,如一致則會忽略此lsa條目。在上述場景中PE上面配置的v*n-instance-capabilitysimple命令也同樣會使PE設備忽略Route tag的檢測,從而導致了上述的環路。

當PE與CE之間運行了ospf時,會自動啓用這兩種防環機制,默認情況下PE設備是會檢測DN位與Route-tag的,也就是說默認情況下v*n-instance-capability simple命令並未使能,即默認情況就不會有環路產生。

v*n-instance-capabilitysimple命令詳細介紹:

A、在PE上配置v*n-instance-capabilitysimple命令後,如果OSPF沒有配置骨幹區域0,則該MCE不會成爲ABR。(關於此問題需要重新寫文章才能詳細介紹)

B、配置v*n-instance-capability simple命令後,OSPF進程不可以引入IBGP路由。(所以需要在引入時加入permit-ibgp參數)

C、配置v*n-instance-capability simple命令後,BGP引入的OSPF路由中不會攜帶OSPFDomain ID、OSPF Route-tag和OSPFRouter ID。(所以在CE上面看到的路由都是以ase的外部路由存在,關於OSPF的RT屬性,也需要重新寫文章才能詳細介紹)

此外要在PE上面關閉DN位檢測還可以用如下命令:

dn-bit-checkdisable summary 關閉3類lsa中的dn位檢查

dn-bit-checkdisable ase 關閉5類lsa中的dn位檢查

dn-bit-checkdisable nssa 關閉7類lsa中的dn位檢查