左金平,王智超
(晉中學(xué)院信息技術(shù)與工程學(xué)院,山西晉中 030600)
企業(yè)網(wǎng)中實現(xiàn)網(wǎng)絡(luò)的連通性時會使用內(nèi)部網(wǎng)關(guān)路由協(xié)議如RIP、EIGRP、OSPF、ISIS等.運(yùn)營商網(wǎng)絡(luò)中一般會使用到外部網(wǎng)關(guān)路由協(xié)議如BGP等.相比這些動態(tài)路由選擇協(xié)議,我們研究的靜態(tài)路由在一些場合會有較好的運(yùn)用.譬如靜態(tài)路由可以減少控制層面的流量,同時不易產(chǎn)生環(huán)路,具有穩(wěn)定的性質(zhì),而且配置簡單,對路由器性能要求較低;同時利用靜態(tài)路由還可實現(xiàn)冗余備份,以及路由的精確控制.
靜態(tài)路由是通過手工配置命令,讓路由器獲悉非直連網(wǎng)段的路由信息.路由器不需自己選路,故靜態(tài)路由沒有度量值,由于是管理員手工配置的不易出現(xiàn)環(huán)路所以管理距離的值默認(rèn)為1(在cisco設(shè)備中).
對于靜態(tài)路由配置現(xiàn)給出一般性建議:在MA網(wǎng)段中多數(shù)情況下會包含有多個節(jié)點(diǎn)接收者并不固定,配置一個出站接口信息的路由器,通過一個節(jié)點(diǎn)直接把報文發(fā)送出去,為能找到正確的下一跳地址,將會導(dǎo)致轉(zhuǎn)發(fā)數(shù)據(jù)的路由器只要使用該路由條目轉(zhuǎn)發(fā)數(shù)據(jù)包就會無限地針對目的IP地址做ARP請求,并且在對端路由器開啟了代理ARP功能的前提下,對任何MAC地址的請求,都會回復(fù)開啟代理ARP功能的路由器的接口的MAC地址,這將導(dǎo)致大量ARP在網(wǎng)段中不停地轉(zhuǎn)發(fā),浪費(fèi)了帶寬以及ARP表項.因此在MA網(wǎng)段中,靜態(tài)路由建議配置下一跳地址.在P2P網(wǎng)段中,只關(guān)聯(lián)下一跳地址的靜態(tài)路由不能夠直接用來轉(zhuǎn)發(fā)報文.通常路由器查找路由表使用路由條目轉(zhuǎn)發(fā)報文要明確通過哪個接口發(fā)送,對于包含的是一個下一跳地址而不是發(fā)包接口的靜態(tài)路由條目,路由器通過查找這條路由條目后只能明確把包發(fā)送給這個目的網(wǎng)段時將包發(fā)到確定的下一跳地址,但不能明確通過哪個接口將包發(fā)給下一跳,通常情況下要做一次路由表查詢,查找關(guān)于下一跳地址所在網(wǎng)段的路由條目來確定通過哪個接口把報文發(fā)給這個地址即進(jìn)行遞歸表查詢.因此在P2P網(wǎng)段中建議配置出站接口.
如圖1所示,討論一種情況:在初始配置完成后(假設(shè)路由器在RipV2的環(huán)境中運(yùn)行),實現(xiàn)RouterA把環(huán)回口路由傳給RouterB但RouterB不會把RouterA的環(huán)回口路由傳給RouterC,即實現(xiàn)RouterB把除了RouterA環(huán)回口路由外的所有其他IGP路由發(fā)給RouterC.
圖1 靜態(tài)路由實現(xiàn)路由控制圖
首先對一般情況進(jìn)行定義,在路由協(xié)議A中將一個接口使用宣告語句宣告進(jìn)協(xié)議A后,會實現(xiàn)該接口對于該協(xié)議報文的收發(fā).這時會接收鄰居傳遞過來的所有路由條目.會發(fā)送該路由器所有被配置進(jìn)協(xié)議A的接口的路由.以及通過這些接口獲悉的該路由器鄰居傳遞過來的被加入路由表屬于該協(xié)議的路由.即在距離矢量中(RIP、EIGRP)使用靜態(tài)路由可以實現(xiàn)路由過濾.
其次對上述拓?fù)溥M(jìn)行定義,RouterB把s1/1配置進(jìn)RIP進(jìn)程,不把RouterB的s1/1配置進(jìn)RIP那么RouterA路由和12.1.1.0網(wǎng)段路由都會去掉.即只要在RouterB中創(chuàng)建一條靜態(tài)路由即可實現(xiàn)需求.
RouterB(config)#ip route 1.1.1.0255.255.255.0 s1/112.1.1.1
更進(jìn)一步研究發(fā)現(xiàn),若初始環(huán)境配置為OSPF,由于在鏈路狀態(tài)協(xié)議(OSPF)中,路由器傳遞拓?fù)湫畔SA,并不傳遞路由條目,而每臺路由器關(guān)于一個區(qū)域的所有路由條目是由本地計算得到的,故此時,在初始環(huán)為OSPF情況下,RouterB上配置靜態(tài)路由會覆蓋OSPF路由,但卻不會影響LSA的傳遞.故此時靜態(tài)路由無法實現(xiàn)路由過濾.
靜態(tài)路由在路由表中存放原則為,該條目關(guān)聯(lián)的發(fā)包接口必須為up/up狀態(tài).當(dāng)接口故障后,靜態(tài)路由會從路由表中刪除.這種情況下靜態(tài)路不會在路由表中永久存在.
實驗室中的測試拓?fù)鋾?jīng)常變更路徑,一種情況是靜態(tài)路由關(guān)聯(lián)一條按需鏈路(Circuiton Demand).例如基于VC工作幀中繼環(huán)境中,使用鏈路時會自動建立,發(fā)包結(jié)束后將鏈路拆除.在基于SVC的幀中繼環(huán)境中將主接口建立成若干點(diǎn)到點(diǎn)子接口,某些點(diǎn)到點(diǎn)子接口關(guān)聯(lián)SVC.當(dāng)SVC被拆除后,子接口將會斷掉,此時若通過配置靜態(tài)路由實現(xiàn)連通性,則靜態(tài)路由就會消失.要保證在按需鏈路的情況下靜態(tài)路由能實時地存在于路由表中,在配置靜態(tài)路由時就應(yīng)加上permanent參數(shù).例如對于CISCO較低的IOS,若配置了按需鏈路,同時用靜態(tài)路由完成連通性.當(dāng)沒有流量通過時按需鏈路斷開,但當(dāng)拓?fù)渥兏葱桄溌方⒑脮r,靜態(tài)路由還不能及時回到路由表中,此時按需鏈路即便接通也因沒有路由而無法轉(zhuǎn)發(fā)報文.這種情況下就應(yīng)加上permanent參數(shù),即便鏈路斷了靜態(tài)路由也不會刪除.但當(dāng)使用clear ip route*命令后,包括配置了permanent參數(shù)的靜態(tài)路由表項在內(nèi)的全部路由表項都將被刷新.
圖2 靜態(tài)路由的浮動特性圖
如圖2所示,討論一種情況:兩家企業(yè)既通過串口連接又使用ISDN連接.現(xiàn)將兩企業(yè)抽象為兩個網(wǎng)段.172網(wǎng)段和10網(wǎng)段.通過串口連接的主鏈路帶寬較好.為滿足HA高可用性需求.通過配置實現(xiàn)在主鏈路正常時使用主鏈路發(fā)送報文,當(dāng)主鏈路故障時使用ISDN提供的備份鏈路來實現(xiàn)低速率的連通.
根據(jù)上述需求可通過靜態(tài)路由和某種IGP共同實現(xiàn).調(diào)整靜態(tài)路由的管理距離來實現(xiàn)備份鏈路的冗余備份即靜態(tài)路由的浮動特性.使得網(wǎng)絡(luò)10不可達(dá)時會影響RouterA的路由表.例如RouterA、RouterB之間運(yùn)行RIP當(dāng)10網(wǎng)段正常時RouterB會把這個網(wǎng)段路由以RIP路由的形式發(fā)給RouterA,10網(wǎng)段故障時,此時RouterA有一條靜態(tài)路由,此靜態(tài)路由的管理距離應(yīng)比RIP的管理距離高,那么這條靜態(tài)路由就會出現(xiàn)在路由表中.RouterA(config)#ip route1.1.1.0255.255.255.0 fastEthernet0/012.12.12.1121
如圖3所示,討論一種情況:RouterC上配置ip route1.1.1.0255.255.255.0 fa0/012.1.1.2此時Router C沒有去往12.1.1.0網(wǎng)段的路由條目,對于Router C而言這條路由條目的作用是,若發(fā)包給1.1.1.0網(wǎng)段則會將包轉(zhuǎn)發(fā)給12.1.1.2這個地址,此時Router C沒有去往這個地址所在網(wǎng)段的路由條目.Router C只會通過S1/1把包發(fā)出去,但并不明確發(fā)給哪個路由器.故若配置一條靜態(tài)路由,其下一跳和本地非直連且本地路由表中不存在去往下一跳所在網(wǎng)段路由條目,則此靜態(tài)路由不能使用.
圖3 靜態(tài)路由遞歸表查詢圖
如圖4所示,討論一種情況:假定在Router3上連接了若干子網(wǎng)段.Router0想要訪問這些子網(wǎng)段并且通過靜態(tài)路由來部署.此時下一跳可設(shè)置為Router1、Router2.假設(shè)下一跳都關(guān)聯(lián)在Router1的f0/1.可以通過Router1訪問這些子網(wǎng)段.當(dāng)Router1故障時,拓?fù)浒l(fā)生變更,可將四條靜態(tài)路由刪掉,重新配置關(guān)聯(lián)到Router2上的路由.Router1恢復(fù)正常.此時希望通過Router1轉(zhuǎn)發(fā),則需重新改寫.在連接有大量網(wǎng)段的真實環(huán)境中此方案無法實施.靜態(tài)路由在這樣的環(huán)境中如果直接關(guān)聯(lián)一個直連接口為下一跳,會極為不靈活.
圖4 利用遞歸路由影響路由查詢圖
首先對一般情況進(jìn)行定義,一條路由的下一跳通常直連的是數(shù)據(jù)層面的下游鄰居接收數(shù)據(jù)報文接口的IP地址,可描述為一般情況下對于路由器而言不管什么路由條目基本下一跳都和本地直連,但特殊情況下并不是所有路由條目下一條都一定會和設(shè)備直連.對于靜態(tài)路由通常下一跳和本地直連使得即便第一條路由發(fā)不了包,使用遞歸表查詢下一條直連路由便可轉(zhuǎn)發(fā)報文.更一般性的概述為靜態(tài)路由下一跳地址可以為去往目的網(wǎng)段下游任何一臺設(shè)備的任何一個接口的IP地址.
其次對圖4拓?fù)溥M(jìn)行描述,讓Router0配置靜態(tài)路由時既不關(guān)聯(lián)Router1,也不關(guān)聯(lián)Router2,直接把靜態(tài)路由的下一跳關(guān)聯(lián)到Router3 f0/0,此時Router0發(fā)包給這些子網(wǎng)段只用把報文發(fā)給Router3即可.但當(dāng)Router0配置完靜態(tài)路由后沒有200.2.2.0網(wǎng)段路由,故路由條目不可用.路由器會發(fā)送ARP請求,請求關(guān)于200.2.2.4的ARP信息.在Router0、Router1、Router2上開啟debug arp在Router0上ping 10.1.1.4.通過debug發(fā)現(xiàn)Router0要發(fā)包給10.1.1.4目的節(jié)點(diǎn)時要發(fā)包給200.2.2.4下一跳地址.而此時Router0沒有關(guān)于200.2.2.4的ARP表項,所以發(fā)送ARP請求.
*Mar100:10:18.679:IPARP:creating incompleteentry for IPaddress:200.2.2.4
interface FastEthernet0/1
*Mar100:10:18.679:IPARP:sent req src 100.1.1.1 c004.0f9c.0001,
dst200.2.2.40000.0000.0000 FastEthernet0/1
ARP為廣播發(fā)送,對PC而言若該設(shè)備收到路由器傳遞的Proxy ARPRelay,則該P(yáng)C會無條件信任該Relay,且將其加入到ARP表.對路由器,若該設(shè)備收到Proxy ARPRelay,則該路由器(啟用了基于IPV4的路由選擇)會優(yōu)先判斷該Relay中應(yīng)答者IP地址所在網(wǎng)段是否可達(dá),若可達(dá)則接收,反之丟棄.所以Router0發(fā)送的ARP請求Router1和Router2都能收到.此時Router1和Router2接收到ARP的接口默認(rèn)情況下開啟代理ARP,當(dāng)接口收到了ARP請求后,判斷請求者Router0和被請求者Router3不在同一廣播域,且Router1和Router2既擁有去往源100.1.1.0網(wǎng)段又擁有去往目的200.2.2.0網(wǎng)段的路由條目.所以Router1和Router2都把接收到ARP請求的接口的MAC地址作為應(yīng)答返還給Router0.Router0收到ARP的應(yīng)答會被過濾.故只要保證當(dāng)Router0收到了這些ARPRelay時信任,并且加表即可.故需在Router0上配置Router0(config)#ip route 200.2.2.0255.255.255.0 fastEthernet0/1100.1.1.2,當(dāng)Router0收到ARPRelay后,就會在ARP表中添加200.2.2.4對Router1的映射,再使用該路由條目發(fā)包時,會直接通過ARP表項封裝數(shù)據(jù)從f0/1發(fā)送出去,交換機(jī)收到此報文后只會將此報文發(fā)送給Router1.此時Router0便可使用Router1這條路經(jīng)訪問Router3.在Router0上S 200.2.2.0/24[1/0]via 100.1.1.2,fastethernet0/1路由的用途只是告知路由器發(fā)包給這些子網(wǎng)段靜態(tài)路由的下一跳IP地址.遞歸路由對Router0而言,僅為讓Router0收到了關(guān)于200.2.2.0網(wǎng)段下一跳地址的ARPRelay時能判斷其為法.對于遞歸路由的下一跳地址100.1.1.2無意義.
更進(jìn)一步研究發(fā)現(xiàn),JeffDoyle在TCP/IP路由技術(shù)(第一卷)的描述認(rèn)為:Router0指四條靜態(tài)路由條目去往目的網(wǎng)段,若去往這些目的網(wǎng)段通過Router1路徑,對于這條遞歸路由,可直接把下一跳寫為Router1直連接口的IP地址,當(dāng)Router1故障時只需要將這條遞歸路由刪掉,重新寫一條下一跳指向Router2的直連接口地址,便可實現(xiàn)路徑切換.通過Jeff Doyle描述,可認(rèn)為遞歸表路由的下一跳是會影響發(fā)包接口去往目的網(wǎng)段的路徑選擇,這個下一跳直接影響了會使用哪條路徑來發(fā)包給下一跳地址.為此討論遞歸路由的下一跳是否會影響發(fā)包.若遞歸路由的下一跳確有意義,則發(fā)包給10.0.1.0網(wǎng)段,先發(fā)包給200.2.2.4,而發(fā)包給200.2.2.4則發(fā)包給100.1.1.2.即Router0收到的去往10.0.1.0網(wǎng)段的包在做ARP請求時,請求的是100.1.1.2節(jié)點(diǎn)的MAC地址.但實驗發(fā)現(xiàn)事實請求的為200.2.2.0網(wǎng)段.由此可知遞歸路由對下一條沒有任何影響.能影響選路的是ARP表中所解析到的關(guān)于主路由的下一跳地址所對應(yīng)的ARP表項.如果解析到的是關(guān)于Router1的,便會通過Router1所在鏈路轉(zhuǎn)發(fā)數(shù)據(jù),如果解析到的是關(guān)于Router2的,便會通過Router2所在鏈路轉(zhuǎn)發(fā)數(shù)據(jù).通過多次實驗測試發(fā)現(xiàn)Router0發(fā)送ARP請求時,Router1和Router2都會應(yīng)答,Router0會將最后到達(dá)的ARPRelay加表.而遞歸表路由的下一跳不會影響路徑.影響路徑的僅僅是代理ARP應(yīng)答.
最后對圖4拓?fù)溥M(jìn)行定義:實驗發(fā)現(xiàn),依據(jù)Jeff Doyle的描述,正常時遞歸路由下一跳配置為Router1,當(dāng)Router1故障時,再把遞歸表路由下一跳配置為Router2.是無法進(jìn)行切換的.原因分析為發(fā)包給下一跳地址是基于ARP表項的,ARP表項一但錄入ARP表中,存活時間為4小時.重新切換一條遞歸路由路徑依然會走原來的故障鏈路無法切換.事實還發(fā)現(xiàn)一臺路由器關(guān)于一個目標(biāo)IP地址,在ARP表項中擁有相對應(yīng)的表項,除非表項消失,否則不管任何情況下該路由器都不會再為這個目的IP地址做ARP請求.為此上述情況中當(dāng)Router1故障后,不會影響Router0的任何路由信息的改變,靜態(tài)路由只要出站接口正常路由就會存在,此時主路由和遞歸路由也都會存在,且ARP表項也存在.即便將遞歸路由改變.也依然會使用原始的ARP發(fā)包,仍舊發(fā)給Router1.ARP表項超時后,Router0會刪除掉關(guān)于200.2.2.4的ARP表項.這時再使用主路由,又會針對下一跳地址發(fā)送ARP請求,此次再回復(fù)ARP的將為Router2.Router0會將200.2.2.4映射到Router2的接口MAC地址.故發(fā)包時目的MAC地址對應(yīng)Router2接口MAC地址,交換機(jī)會把報文轉(zhuǎn)發(fā)給Router2.實現(xiàn)路徑切換,整個過程需要4小時.故要快速切換只需將ARP的超時時間改短.
Router0(config)#interface fsatEthernet0/1
Router0(config-if)#arp timeout10<0- 214783 Seconds>
如圖4所示,討論另一種情況:使用Router0通過Router1發(fā)包給Router3,回包方向為從Router3通過Router2回給Router0.
在初始ARP的時間內(nèi),在Router0沒有關(guān)于下一跳ARP的應(yīng)答時,通過設(shè)置代理ARP的發(fā)送情況即先將ARP表項清空,再通過關(guān)閉代理ARP功能.使Router0觸發(fā)第一個報文到達(dá)Router3時,將Router2的f0/1代理ARP關(guān)閉,把Router1的f0/0代理ARP也關(guān)閉.發(fā)包時只讓Router1發(fā)送代理ARP應(yīng)答.回包時讓Router3也使用遞歸表查詢,讓Router3只能收到Router2的代理ARP應(yīng)答.
Router2(config)#interface fastEthernet0/0 Router2(config-if)#no ip proxy-arp
綜上所述,可做如下結(jié)論,考慮到網(wǎng)絡(luò)中的兩種廣播域MA(Ethernet、FrameRelay)和P2P(HDLC、PPP),通過分析考慮到兩種方式的局限性,建議配置靜態(tài)路由時既配置出站接口又同時配置下一跳IP地址.這樣既不會有遞歸表查詢又不會引起大量的ARP解析,提高路由效率.在DV協(xié)議環(huán)境中使用靜態(tài)路由覆蓋通過DVIGP獲悉的動態(tài)路由條目可以實現(xiàn)該路由條目的傳遞過濾,在LS協(xié)議環(huán)境中使用靜態(tài)路由覆蓋通過LSIGP獲悉的動態(tài)路由條目無法實現(xiàn)該路由條目的傳遞過濾.企業(yè)環(huán)境中尤其是對于外網(wǎng)的連接,如果使用靜態(tài)路由實現(xiàn)連通性,應(yīng)配置permanent參數(shù).靜態(tài)浮動路由,可使得IGP路由正常時靜態(tài)路由不會出現(xiàn)在路由表中,當(dāng)IGP網(wǎng)絡(luò)環(huán)境發(fā)生改變影響路由表時IGP路由消失時而靜態(tài)路由又會浮現(xiàn)在路由表中,實現(xiàn)冗余備份.遞歸路由可影響選路增加靜態(tài)路由的靈活性.實現(xiàn)遞歸路由的使用要配置一條遞歸路由,此遞歸路由無論攜帶任何下一跳地址,此下一跳地址都不會影響選路.
[1]Jeff Doyle,Jennifer Carroll.TCP/IP路由技術(shù):第一卷[M].北京:人民郵電出版社,2007.
[2]W.Richard Stevens.TCP/IP詳解卷1:協(xié)議[M].北京:機(jī)械工業(yè)出版社,2000.
[3]David Hucaby,Steve McQuerry,Andrew Whitaker.Cisco路由器配置手冊[M].北京:人民郵電出版社,2012.
[4]Diane Teare.CCNPROUTE(640-902)學(xué)習(xí)指南[M].北京:人民郵電出版社,2011.
[5]謝希仁.計算機(jī)網(wǎng)絡(luò)[M].北京:電子工業(yè)出版社,2008.