在網(wǎng)絡(luò)設(shè)備維護(hù)上,現(xiàn)在很多維護(hù)的資料上都講到“路由策略”與“策略路由”這兩個(gè)名詞惩猫,但是有很多搞維護(hù)的技術(shù)人員對(duì)這兩個(gè)名詞理解的還不是很透徹,無(wú)法準(zhǔn)確把握這兩者之間的聯(lián)系與區(qū)別蚜点。
本文簡(jiǎn)單分析一下這兩者之間的概念轧房,并介紹一些事例,希望大家能從事例中得到更深的理解绍绘。
路由策略
路由策略奶镶,是路由發(fā)布和接收的策略。其實(shí)陪拘,選擇路由協(xié)議本身也是一種路由策略厂镇。
因?yàn)橄嗤木W(wǎng)絡(luò)結(jié)構(gòu),不同的路由協(xié)議因?yàn)閷?shí)現(xiàn)的機(jī)制不同左刽、開(kāi)銷(xiāo)計(jì)算規(guī)則不同捺信、優(yōu)先級(jí)定義不同等可能會(huì)產(chǎn)生不同的路由表,這些是最基本的欠痴。
通常我們所說(shuō)的路由策略指的是迄靠,在正常的路由協(xié)議之上,我們根據(jù)某種規(guī)則喇辽、通過(guò)改變某些參數(shù)或者設(shè)置某種控制方式來(lái)改變路由產(chǎn)生掌挚、發(fā)布、選擇的結(jié)果菩咨。
注意吠式,改變的是結(jié)果(即路由表)舅世,規(guī)則并沒(méi)有改變,而是應(yīng)用這些規(guī)則奇徒。
下面給出一些事例來(lái)說(shuō)明雏亚。
改變參數(shù)的例子:
例如,A路由器和B路由器之間是雙鏈路(分別為AB1和AB2)且?guī)捪嗤Ω疲\(yùn)行是OSPF路由協(xié)議罢低,但是兩條鏈路的穩(wěn)定性不一樣。
公司想設(shè)置AB1為主用電路网持,當(dāng)主用電路(AB1)出現(xiàn)故障的時(shí)候才采用備用電路(AB2),如果采取默認(rèn)設(shè)置长踊,則兩條電路為負(fù)載均衡功舀,這時(shí)就可以采取分別設(shè)置AB1和AB2電路的COST(開(kāi)銷(xiāo))值,將AB1電路的COST值改小或?qū)B2電路的COST值設(shè)大身弊,OSPF會(huì)產(chǎn)生兩條開(kāi)銷(xiāo)不一樣的路由辟汰,COST(開(kāi)銷(xiāo))越小路由代價(jià)越低,所以優(yōu)先級(jí)越高阱佛,路由器會(huì)優(yōu)先采用AB1的電路帖汞。
還可以不改COST值,而將兩條電路的帶寬(BandWidth)設(shè)置為不一致凑术,將AB1的帶寬設(shè)置的比AB2的大翩蘸,根據(jù)OSPF路由產(chǎn)生和發(fā)現(xiàn)規(guī)則,AB1的開(kāi)銷(xiāo)(COST)會(huì)比AB2低淮逊,路由器同樣會(huì)優(yōu)先采用AB1的電路催首。
改變控制方式的例子:
基本就是使用路由過(guò)濾策略,通過(guò)路由策略對(duì)符合一點(diǎn)規(guī)則的路由進(jìn)行一些操作泄鹏,例如最普通操作的是拒絕(deny)和允許(Permit)郎任。
其次是在允許的基礎(chǔ)上調(diào)整這些路由的一些參數(shù),例如COST值等等命满,通常使用的策略有ACL(Acess Control List訪問(wèn)控制列表)涝滴、ip-prefix、AS-PATH胶台、route-policy等等。大部分的路由策略都和BGP協(xié)議配合使用中杂抽,屬于路由接收和通告原則诈唬。
例如,AS1不向AS2發(fā)布19.1.1.1/32這個(gè)網(wǎng)段缩麸,可以設(shè)置ACL列表铸磅,在RTB上設(shè)置(以華為的路由器為例):
[RTB]acl number 1 match-order auto
[RTB-acl-basic-1]rule deny source 19.1.1.1 0
[RTB-acl-basic-1]rule permit source any
[RTB]bgp 1
[RTB-bgp]peer 2.2.2.2 as-number 2
[RTB-bgp] import-route ospf
[RTB-bgp] peer 2.2.2.2 filter-policy 1 export
如果B向C發(fā)布了這條路由,但是C不想接收這條路由阅仔,則C可以設(shè)置:
[RTC]acl number 1 match-order auto
[RTC-acl-basic-1]rule deny source 19.1.1.1 0
[RTC-acl-basic-1]rule permit source any
[RTC]bgp 2
[RTC-bgp]peer 2.2.2.1 as-number 1
[RTC-bgp] peer 2.2.2.1 filter-policy 1 import
再舉個(gè)ip-prefix的例子:
例如RTB不向RTC發(fā)布19.1.1.0/24這個(gè)網(wǎng)段的路由吹散,則可以設(shè)置
[RTB]ip ip-prefix test index 10 deny 19.1.1.0 24
[RTB]ip ip-prefix test index 20 permit any
[RTB]bgp 1
[RTB-bgp]peer 2.2.2.2 as-number 2
[RTB-bgp] import-route ospf
[RTB-bgp] import-route direct
[RTB-bgp]peer 2.2.2.2 ip-prefix test export
ip-prefix是精確匹配的,如果想實(shí)現(xiàn)模糊匹配八酒,可以通過(guò)后面的參數(shù)less-equal或greater-equal來(lái)實(shí)現(xiàn)空民,例如ip ip-prefix test index 10 deny 19.1.1.0 24 less-equal 31就表示從19.1.1.0/24、19.1.1.0/25羞迷、19.1.1.0/26一直到19.1.1.0/31都能匹配上界轩,
否則這僅僅表示只匹配目的網(wǎng)絡(luò)是19.1.1.0/24這一條路由,而19.1.1.0/25不滿足該條件衔瓮,具體可以參考命令手冊(cè)浊猾。
上面講的都是路由的運(yùn)行和禁止,下面講更靈活的路由策略設(shè)置方式热鞍。
route-policy中if-match和apply的匹配葫慎,這里不僅能設(shè)置允許或禁止某些路由,還能對(duì)允許的路由設(shè)置其屬性薇宠。
RTB與RTC之間跑的是IBGP協(xié)議幅疼,RTA與RTB、RTC之間跑的是EBGP協(xié)議昼接。
Router_ID按A爽篷、B、C慢睡、D從小到大排序逐工。正常情況下,RTA到RTD之間的通信會(huì)選擇RTB做中轉(zhuǎn)漂辐,RTD到RTA的通信也會(huì)選擇RTB泪喊。在默認(rèn)情況下,所有參數(shù)都相同髓涯,BGP會(huì)選擇router_ID較小的一條路徑袒啼。
現(xiàn)在想讓RTD到RTA之間的通信都走RTB,而RTA到RTD之間的通信都通過(guò)RTC纬纪,即兩臺(tái)路由器中RTB專門(mén)負(fù)責(zé)自治域內(nèi)路由器與域外路由器之間的出口通信蚓再,而RTC專門(mén)做自治域外路由器與域內(nèi)路由器的進(jìn)口通信。
我們可以用route-policy中的as-path來(lái)實(shí)現(xiàn)摘仅,在RTB上做:
[rtb]route-policy test permit node 10
[rtb-route-policy]apply as-path 300 400 //添加虛假的路徑,使as-path增長(zhǎng)
[rtb-bgp]peer 1.1.1.1 route-policy test export //向RTA發(fā)布路由信息的時(shí)候使用策略
這樣B在向A發(fā)布BGP路由的時(shí)候问畅,加大路由的AS-Path值娃属,根據(jù)BGP路由選擇規(guī)則六荒,優(yōu)先選用AS-Path較短的路由,這樣RTA向RTD通信的時(shí)候矾端,
優(yōu)先選用AS-Path短的RTC這條路由掏击,而RTD在選擇到RTA路由的時(shí)候仍然選擇的是RTB。因?yàn)閷?duì)RTD來(lái)說(shuō)秩铆,影響路由的參數(shù)什么都沒(méi)有任何變化砚亭。
其實(shí)也可以使用改變Med值來(lái)設(shè)定,這里用路由策略來(lái)舉例豺旬。
這種方法特別靈活在apply語(yǔ)句中能設(shè)置多種參數(shù)钠惩,除了as-path,還有ip next hop(設(shè)置下一跳)族阅、local-preference(本地出口優(yōu)先級(jí))篓跛、cost(開(kāi)銷(xiāo))、origin(起源坦刀,來(lái)自igp愧沟、egp還是incomplete)、tag(標(biāo)記)鲤遥。
策略路由
策略路由是一種依據(jù)用戶制定的策略進(jìn)行路由選擇的機(jī)制,與單純依照IP報(bào)文的目的地址查找路由表進(jìn)行轉(zhuǎn)發(fā)不同盖奈,可應(yīng)用于安全混坞、負(fù)載分擔(dān)等目的。
它是一個(gè)基于路由表的影響特定數(shù)據(jù)包的轉(zhuǎn)發(fā)的一個(gè)方式钢坦,這個(gè)方式是應(yīng)用于接口下的究孕。
例如:讓192.168.1.1的數(shù)據(jù)包都從s0/1走,讓192.168.1.2的數(shù)據(jù)包都從s0/1走
access-list 1 permit host 192.168.1.1
access-list 2 permit host 192.168.1.2
route-map ccie permit 10
match ip address 1
set interface s0/1
router0map ccie permit 20
match ip address 2
set interface s0/2
int fa1/0
ip policy route-map ccie
注意:set interface s0/1 與 set ?default interface s0/1
set ip next-hip ?與 set ?default ip next-hop 是有區(qū)別的爹凹,前者不查找路由直接進(jìn)行了轉(zhuǎn)發(fā)厨诸,而后者是先查找路由表,查找不到精確的路由表時(shí)才會(huì)轉(zhuǎn)發(fā)到下一跳接口或IP禾酱。
PBR只有進(jìn)方向方向微酬,一定要注意!PBR優(yōu)先于路由表查找颤陶。
策略路由PBR默認(rèn)只對(duì)穿越流量生效颗管。
(config)#(ip local policy route-map ccie)??//這樣寫(xiě)是策略理由也影響本地產(chǎn)生的流量
此外策略路由還可以通過(guò)改變IP報(bào)文的tos字段達(dá)到流量控制的目的。
聯(lián)系與區(qū)別
聯(lián)系:
雙方都是為了轉(zhuǎn)發(fā)數(shù)據(jù)包而進(jìn)行路徑選擇的策略指郁,都是根據(jù)某種規(guī)則改變某些參數(shù)或控制手段來(lái)設(shè)置不同的轉(zhuǎn)發(fā)路徑忙上。
區(qū)別:
路由策略是根據(jù)一些規(guī)則,使用某種策略改變規(guī)則中影響路由發(fā)布闲坎、接收或路由選擇的參數(shù)而改變路由發(fā)現(xiàn)的結(jié)果疫粥,最終改變的是路由表的內(nèi)容。是在路由發(fā)現(xiàn)的時(shí)候產(chǎn)生作用腰懂。
策略路由是盡管存在當(dāng)前最優(yōu)的路由梗逮,但是針對(duì)某些特別的主機(jī)(或應(yīng)用、協(xié)議)不使用當(dāng)前路由表中的轉(zhuǎn)發(fā)路徑而單獨(dú)使用別的轉(zhuǎn)發(fā)路徑绣溜。
在數(shù)據(jù)包轉(zhuǎn)發(fā)的時(shí)候發(fā)生作用慷彤、不改變路由表中任何內(nèi)容。
策略路由的優(yōu)先級(jí)比路由策略高怖喻,當(dāng)路由器接收到數(shù)據(jù)包底哗,并進(jìn)行轉(zhuǎn)發(fā)的時(shí)候,會(huì)優(yōu)先根據(jù)策略路由的規(guī)則進(jìn)行匹配锚沸,如果能匹配上跋选,則根據(jù)策略路由來(lái)轉(zhuǎn)發(fā),否則按照路由表中轉(zhuǎn)發(fā)路徑來(lái)進(jìn)行轉(zhuǎn)發(fā)哗蜈。
概括一點(diǎn)講就是前标,
路由策略是路由發(fā)現(xiàn)規(guī)則,策略路由是數(shù)據(jù)包轉(zhuǎn)發(fā)規(guī)則距潘。其實(shí)將“策略路由”理解為“轉(zhuǎn)發(fā)策略”炼列,這樣更容易理解與區(qū)分。
由于轉(zhuǎn)發(fā)在底層音比,路由在高層俭尖,所以轉(zhuǎn)發(fā)的優(yōu)先級(jí)比路由的優(yōu)先級(jí)高,這點(diǎn)也能理解的通洞翩。其實(shí)路由器中存在兩種類型和層次的表稽犁,一個(gè)是路由表(routing-table),另一個(gè)是轉(zhuǎn)發(fā)表(forwording-table)菱农。
轉(zhuǎn)發(fā)表是由路由表映射過(guò)來(lái)的缭付,策略路由直接作用于轉(zhuǎn)發(fā)表,路由策略直接作用于路由表循未。
優(yōu)缺點(diǎn)
網(wǎng)絡(luò)通信的規(guī)則是先有路由陷猫,才有轉(zhuǎn)發(fā)。路由策略由于僅僅在路由發(fā)現(xiàn)的時(shí)候產(chǎn)生作用的妖,在路由表產(chǎn)生且穩(wěn)定之后绣檬,如果網(wǎng)絡(luò)不發(fā)生變化,路由表通常都不會(huì)變化嫂粟,這時(shí)候娇未,路由策略沒(méi)有應(yīng)用就不會(huì)占用資源。
而策略路由是在轉(zhuǎn)發(fā)的時(shí)候發(fā)生作用星虹,路由器在初始產(chǎn)生路由表之后零抬,基本工作量都在數(shù)據(jù)包轉(zhuǎn)發(fā)上镊讼,如果沒(méi)有策略路由,路由器只要分析每一個(gè)數(shù)據(jù)包的目的地址平夜,再按路由表來(lái)匹配就可以決定下一跳蝶棋;
?但是如果有策略路由,策略路由就一直處于應(yīng)用狀態(tài)忽妒,如果策略路由特別復(fù)雜玩裙,路由器要根據(jù)規(guī)則來(lái)判斷數(shù)據(jù)包的源地址、協(xié)議或應(yīng)用等附加信息段直,這樣就會(huì)一直占用大量的資源吃溅,所以除非不得已,盡量使用路由策略鸯檬,而不要使用策略路由决侈。
網(wǎng)絡(luò)優(yōu)化的時(shí)候需要考慮這一點(diǎn),如果策略路由特別復(fù)雜京闰,能通過(guò)將網(wǎng)絡(luò)進(jìn)行簡(jiǎn)單分解而達(dá)到取消策略路由的盡量進(jìn)行分解颜及,否則路由器負(fù)擔(dān)很重。