【轉自】https://blog.csdn.net/kkfloat/article/details/39940623
1.概念
1)策略路由(PBR)是一種比基於目標網絡進行路由更加靈活的數據包路由轉發機制。路由器將通過路由圖決定如何對需要路由的數據包進行處理,路由圖決定了一個數據包的下一跳轉發路由器。
在路由器轉發一個數據報文時,首先根據配置的規則對報文進行過濾,匹配成功則按照一定的轉發策略進行報文轉發。這種規則可以是基於標准和擴展訪問控制列表,也可以基於報文的長度;
而轉發策略則是控制報文按照指定的策略路由表進行轉發,也可以修改報文的IP優先字段,策略路由也可以在一定程度上實現流量工程,使不同服務質量的流或者不同性質的數據(語音、FTP)走不同的路徑,
因此,策略路由是對傳統IP路由機制的有效增強。
2)應用策略路由,必須要指定策略路由使用的路由映射,並且要創建路由映射。一個路由映射由很多條策略組成,每個策略都定義了1個或多個的匹配規則和對應操作。一個接口應用策略路由后,
將對該接口接收到的所有包進行檢查,不符合路由映射任何策略的數據包將按照通常的路由轉發進行處理,符合路由映射中某個策略的數據包就按照該策略中定義的操作進行處理。策略路由對報文的發送接口、下一跳的配置是基於多轉發表實現的。
routemap和ACL很類似,它可以用於路由的再發布和策略路由,還經常使用在BGP中.策略路由(policyroute)實際上是復雜的靜態路由,靜態路由是基於數據包的目標地址並轉發到指定的下一跳路由器,
策略路由還利用和擴展IPACL鏈接,這樣就可以提供更多功能的過濾和分類 。
2.策略路由的特點:
1)策略路由比所有路由的級別都高,其中包括直連路由。
2)策略路由是轉發層面的行為,操作的對象是數據包,匹配的是數據流,具體是指數據包中的各個字段:源IP、目標IP、協議、源端口、目標端口、802.1p優先級 、VLANID 源/目的MAC地址、IP優先級 、DSCP的優先級 、IP的協議類型字段
3)為QoS服務。使用route-map及策略路由可以根據數據包的特征修改其相關QoS項,進行為QoS服務。
4)負載平衡。使用策略路由可以設置數據包的行為,比如下一跳、下一接口等,這樣在存在多條鏈路的情況下,可以根據數據包的應用不同而使用不同的鏈路,進而提供高效的負載平衡能力。
策略路由影響的只是本地的行為,所以可能會引起“不對稱路由”形式的流量。比如一個單位有兩條上行鏈路A與B,該單位想把所有HTTP流量分擔到A鏈路,FTP流量分擔到B鏈路,這是沒有問題的,
但在其上行設備上,無法保證下行的HTTP流量分擔到A鏈路,FTP流量分擔到B鏈路。
5)策略路由一般針對的是接口入(in)方向的數據包,但也可在啟用相關配置的情況下對本地所發出的數據包也進行策略路由。
3.策略路由的種類:
1)根據路由的目的地址來進行的策略稱為:目的地址路由;
2)根據路由源地址來進行策略實施的稱為:源地址路由!
3)智能均衡的策略方式!就是多條線路不管是光纖還是ADSL,都能自動的識別,並且自動的采取相應的策略方式,是策略路由的發展趨勢
4.CEF的兩種負載均衡方式:
1)基於每個會話的負載均衡(per-session load sharing):基於每個會話的負載均衡允許路由器使用多條路徑分發流量。對於一個給定的源—目的主機對,即使有多條路徑可用,路由器也會保證該會話的數據包走相同的路徑。
不同的會話采用不同的路徑,使用負載均衡,基於每個會話的負載均衡再激活CEF的時候缺省的也被激活。由於基於每個會話的負載均衡依賴於流量的統計分發,因而在會話數增加的情況下更有效率。
基於每個會話的負載均衡能夠確保導向給定的源—目的對的數據包按序到達,因為導向相同主機對的所有數據包都被路由到相同的鏈路上。
2)基於每個數據包的負載均衡基於每個數據包的負載均衡使得路由器可以把連續的數據包發送到不同的路徑上,而不必關心個別的主機或用戶會話,使用輪轉的方法來確定每一個數據包選擇哪條路徑到達目的地。
當大量數據通過單個會話的多條並行鏈路時,基於每個數據包的負載均衡顯得更加有效。在這種情況下,基於每個會話的負載均衡將會過載其中一條鏈路,而其他鏈路幾乎沒有什么流量。
但基於每個數據包的負載均衡會導致針對某一個會話來說,數據包可能走不同的路徑,這會引起數據包的重新排序,對於某些數據流量類型來說是不合適的,必須對於IP語音流量來說。
當啟用基於數據包的負載均衡功能時,必須先禁用基於目的地的負載均衡功能。為了禁用基於目的地的負載均衡功能,可以在接口配置模式下,no ip load-sharing per-destination;
使用基於數據包的負載均衡,路由器可以在路徑上連續發送數據包,而不用考慮具體的主機或用戶情況。這種負載均衡機制采用輪轉辦法來確定每個數據包采用哪條路徑到達目的地。
基於數據包的負載均衡可以保證在多條鏈路上進行負載均衡。要啟用基於數據包的負載均衡功能,可以在接口配置模式下,ip load-sharing per-packet;為CEF配置網絡記賬功能,
啟用收集被快速轉發到某個目的地的數據包個數和字節數ip cef accounting per-prefix啟用收集通過某個目的地被快速轉發的數據包的個數ip cef accounting non-recursive在全局配置模式中為CEF啟用網絡記賬功能后,
相應的路由處理器會收集記賬信息。當用戶為CEF啟用網絡記賬功能后,線路卡上會收集記帳信息。查看網絡記帳信息 show ip cef。
建議使用每會話的負載均衡,因為如果每包的負載均衡會出現包的順序出錯,導致應用無法打開。同時會出現不同IP同時登陸同一個應用而遭受拒絕例如:加密、HTTPS,網銀,QQ等
5.路由重分發的相關命令
match interface {type number} […type number]:匹配指定的下一跳路由器的接口的路由
match ip address {ACL number|name} […ACL number|name]:匹配ACL所指定的目標IP地址或網段的路由
match ip next-hop {ACL number|name} […ACL number|name]:匹配ACL所指定的下一跳路由器地址的路由
match ip route-source {ACL number|name} […ACL number|name]:匹配ACL所指定的路由器所宣告的路由
match metric {metric-value}://匹配指定metric大小的路由
match route-type {internal|external[type-1|type-2]|level-1|level-2}:匹配指定的OSPF,EIGRP或IS-IS的路由類型的路由
match tag {tag-value} […tag-value]:匹配帶有標簽(tag)的路由
set level {level-1|level-2|level-1-2|stub-area|backbone}:設置IS-IS的Level,或OSPF的區域,匹配成功的路由將被再發布到該區域
Set metric {metric-value|bandwidth delay RELY load MTU}:為匹配成功的路由設置metric大小
set metric-type {internal|external|type-1|type-2}:為匹配成功的路由設置metric的類型,該路由將被再發布到OSPF或IS-IS 1
set next-hop {next-hop}:為匹配成功的路由指定下一跳地址
set tag {tag-value}:為匹配成功的路由設置標簽
6.策略路由的相關命令
match ip address {ACL number|name} […ACL number|name]:匹配ACL所指定的目標IP地址或網段的路由
match length {min} {max}://匹配第3層的數據包的長度
set default interface {type number} […type number]://先查詢路由表,在找不到精確匹配的路由條目時,才轉發數據包到default語句指定的下一跳接口
set interface {type number} […type number]://首先檢查策略路由,不符合策略后使用路由表進行數據包轉發處理
set ip default next-hop {ip-address} […ip-address]://先查詢路由表,在找不到精確匹配的路由條目時,就轉發數據包到下一跳IP
set ip next-hop ip-address {ip-address}://首先檢查策略路由,不符合策略后使用路由表進行數據包轉發處理
set ip precedence {precedence}:為匹配成功的IP數據包設置服務類型(Type of Service,ToS)的優先級
set ip tos {tos}:為匹配成功的數據包設置服務類型的字段的TOS位
route map是通過名字來標識的,每個route map都包含許可或拒絕操作。關於拒絕操作,是依賴於route map是使用在路由的重發布環境還是策略路由環境中, 如果是在策略路由中匹配失敗(拒絕),那么數據包將按正常方式轉發;
如果是用於路由再發布,並且匹配失敗(拒絕),那么路由將不會被再發布 如果數據包沒有找到任何匹配,和ACL一樣,route map末尾也有個默認的隱含拒絕所有的操作, 如果route map的陳述中沒有match語句,
那么默認的操作是匹配所有的數據包和路由;每個 route map還有一個序列號,序列號在沒有給出的情況下默認是10,序列號用於區分每一個route map statement,通過這個序列號參數你可以在一個route map的特定位置插入或刪除一條route map statement,
並且可以單獨的編輯它。一個route map可以包含多個route map statement,序列號參數決定了進行條件匹配的順序。只有序列號為10的語句沒有匹配,才會檢查序列號為20的語句才被檢查。
route map允許有多個match和set陳述,一個match語句可以包含多個條件。在匹配的時候,從上到下,如果匹配成功,將不再和后面的陳述進行匹配,指定操作將被執行。如果一個條件為真,則認為這個條件匹配;
然而,必須所有的條件都匹配,才認為這個route mapstatement匹配。Set可以定義當匹配語句滿足時,數據包如何通過路由器進行轉發
7.配置路由策略要注意:
配置一個路由圖,在同一個接口上多次配置路由圖會相互覆蓋。
在使用策略路由時,每個子路由圖建議只配置一個ACL;
如果配置的子路由圖中只有nexthop而沒有配置ACL,則等價於所有報文都匹配;
如果子路由圖中只有ACL而沒有nexthop則匹配的報文普通轉發;
如果子路由圖中即沒有ACL也沒有nexthop,則等價所有報文普通轉發。
如果配置了ACL號但是該ACL不存在,等價所有報文都匹配
8.實例
1)核心交換機上聯有2台防火牆,其中一台走互聯網,一台專門用於接IPSec。現要實現某一內網vlan使用單獨的一個公網IP。
由於走互聯網的防火牆不能實現,故使用另一台。此時,需在核心交換機上配置PBR。
1)定義訪問控制列表
access-list 2000 permit ip 10.11.50.0 0.0.0.255 any
access-list 2001 permit ip 10.11.50.0 0.0.0.255 10.11.0.0 0.0.255.255 #50段訪問內網
2)定義route-map
route-map 50duan permit 10
match ip address 2001
#允許50段訪問內網且不改變其nexthop
route-map 50duan permit 20
match ip address 2000
set ip next-hop 10.11.31.1
#50duan訪問其他網絡將使用10.11.31.1作為下一跳
3)應用到50段的網關
interface Vlan50
ip address 10.11.50.254 255.255.255.0
ip access-group 150 out
ip helper-address 10.11.103.11
ip helper-address 10.11.103.12
ip policy route-map 50duan