面試問題背景
本面試題來自國內最大通信技術公司之一,央企,有很多金融網項目。
了解行業的同學,一定知道事哪個企業。
上面試問題(取自百哥收集整理的面試總結大全,關注百哥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技術