OSPFv3
縮略語 |
英文全名 |
中文解釋 |
OSPF |
Open Shortest Path First |
開放最短路徑優先 |
OSPFv3 |
Open Shortest Path First version 3 |
開放最短路徑優先版本3 |
IGP |
Interior Gateway Protocol |
內部網關協議 |
AS |
Autonomous System |
自治系統 |
ABR |
Area Border Router |
區域邊界路由器 |
ASBR |
Autonomous System Border Router |
自治系統邊界路由器 |
LSA |
Link Statement Advertisement |
鏈路狀態通告 |
LSDB |
Link State Data Base |
鏈路狀態數據庫 |
DR |
Designated Router |
指定路由器 |
BDR |
Backup Designated Router |
備份指定路由器 |
DD |
Database Description |
數據庫描述 |
LSR |
Link State Request |
鏈路狀態請求 |
LSU |
Link State Update |
鏈路狀態更新 |
LSAck |
Link State Acknowledgment |
鏈路狀態確認 |
NBMA |
Non-Broadcast Multi-Access |
非廣播多點可達網絡 |
P2MP |
Point-to-MultiPoint |
點到多點 |
P2P |
Point-to-Point |
點到點 |
該表格來自新華三OSPFv3技術白皮書http://www.h3c.com/cn/d_200804/603579_30003_0.htm
本文所有試驗圍繞一下拓撲進行,實驗設備為華為AR2200-S,版本為V200R009C00SPC500
以下是基本配置(全局使能IPv6,接口使能IPv6,配置IPv6地址):
RT1:
[RT1]ipv6
[RT1]interface g0/0/1
[RT1-GigabitEthernet0/0/1]ipv6 enable
[RT1-GigabitEthernet0/0/1]ipv6 address 2001::1/64
[RT1]interface LoopBack 1
[RT1-LoopBack1]ipv6 enable
[RT1-LoopBack1]ipv6 address 2010::1/64
[RT1]interface LoopBack 2
[RT1-LoopBack1]ipv6 enable
[RT1-LoopBack1]ipv6 address 2011::1/64
RT2:
[RT2]ipv6RT2]interface g0/0/1
[RT2-GigabitEthernet0/0/1]ipv6 enable
[RT2-GigabitEthernet0/0/1]ipv6 address 2001::2/64
[RT2]interface g0/0/2
[RT2-GigabitEthernet0/0/2]ipv6 enable
[RT2-GigabitEthernet0/0/2]ipv6 address 2002::2/64
RT3:
[RT3]ipv6[RT3]interface g0/0/2
[RT3-GigabitEthernet0/0/2]ipv6 enable
[RT3-GigabitEthernet0/0/2]ipv6 address 2002::3/64
[RT3]interface LoopBack 1
[RT3-LoopBack1]ipv6 enable
[RT3-LoopBack1]ipv6 address 2012::1/64
[RT3]interface LoopBack 2
[RT3-LoopBack1]ipv6 enable
[RT3-LoopBack1]ipv6 address 2013::1/64
以下是基本OSPFv3配置:
RT1:
[RT1]ospfv3 1
[RT1-ospfv3-1]router-id 1.1.1.1
[RT1]interface LoopBack 1
[RT1-LoopBack1]ospfv3 1 area 0
[RT1]interface LoopBack 2
[RT1-LoopBack2]ospfv3 1 area 0
[RT1-LoopBack2]in g0/0/1.
[RT1-GigabitEthernet0/0/1]ospfv3 1 area 0
RT2:
[RT2]ospfv3 1
[RT2-ospfv3-1]router-id 2.2.2.2
[RT2]interface g0/0/1
[RT2-GigabitEthernet0/0/1]ospfv3 1 area 0
[RT2]interface g0/0/2
[RT2-GigabitEthernet0/0/2]ospfv3 1 area 1
[RT2-GigabitEthernet0/0/2]quit
RT3:
[RT3]ospfv3 1
[RT3-ospfv3-1]router-id 3.3.3.3
[RT3]interface g0/0/2
[RT3-GigabitEthernet0/0/2]ospfv3 1 area 1
[RT3]interface LoopBack 1
[RT3-LoopBack1]ospfv3 1 area 1
[RT3-LoopBack1]interface LoopBack 2
[RT3-LoopBack2]ospfv3 1 area 1
以上就是OSPFv3的基本配置
接下來看一下OSPFv3的狀態,先來說幾道命令:
------------------------------------------------------------------------------------------------------------------------------------------
- 接着是OSPFv3接口時間周期功能配置
- 配置接口Hello interval
- 配置接口Hello包發送間隔(Hello interval)
- 配置相鄰路由器失效時間(Dead interval)
- 配置鄰接路由器重傳LSA間隔
- 配置接口LSA傳送延遲
- 配置接口輪詢Hello包
1.配置接口Hello interval
[RT2]in g0/0/1
[RT2-GigabitEthernet0/0/1]ospfv3 timer hello <1-65535>s
##在默認情況下P2P,廣播網,這種接口類型下,發送Hello包的間隔為10s,而P2MP,NMBA發送間隔為30s
2.配置相鄰路由器失效時間(Dead interval)
[RT2]interface g0/0/1
[RT2-GigabitEthernet0/0/1]ospfv3 timer dead <1-65535>s
##需要注意的是,當你修改Hello包時間時,Dead周期會相應的變為4倍,但當你修改Dead周期時,Hello時間不會改變
3.配置鄰接路由器重傳LSA間隔
[RT2]interface g0/0/1
[RT2-GigabitEthernet0/0/1]ospfv3 timer retransmit <1-3600>s
##建議這個值不要設置的太小,以免造成不必要的重傳,例如你的網絡非常復雜,數據包需要2秒才能完成往返(LSU到對方,對方再發回LSAck),那么如果你設置成了一秒,這樣就會讓路由器誤以為對方為接收到數據包,造成重傳
4.配置接口LSA傳送延遲
[RT2]interface g0/0/1
[RT2-GigabitEthernet0/0/1]ospfv3 trans-delay <1-800>s
#設置該值之后,當有LSA需要從這個接口發出時,將等待x秒再發送,x=你的設定
5.配置接口輪詢Hello包
[RT2]interface g0/0/1
[RT2-GigabitEthernet0/0/1]ospfv3 timer poll <1-65535>s
##這類Hello包只有在NBMA網絡中才會用到,當鄰居失效時,會按照該周期發送輪詢Hello包,建議輪詢時間間隔至少為Hello周期的4倍
以上就是OSPFv3接口中各種時間周期的配置
------------------------------------------------------------------------------------------------------------------------------------------
配置OSPFv3的區域:
- Stub區域
- NSSA區域
- 虛鏈路
1.Stub區域:
[RT2]ospfv3 1
[RT2-ospfv3-1]area 1
[RT2-ospfv3-1-area-0.0.0.1]stub [ no-summary ]
[RT3]ospfv3 1
[RT3-ospfv3-1]area 1
[RT3-ospfv3-1-area-0.0.0.1]stub
##那么此時R2<--->R3的Area1,就配置成為了Stub區域,5類LSA不會被泛洪進來,但是三類依然會泛洪,那么如果你希望將Stub區域配置為一個Totally Stub區域(沒有3類與5類LSA),那么就可以在stub后面加上no-summary,這樣的話R3上只會有一條默認路由,如果你加上了這個參數,那么只需要在ABR上做就可以了,Stub區域中的成員路由器不需要打這條命令
以下是沒有加no-summary,R3的路由表:
##可以從圖中看到,R3上有3條IA的域間路由
以下是加了no-summary,R3的路由表:
##可以看到,R3上只有一條默認路由
以上就是Stub區域的配置
------------------------------------------------------------------------------------------------------------------------------------------
2. NSSA區域
##先不進行配置,先來看一下關於NSSA的各個命令(以下命令均在Area視圖下執行):
nssa | 將當前區域配置為NSSA區域 |
nssa default-route-advertise |
向NSSA區域泛洪一條默認路由 |
nssa default-route-advertise cost <1-16777214> |
向NSSA區域泛洪默認路由時,將其cost修改為<cost> |
nssa default-route-advertise tag <0-4294967295> | 向NSSA區域泛洪默認路由時,將其tag值改為<tag> |
nssa default-route-advertise type <1-2> | 向NSSA區域泛洪默認路由時,將其類型修改為<type>,缺省為2類 |
nssa no-import-route | 當ABR同時也是ASBR時,這條命令可以使外部路由不向NSSA區域泛洪 |
nssa no-summary | 不會再向NSSA區域中,泛洪3類LSA |
nssa set-n-bit | 在DD報文中設置N-bit標志位 |
nssa suppress-forwarding-address | 將7類轉成5類之后,設置FA地址為0.0.0.0 |
nssa translator-always | 設置轉換路由器(將7類轉換成5類) |
nssa translator-interval <1-120> | 設置轉發路由器失效時間 |
以下是實驗清單及拓撲:
- R2與R3之間啟用NSSA區域
- R2向NSSA區域下發默認路由並將Cost值調為10,Tag為20,類型為1
- R2重分發直連Loopback,並將cost調整為20,tag調整為40,類型為1
- 當R2同時為ABR與ASBR時,不將外部路由引入NSSA區域
- R2不向NSSA區域引入3類LSA
- 設置DD報文N-bit位
- 指定轉換路由器
- 設置指定路由器失效時間
------------------------------------------------------------------------------------------------------------------------------------------
1.R2與R3之間啟用NSSA區域
[RT2]osfpv3
[RT2]ospfv3 1
[RT2-ospfv3-1]area 1
[RT2-ospfv3-1-area-0.0.0.1]nssa[RT3]osfpv3
[RT3]ospfv3 1
[RT3-ospfv3-1]area 1
[RT3-ospfv3-1-area-0.0.0.1]nssa##啟NSSA區域,區域內所有路由器都要打,標志位不同,不起鄰居
2.R2向NSSA區域下發默認路由並將Cost值調為10,Tag為20,類型為1
[RT2]ospfv3 1
[RT2-ospfv3-1]area 1
[RT2-ospfv3-1-area-0.0.0.1]nssa default-route-advertise cost 10 tag 20 type 1
##你只需要記住一點,nssa的參數后面還可以跟很多參數
3.R2重分發直連Loopback,並將cost調整為20,tag調整為40,類型為1
[RT2]ospfv3 1
[RT2-ospfv3-1]import-route direct cost 20 tag 40 type 1
##重分發之后R2就同時成為ABR與ASBR,這樣就滿足了下一個實驗的條件
4. 當R2同時為ABR與ASBR時,不將外部路由引入NSSA區域
先來看一下R3的路由表,可以看到圖中兩條標記為N的路由條目:
那么如果你不希望R3收到這兩條明細路由(因為有一條默認路由就可以實現互聯),那么就可以進行如下配置:
[RT2]ospfv3 1
[RT2-ospfv3-1-area-0.0.0.1]nssa no-import-route
##這條命令,只有在路由器同時成為ABR與ASBR時,才滿足條件,所以你在R3上重分發之后,在打上這條命令,是沒用的,因為R3不是ABR
再看一下R3的路由表,發現明細路由沒有下發:
5.R2不向NSSA區域引入3類LSA
上圖就是當前的路由表,可以看到有一條IA的域間路由,那么如果你不希望NSSA區域中存在3類LSA,配置如下:
[RT3]ospfv3 1
[RT3-ospfv3-1-area-0.0.0.1]nssa no-summary
##這條命令只能在NSSA區域的ABR上面配置,在其他路由器上配置也沒用
6.設置DD報文N-bit位
[RT3]ospfv3 1
[RT3-ospfv3-1-area-0.0.0.1]nssa set-n-bit
##在標准中,N-bit位必須志為0,但是有些廠商還是違背了,所以如果你的網絡環境中有不同廠商的設備,需要留意N-bit志位,這條命令的目的就是與這些廠商兼容
7.指定轉換路由器
完成這個實驗需要4台路由器,以下是拓撲,:
基礎配置(接口IP,進程,接口宣告)在這里就不說明了,直接進入OSPFv3的配置,現在R3重分發直連:
[R3]ospfv 1
[R3-ospfv3-1]import-route direct ##重分發在之后會詳細說明,這里記一下就可以了
##重分發直連完成后在R2上,執行nssa translator-always
[R2]ospfv3 1
[R2-ospfv3-1]area 1
[R2-ospfv3-1-area-0.0.0.1]nssa translator-always
##執行完之后去R1上查看LSDB數據庫
##可以看到最下面的兩行,R3的兩條直連Loopback口路由,只會從R2通告過來,正常情況是R4也會通告,隨后在R1產生兩條去往相同目的地的等價路由,但是這條命令就可以指定,由哪台路由器負責轉換LSA,當R2--->R1鏈路Down時,R4會自動向Area0通告一條去往R3Loopback口的5類路由,這樣可以形成彈性路由,但做不到等價路由
##這個實驗需要等的時間非常長,我將上面的配置配完之后,去吃了個飯,回來才看到這些狀態一開始還以為自己做錯了
8.設置指定路由器失效時間
[R2]ospfv 1
[R2-ospfv3-1]area 1
[R2-ospfv3-1-area-0.0.0.1]nssa translator-interval <1-120>s
##這條命令一般和nssa translator-always一起打,單位為秒
以上就是NSSA的配置及講解,下面是虛鏈路的配置
------------------------------------------------------------------------------------------------------------------------------------------
3.虛鏈路
以上是拓撲,R2與R3之間建立虛鏈路,使R4學到R1的Loopback路由,以下為配置步驟(接口IP,進程,端口宣告省略):
[R2]ospfv3 1
[R2-ospfv3-1]area 1
[R2-ospfv3-1-area-0.0.0.1]vlink-peer 3.3.3.3
[R3]ospfv3 1
[R3-ospfv3-1]area 1
[R3-ospfv3-1-area-0.0.0.1]vlink-peer 2.2.2.2
##虛鏈路在配置上沒什么難度,你只需要知道在哪兒做就可以了
以上就是三種區域類型的配置及講解
------------------------------------------------------------------------------------------------------------------------------------------
講解完區域類型之后,現在再來看一下OSPFv3的路由屬性配置:
- 配置OSPFv3的接口開銷值
- 配置OSPFv3最大等價路由數量
1.配置OSPFv3的接口開銷值
接着上一張虛鏈路的拓撲,在R3上查看路由表
##沒有IA是因為虛鏈路到了Area0,傳來的是域內路由,這里可以看到去往2010::/128,2011::/128的開銷是2(Loopback口在OSPFv3中表現為128位),我們將它修改為5
配置如下:
[R2]interface g0/0/1
[R2-GigabitEthernet0/0/1]ospfv3 cost 4
##關於接口cost值的調整,你需要知道的是,在哪調,調什么,cost值的計算是指去往目的網段路徑上所有出接口cost相加,也就是說R3要去往R1的Loopback口,路徑如下,R3_g0/0/1--->R2_g0/0/1--->R1_g0/0/1,所以說路徑上有2條鏈路,所以cost就是將這兩條鏈路的cost相加,就等於去往目的地的cost值,在帶寬足夠的情況下,cost都為1,所以R3去往2010::/128的cost是R2_g0/0/1的cost=1,R1_g0/0/1的cost=1,所以是1+1=2,那么現在將R2_g0/0/1調整為4,也就變成了4+1=5
2.配置OSPFv3最大等價路由數量
[R3]ospfv3 1
[R3-ospfv3-1]maximum load-balancing <1-8>
##最大為8條,按照需求來這個沒什么好講解的
以上就是路由屬性的操作
------------------------------------------------------------------------------------------------------------------------------------------
控制OSPFv3的路由信息:
1.配置OSPFv3路由聚合
- 配置OSPFv3ABR路由聚合
- 配置OSPFv3ASBR路由聚合
- 配置OSPFv3對接收的路由過濾
- 配置OSPFv3對發送的路由過濾
- 配置OSPFv3引入外部路由
##路由聚合分兩種,一種是ABR聚合,一種是ASBR聚合,這兩種場景我將逐一演示
先來講ABR聚合,拓撲如下:
##R3宣告兩個Loopback,R2的兩個Loopback口重分發進OSPFv3,將R3兩個Loopback口匯總后發向Area 0
[R2-ospfv3-1]ospfv3 1
[R2-ospfv3-1]area 1
[R2-ospfv3-1-area-0.0.0.1] abr-summary 2011:1:1:: 48 [not-advertise|cost<cost>]
##這是匯總完畢后,R1的路由表,可以發現最下的一行已經有一條匯總路由了:
##這是沒有經過匯總的路由表:
##先來對abr-summary 2011:1:1:: 48這條命令做講解,最匯總時,你需要知道你在哪里做,你希望匯總的路由發向哪里,那么我們現在做的是ABR匯總,所以一定是在ABR上做,那么R2就是ABR,那么我們希望將2011:1:1:1::/64與2011:1:1:2::/64匯總,那么可以將掩碼寫作48位,所以匯總后的路由條目是2001:1:1::/48,那么你希望將哪個區域的路由匯總就在哪個區域做,所以這里是在Area1做
那么再說一下not-advertise參數的用法,如果你不希望R2將2011:1:1:1::/64,2011:1:1:2::/64網段通告Area 0,那么就可以通過匯總的方法,將兩個網段匯總成一個網段,然后被這個網段包含的所有條目,都不會被通告Area0,以下是實例:
[R2]ospfv 1
[R2-ospfv3-1]area 1
[R2-ospfv3-1-area-0.0.0.1]abr-summary 2011:1:1:: 48 not-advertise
##這是R1的路由表,這兩條明細路由已經被過濾:
最后是cost參數的用法,雖然在前文已經說過非常多次了,但這里還是說一下⑧,如果這條通告出去的匯總路由希望將他的Cost值修改為5,那么可以進行如下配置:
[R2]ospfv 1
[R2-ospfv3-1]area 1
[R2-ospfv3-1-area-0.0.0.1]abr-summary 2011:1:1:: 48 cost 4
##改為4是因為R1本身還有1點開銷,算上累加,所以是4,以下是R1的路由表:
2.ASBR聚合
[R2]ospfv3 1
[R2-ospfv3-1]import-route direct ##在R2將兩個Loopback接口用重分發直連的方式引入OSPFv3
##引入之后查看R1路由表:
[R2]ospfv3 1
[R2-ospfv3-1]asbr-summary 2010:1:1:: 48
##以下是匯總完畢的R1路由表:
[R2-ospfv3-1]asbr-summary 2010:1:1:: 48 [cost | distribute-delay | not-advertise | tag]
接下來將逐一針對這些參數進行講解,Cost與Tag不說了:
[R2]ospfv3 1
[R2-ospfv3-1]asbr-summary 2010:1:1:: 48 distribute-delay <1-65535>s
##distribute-delay選項可以使你匯總的路由推遲通告
[R2]ospfv3 1
[R2-ospfv3-1]asbr-summary 2010:1:1:1:: 64 not-advertise
##你可以用這條命令來控制明細條目的引入,可以很靈活的運用,那么以下是R1的路由表:
3.配置OSPFv3對接收的路由過濾
[R1]acl ipv6 2000
[R1-acl6-basic-2000]rule 1 deny source 2010:1:1:2:: 64
[R1-acl6-basic-2000]rule 2 permit
[R1]ospfv3 1
[R1-ospfv3-1]filter-policy 2000 import
##這里的ACLv6起到的是決策的作用,並不是匹配流量,如果你的rule允許,則允許該條目進入,如果你的rule拒絕,則拒絕該條目進入,隱形拒絕所有,所以你需要在手動以上一條permit any,以放行其他所有條目
##以下是R1的路由表,D表明拒絕引入,但這只會去標志存在的條目:
4.配置OSPFv3對發送的路由過濾
##在R2上針對向Area0區域通告的R3的Loopback1做路由過濾
[R2]acl ipv6 2000[R2-acl6-basic-2000]rule 1 deny source 2010:1:1:1::/64
[R2-acl6-basic-2000]rule 2 permit
[R2]ospfv3 1
[R2-ospfv3-1]filter-policy 2000 export
##以下是R1的路由表:
##路由過濾的要點在於,你要想清楚條目流動的方向,想好在哪過濾,那個方向過濾,采用什么工具過濾
5.配置OSPFv3引入外部路由
##這里要說的是一種路由過濾與重分發結合的一種用法,R2引入本地直連路由,但過濾Loopback1
[R2]acl ipv 2000
[R2-acl6-basic-2000]rule 1 deny source 2010:1:1:1::1/64
[R2-acl6-basic-2000]rule 2 permit
[R2]ospfv3 1
[R2-ospfv3-1]import-route direct
[R2-ospfv3-1]filter-policy 2000 export direct
##以下是過濾完成后R1的路由表
##以下是為做過濾前R1的路由表
以上就是OSPFv3路由控制相關操作
------------------------------------------------------------------------------------------------------------------------------------------
OSPFv3網絡調優:
- 配置SPF定時器
- 設置LSA頻繁震盪時路由計算的延遲時間
- 配置接收LSA的時間間隔
- 抑制接口接收或發送OSPFv3報文
- 配置接口的DR優先級
- 配置Stub路由器
- 忽略DD報文中的MTU檢查
1.配置SPF定時器
- 配置常用定時器
[R1]ospfv3 1
[R1-ospfv3-1]spf time <0-65535>s(Delay計時器)<0-65535>s(Hold計時器)
##當OSPFv3的鏈路發生變化時,LSDB就會相應的發生變化,這是就需要重新進行SPF計算,如果SPF計算間隔小,那么網絡收斂的時間就會相應的加快,但同時也會占用更多的資源,那么如果網絡頻繁的發生變化,如果SPF計算間隔時間較大,會占用較少的資源,避免因為網絡頻繁的變動而導致帶寬耗盡,但同時網絡收斂速度也會相應的變慢,請酌情配置
- 配置SPF智能定時器
[R1]ospfv3 1
[R1-ospfv3-1]
spf-schedule-interval [intelligent-timer <Max interval> <Start-interval> <Hold-interval> | <delay time> <hold time>]
##智能定時器用法我也不知道=_=,在這里只能寫出他的配置方法,沒有應用場景
2.設置LSA頻繁震盪時路由計算的延遲時間
[R1]ospfv3 1
[R1-ospfv3-1]maxage-lsa route-calculate-delay <0-65535>s
##當一個鏈路Down時,他會發出該條目的老化LSA,但是如果一段鏈路頻繁的Down/Up(震盪),那么路由器會頻繁的發出更新LSA與老化LSA,所以這同時浪費了帶寬和路由器算力,所以我們可以通過這條命令,來延遲計算老化LSA,也就是說當一台路由器收到一個最大時間的老化LSA時,會延遲X秒再計算(從LSDB中刪除),這就可以將震盪的損害降到最低,缺省情況下,老化LSA計算延遲為20s
3. 配置接收LSA的時間間隔
[R1]ospfv3 1
[R1-ospfv3-1]lsa-arrival-interval <1-10000>millisecond
##這條命令可以有效的避免路由震盪帶來的麻煩,它規定了接收同一條LSA的時間間隔。缺省情況下,接收同一條LSA更新信息的時間間隔為1000毫秒(1秒)
4.抑制接口接收或發送OSPFv3報文
[R1]ospfv3 1
[R1-ospfv3-1]silent-interface g0/0/1
##配置之后,該接口不會發送OSPFv3報文,該接口不會建立OSPFv3鄰居關系,但這條直連路由還是可以被Intra-Area-Prefix-LSA發布出去
5.配置接口的DR優先級
[R1]interface g0/0/1
[R1-GigabitEthernet0/0/1]ospfv3 dr-priority <0-255>
##接口優先級最好是在宣告接口前指定,因為如果你在宣告之后決定優先級,從接口發送出的Hello包中的優先級並不會改變,所以如果發生了這種情況,可以通過shutdown/undo shutdown命令重啟接口,這樣可以充值OSPFv3的接口狀態機
6.配置Stub路由器
[R1]ospfv3 1
[R1-ospfv3-1]stub-router [ on-startup <interval> | <cr>]
##這里的Stub路由器與Stub區域中的成員路由器並沒有關系,而是告知其他路由器不用改stub-router轉發數據,但會擁有一條到達Stub路由器的路由,on-startup參數表示,僅在重啟或故障時保持Stub路由器,保持時間由Interval決定,如果沒有指定Interval,則默認時間為500秒
7.忽略DD報文中的MTU檢查
[R1]ospfv 1
[R1-GigabitEthernet0/0/1]ospfv3 mtu-ignore
##如果MTU值不一樣,鄰居會停留在exstart階段,所以MTU值如果不一樣可以啟用這個
https://blog.csdn.net/qq_40478570/article/details/89053603