某大型企業ospf面試題分析(含路由策略和路由過濾,及雙點雙向重發布)


面試問題背景

本面試題來自國內最大通信技術公司之一,央企,有很多金融網項目。

了解行業的同學,一定知道事哪個企業。

上面試問題(取自百哥收集整理的面試總結大全,關注百哥CSDN或知乎,不定期分享名企面經)

 

問題分析

很顯然,按面試總結里的答案,並不是面試官想要的,也並不能解決數據分流與互備的需求。

那么,怎樣才能實現呢,一起來分析。

OSPF選舉路由優劣的方式,是看cost值,先看下普通的單進程ospf,通過修改cost值是否能實現分流

 

這里所有接口帶寬相同,默認cost相同,所以會形成等價路由,也就是說業務流量上行的時候,兩條路都會走。

需求是業務走左邊,辦公走右邊,我們嘗試修改接口cost,發現不行,因為這樣做的結果是

所有數據都走左邊,或者所有數據都走右邊,並不能實現不同數據左右分離。

 

所以,實現分流,必須使用雙進程ospf,這樣來

 

 

 

如圖,啟用兩個OSPF進程,進程號分別是OSPF 100 和 OSPF 1

兩個OSPF進程,LSDB和路由計算是完全獨立的,相當於兩個不同的路由協議,相當於OSPF和RIP

那么兩個進程互相學習對方的路由,就要用路由重發布了(也叫路由重分布、路由引入)

這時,對R4來講,訪問業務服務器和辦公服務器的路由,是由兩台ASBR,也就是R2和R3,以重發布的方式,通過5類lsa發過來的

這時,R2和R3在做重發布時,給100網段、200網段分別指定不同的cost值。

R2發的100段(業務服務器),cost值小

R3發的100段(業務服務器),cost值大

這樣R4就認為,從R2去訪問業務服務器更合理,實現業務數據從左邊走。

同樣的

R2發的200段(辦公服務器),cost值大

R3發的200段(辦公服務器),cost值小

這樣R4就認為,從R3訪問辦公服務器更合理,實現辦公數據從右邊走

 

需求實現

下面來實現一下。

1、ip規划與配置

這里的ip規划是這樣的,使用路由器編號進行網段規划,比較直觀。

R1和R2互聯地址,使用10.10.12.0/24,其中R1是10.10.12.1,R2是10.10.12.2

R1和R3互聯地址,使用10.10.13.0/24,其中R1是10.10.13.1,R3是10.10.13.3

R2和R4互聯地址,使用10.10.24.0/24,其中R2是10.10.24.2,R4是10.10.24.4

R3和R4互聯地址,使用10.10.34.0/24,其中R3是10.10.34.3,R4是10.10.34.4

在R4上使用loopback接口模擬業務、辦公數據的終端地址

在R1上使用loopback接口模擬業務、辦公數據的服務器地址

地址配置過程略(看這篇文章的同學,ip地址當然會配置,如果不會配置,可以參考公眾號“跟百哥學網絡”前面幾篇)

 

2、OSPF宣告

R1

這里所有接口都宣告到OSPF 100

R1(config)#router ospf 100
R1(config-router)#network 0.0.0.0 0.0.0.0 a 0
 

R2

R2是ASBR,上面的接口在OSPF 100,下面的接口在OSPF 1

R2(config)#router ospf 100
R2(config-router)#network 10.10.12.0 0.0.0.255 a 0
  
R2(config)#router ospf 1
R2(config-router)#network 10.10.24.0 0.0.0.255 a 0

 

R3

和R2相同

R3(config)#router ospf 100
R3(config-router)#network 10.10.13.0 0.0.0.255 a 0

R3(config-router)#router ospf 1
R3(config-router)#network 10.10.34.0 0.0.0.255 a 0
 

R4

所有接口都在OSPF 1

R4(config)#router ospf 1
R4(config-router)#network 0.0.0.0 0.0.0.0 a 0

 

宣告完成后,查看一下每台路由器的鄰居是否都正常建立

 

 

 

每個路由器,都有兩個鄰居

 

3、路由重發布(也叫路由重分布、路由引入)

在R4上查看路由表,發現並沒有100段和200段,也就是業務和辦公的服務器網段,因為這是不同OSPF進程的

 

現在,在R2和R3上,通過重發布的方式,讓R4學習到去往100段和200段的路由

R2(config)#router ospf 1
R2(config-router)#redistribute ospf 100 subnets 


R3(config)#router ospf 1
R3(config-router)#redistribute ospf 100 subnets 

再來查看路由表

這時R4已經學習到了100段和200段的路由,但是還是沒有滿足需求

沒分流啊,沒實現訪問100走左邊訪問200走右邊啊,現在是兩條隨機走啊,這可不行,上路由策略

 

4、路由策略

使用route-map,給100段和200段分別指定不同的cost值,然后做重發布時,調用這個route-map

第1步,使用acl來定義路由條目,直接用拼音來命名吧。

ip access-list standard bangongfuwuqi
 permit 192.168.200.0 0.0.0.255
ip access-list standard bangongzhongduan
 permit 192.168.2.0 0.0.0.255
ip access-list standard yewufuwuqi
 permit 192.168.100.0 0.0.0.255
ip access-list standard yewuzhongduan
 permit 192.168.1.0 0.0.0.255
 

第2步,使用route-map,來給各個路由條目指定cost值

先在R2上做,業務服務器的cost設置小一點,辦公服務器的設置大一點

route-map 100to1 permit 10
 match ip address yewufuwuqi
 set metric 100

route-map 100to1 permit 20
 match ip address bangongfuwuqi
 set metric 200
 

含義是,建立一個名字叫100to1的route-map,這個route-map里有兩條規則,規則編號分別是10和20

編號10的規則,給業務服務器的網段,設置度量值為100

編號20的規則,給辦公服務器的網段,設置度量值為200

沒錯,這里是用acl來識別網段的

 

在R3上也建立一下route-map,但是度量值和R2相反

route-map 100to1 permit 10
 match ip address yewufuwuqi
 set metric 200

route-map 100to1 permit 20
 match ip address bangongfuwuqi
 set metric 100

最后,重發布的時候,調用這個route-map,就可以按照他指定的度量值,進行重發布了

R2(config)#router ospf 1
R2(config-router)#redistribute ospf 100 subnets route-map 100to1

R3(config)#router ospf 1
R3(config-router)#redistribute ospf 100 subnets  route-map 100to1

 

回到R4上看結果,是否滿足分流

可以看出,已經實現了訪問100走左邊,訪問200走右邊

至此,分流的關鍵技術原理和實現,我們已經完成,但是仍要注意,數據要原路去原路回,這也是面試官又把圖反過來問了一遍的原因

現在到R1上看回包的路由

 發現根本沒有ospf的路由,這是因為只做了從進程100到進程1的重發布,現在還需要反着來一遍,就是進程1重發布到進程100

R2的配置

R2(config)#route-map 1to100 permit 10
R2(config-route-map)# match ip address yewuzhongduan
R2(config-route-map)# set metric 100
R2(config-route-map)#route-map 1to100 permit 20
R2(config-route-map)# match ip address bangongzhongduan
R2(config-route-map)# set metric 200
R2(config-route-map)#router ospf 100
R2(config-router)#redistribute ospf 1 subnets route-map 1to100

R3的配置

R3(config)#route-map 1to100 permit 10
R3(config-route-map)# match ip address yewuzhongduan
R3(config-route-map)# set metric 200
R3(config-route-map)#route-map 1to100 permit 20
R3(config-route-map)# match ip address bangongzhongduan
R3(config-route-map)# set metric 100

R3(config-route-map)#router ospf 100
R3(config-router)#redistribute ospf 1 subnets route-map 1to100

再來R1看路由

已經正常學習到分流的路由 ,然后使用ping和tracert測試一下連通性

業務終端 ping 業務服務器

R4#ping 192.168.100.1 source 192.168.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.100.1, timeout is 2 seconds:
Packet sent with a source address of 192.168.1.1 
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/18/36 ms

 

辦公終端ping辦公服務器

R4#ping 192.168.200.1 source 192.168.2.1  
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.200.1, timeout is 2 seconds:
Packet sent with a source address of 192.168.2.1 
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/26/36 ms
 

再來跟蹤一下路由

R4#traceroute 192.168.100.1 source 192.168.1.1
  1 10.10.24.2 
  2 10.10.12.1 

R4#traceroute 192.168.200.1 source 192.168.2.1
  1 10.10.34.3  
  2 10.10.13.1 

 

R1#traceroute 192.168.1.1 source 192.168.100.1
  1 10.10.12.2 
  2 10.10.24.4 


R1#traceroute 192.168.2.1 source 192.168.200.1
  1 10.10.13.3
  2 10.10.34.4 

 

 

5、路由過濾

現在已經實現了數據分流,且來回路徑一致,測試一下故障切換

把這個接口shutdown,模擬線路故障,然后測試連通性與路由跟蹤

先看連通性,沒有問題

R4#ping 192.168.100.1 source 192.168.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.100.1, timeout is 2 seconds:
Packet sent with a source address of 192.168.1.1 
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 12/21/28 ms


R4#ping 192.168.200.1 source 192.168.2.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.200.1, timeout is 2 seconds:
Packet sent with a source address of 192.168.2.1 
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/27/36 ms

再看路徑,會發現都切換到了右邊

R4#traceroute 192.168.100.1 source 192.168.1.1
  1 10.10.24.2 
  2 10.10.12.1 


R4#traceroute 192.168.200.1 source 192.168.2.1
  1 10.10.24.2 
  2 10.10.12.1 

 

目前為止一切正常,現在把線路恢復,看路由是否能還原

發現即使線路又恢復了,但是路由還是沒有切換,是因為ospf雙進程的“先入為主”機制

先入為主就是,ospf從兩個進程,學習到了同一條路由,那么將采用先來的。

我們到R2上查看路由表

在R2上,線路恢復后,1.1和2.1的路由,應該是O才對,這里為什么是O E2呢,O E2是外部路由,也就是重發布的啊

原因就是,之前因為線路故障,鄰居失效,刪除了進程1里的1.1和2.1的路由

但是1.1和2.1又從進程100里學習到了,沒錯,就是重發布來的

 

然后線路又恢復了,雖說又從進程1里學習到了1.1和2.1的路由,但是進程100已經先入為主了

所以導致線路恢復但是進程1的路由沒恢復,最后出現路由切不回來的問題。

來看一下兩個進程的的lsdb

 

這是進程100的lsdb,發現這里有1.1和2.1

R2#sh ip ospf 100 database | begin Type-5
                Type-5 AS External Link States

Link ID         ADV Router      Age         Seq#       Checksum Tag
192.168.1.1     10.10.34.3      1252        0x80000001 0x0084C2 0
192.168.2.1     10.10.34.3      1252        0x80000001 0x008D1D 0

 

這是進程1的lsdb,這里也有1.1和2.1

R2#  sh ip ospf 1 database router | include 192.168.1.1
     (Link ID) Network/subnet number: 192.168.1.1
R2#  sh ip ospf 1 database router | include 192.168.2.1
  Link State ID: 192.168.2.1
  Advertising Router: 192.168.2.1
     (Link ID) Network/subnet number: 192.168.2.1

 

因為先入為主,最終采用的是進程100里的,這是次優路由

我們要把他過濾掉,不讓他從進程100里學習進程1的路由

做法

先做個acl

R2(config)#ip access-list standard deny1 
R2(config-std-nacl)#deny 192.168.1.0 0.0.0.255
R2(config-std-nacl)#deny 192.168.2.0 0.0.0.255
R2(config-std-nacl)#permit any 

然后把acl,調用在ospf 100的路由過濾策略中

R2(config)#router ospf 100
R2(config-router)#distribute-list deny1 in

再查看路由表,發現進程100的這個路由被過濾掉了,不會寫入路由表

進程1的路由出來了

然后所有的路由都正常了

平常,業務和辦公實現分流,各走各的專用線路,來回路徑一直

當線路故障,可以自動切換到備選線路

當線路恢復,路由也可以自動恢復到主路由,不會再受到ospf多進程先入為主的影響。

 

 

獲取更多學習資料,歡迎加入技術討論群:662736393

如有問題,可私信或聯系QQ:167748928

 

如果你看到了這里,百哥想請你幫個小忙:

1.關注百哥,這是一個會陪你至少10年的技術號,定期分享ICT技術。

2.幫我點贊,收藏,分享三連,方便你最快找到百哥,也讓更多的人真正愛上ICT技術,學好ICT技術

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM