淺析路由策略與策略路由
一、路由策略
路由策略,是路由釋出和接收的策略。其實,選擇路由協議本身也是一種路由策略,因為相同的網路結構,不同的路由協議因為實現的機制不同、開銷計算規則不同、優先順序定義不同等可能會產生不同的路由表,這些是最基本的。通常我們所說的路由策略指的是,在正常的路由協議之上,我們根據某種規則、透過改變某些引數或者設定某種控制方式來改變路由產生、釋出、選擇的結果,注意,改變的是結果(即路由表),規則並沒有改變,而是應用這些規則。
下面給出一些事例來說明。
改變引數的例子:例如,A路由器和B路由器之間是雙鏈路(分別為AB1和AB2)且頻寬相同,執行是OSPF路由協議,但是兩條鏈路的穩定性不一樣,公司想設定AB1為主用電路,當主用電路(AB1)出現故障的時候才採用備用電路(AB2),如果採取預設設定,則兩條電路為負載均衡,這時就可以採取分別設定AB1和AB2電路的COST(開銷)值,將AB1電路的COST值改小或將AB2電路的COST值設大,OSPF會產生兩條開銷不一樣的路由,COST(開銷)越小路由代價越低,所以優先順序越高,路由器會優先採用AB1的電路。還可以不改COST值,而將兩條電路的頻寬(BandWidth)設定為不一致,將AB1的頻寬設定的比AB2的大,根據OSPF路由產生和發現規則,AB1的開銷(COST)會比AB2低,路由器同樣會優先採用AB1的電路。
改變控制方式的例子,基本就是使用路由過濾策略,透過路由策略對符合一點規則的路由進行一些操作,例如最普通操作的是拒絕(deny)和允許(Permit),其次是在允許的基礎上調整這些路由的一些引數,例如COST值等等,通常使用的策略有ACL(Acess Control List訪問控制列表)、ip-prefix、AS-PATH、route-policy等等。大部分的路由策略都和BGP協議配合使用中,屬於路由接收和通告原則。
例如,上圖中AS1不向AS2釋出19.1.1.1/32這個網段,可以設定ACL列表,在RTB上設定(以華為的路由器為例):
[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釋出了這條路由,但是C不想接收這條路由,則C可以設定:
[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
再舉個ip-prefix的例子:
例如RTB不向RTC釋出19.1.1.0/24這個網段的路由,則可以設定
[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是精確匹配的,如果想實現模糊匹配,可以透過後面的引數less-equal或greater-equal來實現,例如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都能匹配上,否則這僅僅表示只匹配目的網路是19.1.1.0/24這一條路由,而19.1.1.0/25不滿足該條件,具體可以參考命令手冊,這裡不詳細解釋了。
上面講的都是路由的執行和禁止,下面講更靈活的路由策略設定方式:route-policy中if-match和apply的匹配,這裡不僅能設定允許或禁止某些路由,還能對允許的路由設定其屬性。
上圖中RTB與RTC之間跑的是IBGP協議,RTA與RTB、RTC之間跑的是EBGP協議。Router_ID按A、B、C、D從小到大排序。正常情況下,RTA到RTD之間的通訊會選擇RTB做中轉,RTD到RTA的通訊也會選擇RTB,在預設情況下,所有引數都相同,BGP會選擇router_ID較小的一條路徑。現在想讓RTD到RTA之間的通訊都走RTB,而RTA到RTD之間的通訊都透過RTC,即兩臺路由器中RTB專門負責自治域內路由器與域外路由器之間的出口通訊,而RTC專門做自治域外路由器與域內路由器的進口通訊,我們可以用route-policy中的as-path來實現,在RTB上做:
[rtb]route-policy test permit node 10
[rtb-route-policy]apply as-path 300 400 //新增虛假的路徑,使as-path增長
[rtb-bgp]peer 1.1.1.1 route-policy test export //向RTA釋出路由資訊的時候使用策略
這樣B在向A釋出BGP路由的時候,加大路由的AS-Path值,根據BGP路由選擇規則,優先選用AS-Path較短的路由,這樣RTA向RTD通訊的時候,優先選用AS-Path短的RTC這條路由,而RTD在選擇到RTA路由的時候仍然選擇的是RTB,因為對RTD來說,影響路由的引數什麼都沒有任何變化。其實也可以使用改變Med值來設定,這裡用路由策略來舉例。
這種方法特別靈活在apply語句中能設定多種引數,除了as-path,還有ip next hop(設定下一跳)、local-preference(本地出口優先順序)、cost(開銷)、origin(起源,來自igp、egp還是incomplete)、tag(標記)。
二、策略路由
2.2.2.2/30 2.2.2.1/30 1.1.1.2/30
RTB |
1.1.1.1/30 |
10.10.10.0/24 |
PC2 |
PC1 |
交換機 |
RTA |
如圖,RTA和RTB之間的通訊有2條鏈路,其中上面那條電路是主用,頻寬是1000M的,下面的電路是備用,頻寬是10M的,目前10M基本是空閒,大部分的通訊都走主用上走,PC1(10.10.10.10/24)是某個特別重要的客戶,他發的資訊要求被立即傳送,我們根據這種情況,我們可以將他的傳送通訊量單獨使用下面備用電路的方法。
rule-map intervlan permitpc1 ip 10.10.10.10 0.0.0.0 any
flow-action next2 redirect ip 2.2.2.2
eacl abc permitpc1 next2
然後在和10.10.10.0/24網路直連的埠上使用 access-group eacl abc命令下發應用。
這是一個策略路由的典型應用。這個應用是根據源地址來選擇轉發路徑的,還可以根據協議型別(例如將UDP和TCP分開跑不同的電路)、應用(例如某些影片應用要求實時傳送,可以將rstp流單獨使用一條電路來跑)、報文大小或它們的組合等來設定轉發條件。其實就是將acl規則應用到資料轉發上,rule-map的規則同ACL,這裡就不在舉再多的例子了,熟悉ACL的技術人員都知道。
這裡flow-action做的動作redirect就是設定下一條,使用flow-action還可以進行QoS相關的操作,例如使用cos或car動作對資料包進行佇列匹配,再根據相關設定的流量模型規則進行操作,具體參閱命令參考手冊。
三、聯絡與區別
聯絡:
雙方都是為了轉發資料包而進行路徑選擇的策略,都是根據某種規則改變某些引數或控制手段來設定不同的轉發路徑。
區別:
路由策略是根據一些規則,使用某種策略改變規則中影響路由釋出、接收或路由選擇的引數而改變路由發現的結果,最終改變的是路由表的內容。是在路由發現的時候產生作用。
策略路由是儘管存在當前最優的路由,但是針對某些特別的主機(或應用、協議)不使用當前路由表中的轉發路徑而單獨使用別的轉發路徑。在資料包轉發的時候發生作用、不改變路由表中任何內容。
策略路由的優先順序比路由策略高,當路由器接收到資料包,並進行轉發的時候,會優先根據策略路由的規則進行匹配,如果能匹配上,則根據策略路由來轉發,否則按照路由表中轉發路徑來進行轉發。
概括一點講就是,路由策略是路由發現規則,策略路由是資料包轉發規則。其實將“策略路由”理解為“轉發策略”,這樣更容易理解與區分。由於轉發在底層,路由在高層,所以轉發的優先順序比路由的優先順序高,這點也能理解的通。其實路由器中存在兩種型別和層次的表,一個是路由表(routing-table),另一個是轉發表(forwording-table)。轉發表是由路由表對映過來的,策略路由直接作用於轉發表,路由策略直接作用於路由表。
四、優缺點
網路通訊的規則是先有路由,才有轉發。路由策略由於僅僅在路由發現的時候產生作用,在路由表產生且穩定之後,如果網路不發生變化,路由表通常都不會變化,這時候,路由策略沒有應用就不會佔用資源。而策略路由是在轉發的時候發生作用,路由器在初始產生路由表之後,基本工作量都在資料包轉發上,如果沒有策略路由,路由器只要分析每一個資料包的目的地址,再按路由表來匹配就可以決定下一跳;但是如果有策略路由,策略路由就一直處於應用狀態,如果策略路由特別複雜,路由器要根據規則來判斷資料包的源地址、協議或應用等附加資訊,這樣就會一直佔用大量的資源,所以除非不得已,儘量使用路由策略,而不要使用策略路由。網路最佳化的時候需要考慮這一點,如果策略路由特別複雜,能透過將網路進行簡單分解而達到取消策略路由的儘量進行分解,否則路由器負擔很重。
結束語:通常,如果兩種技術的名稱特別相似,則證明這兩種技術本身有很大的相似性,可能是工作在不同的層面,或者面向的物件不同,我們一定要搞清楚它們之間的聯絡與區別,否則在工作中,就可能會出現指鹿為馬的錯誤了,這種錯誤通常都會導致問題的複雜性。來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/653579/viewspace-864393/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 路由策略和策略路由配置與管理-1路由
- 路由策略路由
- 01、路由策略簡介路由
- Linux 策略路由詳解Linux路由
- Kali路由策略探測工具————firewalk路由
- 綜合實驗,策略路由(BFD,NAT)路由
- 淺析防火牆與路由器的安全配置防火牆路由器
- 敢問路在何方——Flutter 路由淺析Flutter路由
- iOS 設計模式淺析 1 - 策略iOS設計模式
- 觀察者+配置中心動態策略路由Demo路由
- 解密Prompt系列38.多Agent路由策略解密路由
- 計算機網路之策略路由與雙機熱備計算機網路路由
- 網路互通設障,策略路由有方法(轉)路由
- 通過流策略實現策略路由(重定向到不同的下一跳)路由
- linux新增策略路由python指令碼(待完善)Linux路由Python指令碼
- 雲主機新增網路卡配置多網路卡策略路由路由
- OSPF路由 與 ISIS路由 與路由學習對比路由
- 又一入口之爭:淺析智慧路由器的發展與趨勢路由器
- 淺談網路-閘道器與路由路由
- 開發者淺析2020年的遊戲定價策略遊戲
- 網際網路網站的反爬蟲策略淺析網站爬蟲
- Angular 使用 RouteReuseStrategy (路由複用策略) 實現後臺 TAB 標籤Angular路由
- 某學校雲電腦專案策略路由實際使用案例路由
- 淺析即時策略RTS遊戲中的動態地圖元素遊戲地圖
- 淺談策略模式(strategy)模式
- 前端路由與後端路由的思考前端路由後端
- 用兩種方式實現基於源地址的策略路由(轉)路由
- 淺入深出Vue:路由Vue路由
- 域組策略與本地組策略
- 淺談前後端路由與前後端渲染後端路由
- http快取策略以及強快取和協商快取淺析HTTP快取
- 淺談線上廣告分配策略
- 淺析大資料時代政務網路輿情的應對策略大資料
- ECS彈性網路卡+彈性公網IP配置最佳實踐之策略路由路由
- 策略模式、策略模式與Spring的碰撞模式Spring
- 淺談撞庫防禦策略
- if else與策略模式模式
- 機制與策略