本文件說明如何設定使用動態路由通訊協定的 redistribute 命令所套用的路由對應。
思科建議您瞭解以下主題:
雖然路由對映支援最初是在Cisco IOS軟體中引入的,但route-map命令仍然有效,並且在Cisco IOS XE中廣泛使用。常規路由對映概念(如有序序列評估、permit和deny子句、match語句和設定操作)也適用於Cisco IOS XE。命令語法和功能支援因平台、軟體版本、路由協定和地址系列而異。在一個重分發上下文中支援的某些match和set命令可能不受支援,或在另一個上下文中行為不同。部署前,請始終根據目標版本和平台文檔驗證確切的命令語法。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
本節概述在Cisco IOS軟體中使用的路由對應。
路由對映和存取控制清單(ACL)有一些共同的行為。兩者都是策略機制,用於按定義的順序評估條目並返回permit或deny結果。
常見特徵包括:
有序評估:
ACL和路由對映按順序處理,從最低序列號到最高序列號。當找到第一個匹配條目,並且應用與該條目關聯的操作時,評估將停止。
允許和拒絕邏輯:
ACL和路由對映都使用permit和deny語句。但是,permit和deny的含義取決於ACL或路由對映的應用方式。例如,用於重分配的路由對映的效果與用於基於策略的路由(PBR)或BGP策略的路由對映的效果不同。
上下文相關行為:
ACL和路由對映是通用策略工具。它們的行為取決於參照它們的特徵。當用於重分發、BGP路由策略、PBR或其他功能時,相同的路由對映可能具有不同的效果。
路由對映和ACL也有重要區別:
ACL提供基本的允許或拒絕匹配:
ACL主要返回yes或no結果。在路由重分發環境中,ACL或字首清單可用作匹配標準,以確定哪些路由適合重分發。
路由對映可以匹配和修改路由資訊:
路由對映可以引用ACL、字首清單或其他匹配條件。除了允許或拒絕路由之外,路由對映還可以使用set命令修改支援的路由屬性。例如,重分發過程中使用的路由對映可以設定路由度量、標籤、度量型別或其他支援的屬性,具體取決於源路由協定和目標路由協定。
路由對映支援更高級的匹配條件:
路由對映可以匹配ACL無法直接評估的路由屬性。例如,如果在重分發上下文中支援匹配條件,則路由對映可以匹配路由型別、路由標籤、度量、下一跳、路由源或其他特定於協定的屬性。
策略結束行為取決於應用程式:
ACL的結尾包含隱含的deny。路由對映的行為也取決於如何使用路由對映。對於重分發,如果路由與任何route-map子句都不匹配,則不會重分發路由。此函式類似於路由對映末尾的隱式deny。
空的route-map子句有特殊意義:
不帶match語句的route-map子句匹配到達該子句的所有剩餘路由。在重分發中,空的permit子句允許重分發所有剩餘路由,而空的deny子句阻止重分發所有剩餘路由。
動態路由協定redistribute命令通常支援使用路由對映來控制重分發哪些路由以及在重分發過程中如何修改路由屬性。當需要根據字首或掩碼進行過濾時,請配置ACL或字首清單,並使用match語句從路由對映中引用它。
當必須修改路由資訊(如度量、標籤、度量型別或其他支援的屬性),或者必須匹配簡單字首或掩碼選擇之外的功能時,請在重分發過程中使用路由對映。對於基於字首的簡單過濾,仍可使用ACL或字首清單,但通常在應用於redistribute命令的路由對映中引用它。
在重分發中,在將路由對映資訊注入目標路由進程之前,該路由對映應用於從源路由進程選擇的路由資訊。它不會直接應用於入站或出站資料包流量。其效果僅限於控制和修改重分發的路由。
這是到增強型內部閘道路由通訊協定(EIGRP)的典型開放最短路徑優先(OSPF)路由映像,已使用redistribute命令套用:
!
router eigrp 1
default-metric 20000 2000 255 1 1500
redistribute ospf 1 route-map ospf-to-eigrp
!
!
ip prefix-list pfx seq 5 permit 10.0.0.0/8 le 32
!
route-map ospf-to-eigrp deny 10
match tag 6
match route-type external type-2
!
route-map ospf-to-eigrp permit 20
match ip address prefix-list pfx
set metric 40000 1000 255 1 1500
!
route-map ospf-to-eigrp permit 30
set tag 8
!
重要意見:
對路由對映子句進行編號。在本例中,子句的序列號為10、20和30。序列號允許您:
如果需要,思科建議以10為間隔對子句編號,以保留序列號以供將來更改。
路由對映可以包含permit和deny子句。在route-map ospf-to-eigrp中,有一個序列號為10的deny子句,還有兩個序列號為20和30的permit子句。 deny子句拒絕來自重分配的匹配路由。因此,以下規則適用:
每個route-map子句可包含兩種型別的命令:
對於每個重分發的路由,路由器首先在route-map子句中評估match命令。如果匹配條件成功,則根據permit或deny子句的要求重新分發或拒絕路由。如果允許路由,則其屬性可通過set命令修改。如果匹配條件失敗,則此子句不適用於路由,Cisco IOS軟體將根據路由對映中的下一個子句評估路由。路由對映掃描會一直持續,直到找到其match命令與路由匹配的子句,或者直到到達路由對映的末尾。
match或set命令可以在每個子句中省略或重複,需要注意以下事項:
請勿在deny route-map子句中配置set命令,因為deny子句會阻止路由重分發。沒有要修改的重分發路由資訊。
沒有match或set命令的route-map子句仍會執行操作。空的permit子句允許在不修改的情況下重新分發其餘路由。空的deny子句可防止對剩餘路由進行重分發。如果路由對映已完全掃描並且找不到顯式匹配,則這也是預設行為。
根據本節中的資訊,前面的OSPF到EIGRP路由對映示例執行以下操作:
在本示例中,拓撲由三個以線性方式連線的路由器組成:R3 ↔ R1 ↔ R2。路由器R1充當R3和R2之間的重分發路由器,而R3和R2之間沒有直接連線。每台路由器都使用GigabitEthernet介面連線,在相鄰裝置之間提供高速點對點連線。
R3#show ip route 10.20.20.20
Routing entry for 10.20.20.20/32
Known via "eigrp 1", distance 170, metric 320256, precedence routine (0), type external
Redistributing via eigrp 1
Last update from 192.168.1.1 on GigabitEthernet1, 00:01:02 ago
Routing Descriptor Blocks:
* 192.168.1.1, from 192.168.1.1, 00:01:02 ago, via GigabitEthernet1
Route metric is 320256, traffic share count is 1
Total delay is 10010 microseconds, minimum bandwidth is 40000 Kbit Reliability 255/255, minimum MTU 1500 bytes Loading 1/255, Hops 1
R3#show ip route 172.16.1.0
Routing entry for 172.16.1.0/24
Known via "eigrp 1", distance 170, metric 640256
Tag 8, precedence routine (0), type external
Redistributing via eigrp 1
Last update from 192.168.1.1 on GigabitEthernet1, 00:01:56 ago
Routing Descriptor Blocks:
* 192.168.1.1, from 192.168.1.1, 00:01:56 ago, via GigabitEthernet1
Route metric is 640256, traffic share count is 1
Total delay is 20010 microseconds, minimum bandwidth is 20000 Kbit Reliability 255/255, minimum MTU 1500 bytes Loading 1/255, Hops 1 Route tag 8
R3#
在R3上運行show ip route <prefix>命令,以確認路由對映如何處理每個重新分發的路由。路由10.20.20.20/32與路由對映序列20匹配,因為pfx字首清單允許該序列。因此,使用set metric 40000 1000 255 1 1500 命令在序列20下顯式配置的度量,將路由重分發到EIGRP。
這些特性反映在路由輸出中:
此外,路由172.16.1.0/24與序列10或序列20不匹配,因此它到達路由對映序列30。由於序列30沒有match語句,因此它匹配所有剩餘路由並應用路由輸出中反映的set tag 8:
這些輸出確認路由對映按以下順序處理路由:序列20將顯式EIGRP度量應用於字首清單匹配的字首,而序列30允許其餘重分發路由並用標籤8對其進行標籤。
儘管R3、R1和R2之間的物理鏈路是具有DLY 10 usec的GigabitEthernet介面,但重分發的EIGRP路由也帶有重分發過程中配置的種子延遲。在set metric和default-metric命令中,EIGRP延遲值以十微秒為單位輸入。因此,配置的延遲1000變成10000微秒,配置的延遲2000變成20000微秒。當R3從R1獲知路由時,會增加本地GigabitEthernet介面延遲10微秒,這會導致總延遲分別為10010微秒和20010微秒。
本節包括以下主題:
路由對映是可用於許多配置上下文的通用機制,包括前面描述的redistribute命令。您可以在用於基於策略的路由(PBR)的路由對映中配置並運行match length命令,以指定轉發特定長度的資料包時執行的特定操作。但是,match length命令不適用於用於路由重分配的路由對映。
您可以在路由對映中配置並運行match和set命令,這些命令不受支援,或者對應用路由對映的上下文沒有影響。例如,在應用於重分發的路由對映中運行match length命令。在重分發中,路由對映通過redistribute命令中指定的源協定應用於路由表中安裝的路由。因此,當路由器處理路由對映時,它只解釋在重分發上下文中有意義的命令。在本例中, match length命令對重分發沒有影響。該命令仍保留在路由對映配置中並顯示在運行配置中,但是,路由重分佈不受該命令是否存在的影響。
雖然路由器允許在route-map下配置不同型別的match和set命令,但這些命令必須適用於使用route-map的功能或協定上下文。否則,配置可能會令人困惑或產生意想不到的結果。
不要使用在特定路由對映上下文中沒有效果的命令,即使這些命令看起來無害,原因如下:
注意:set metric +<value>和set metric -<value>語法並非所有路由協定都支援。在不支援+或 — 形式的平台或協定上,可以忽略符號,並將命令解釋為set metric <value>。這可能會導致在重分發過程中分配意外的度量,從而可能會影響路由選擇和網路流量。在使用增量或遞減度量語法之前,請始終驗證平台和協定支援。
附註:請參閱EIGRP路由對映支援以瞭解更多資訊。
例如,請考慮以下路由對映:
! route-map ospf-to-ospf permit 10 set metric +2 !
此配置似乎將所有路由從一個OSPF進程重新分發到另一個,同時將所有路由的度量增加兩個。它將所有路由的度量設定為相同,等於2。這在路由器配置中是意外的。
R2#show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, m - OMP
n - NAT, Ni - NAT inside, No - NAT outside, Nd - NAT DIA
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
H - NHRP, G - NHRP registered, g - NHRP registration summary
o - ODR, P - periodic downloaded static route, l - LISP
a - application route
+ - replicated route, % - next hop override, p - overrides from PfR
& - replicated local route overrides by connected
Gateway of last resort is not set
10.0.0.0/32 is subnetted, 2 subnets
C 10.20.20.20 is directly connected, Loopback0
O E2 10.30.30.30 [110/2] via 172.16.1.1, 00:00:26, GigabitEthernet1
172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
C 172.16.1.0/24 is directly connected, GigabitEthernet1
L 172.16.1.2/32 is directly connected, GigabitEthernet1
O E2 192.168.1.0/24 [110/2] via 172.16.1.1, 00:00:26, GigabitEthernet1
R2#show ip route 10.30.30.30
Routing entry for 10.30.30.30/32
Known via "ospf 1", distance 110, metric 2, type extern 2, forward metric 1
Last update from 172.16.1.1 on GigabitEthernet1, 00:00:38 ago
Routing Descriptor Blocks:
* 172.16.1.1, from 192.168.1.1, 00:00:38 ago, via GigabitEthernet1
Route metric is 2, traffic share count is 1
R2#show ip route 192.168.1.0
Routing entry for 192.168.1.0/24
Known via "ospf 1", distance 110, metric 2, type extern 2, forward metric 1
Last update from 172.16.1.1 on GigabitEthernet1, 00:01:34 ago
Routing Descriptor Blocks:
* 172.16.1.1, from 192.168.1.1, 00:01:34 ago, via GigabitEthernet1
Route metric is 2, traffic share count is 1
此路由對映提供有違直覺的效果:
!
route-map ospf-to-ospf permit 10
set metric -367
!
此配置不是減少重分發路由的度量,而是將度量實際設定為367(正值,因為當不使用符號解釋設定的度量時,不可能使用負度量)。
R2#show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, m - OMP
n - NAT, Ni - NAT inside, No - NAT outside, Nd - NAT DIA
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
H - NHRP, G - NHRP registered, g - NHRP registration summary
o - ODR, P - periodic downloaded static route, l - LISP
a - application route
+ - replicated route, % - next hop override, p - overrides from PfR
& - replicated local route overrides by connected
Gateway of last resort is not set
10.0.0.0/32 is subnetted, 2 subnets
C 10.20.20.20 is directly connected, Loopback0
O E2 10.30.30.30 [110/367] via 172.16.1.1, 00:00:06, GigabitEthernet1
172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
C 172.16.1.0/24 is directly connected, GigabitEthernet1
L 172.16.1.2/32 is directly connected, GigabitEthernet1
O E2 192.168.1.0/24 [110/367] via 172.16.1.1, 00:00:06, GigabitEthernet1
R2#show ip route 10.30.30.30
Routing entry for 10.30.30.30/32
Known via "ospf 1", distance 110, metric 367, type extern 2, forward metric 1
Last update from 172.16.1.1 on GigabitEthernet1, 00:00:17 ago
Routing Descriptor Blocks:
* 172.16.1.1, from 192.168.1.1, 00:00:17 ago, via GigabitEthernet1
Route metric is 367, traffic share count is 1
R2#show ip route 192.168.1.0
Routing entry for 192.168.1.0/24
Known via "ospf 1", distance 110, metric 367, type extern 2, forward metric 1
Last update from 172.16.1.1 on GigabitEthernet1, 00:00:31 ago
Routing Descriptor Blocks:
* 172.16.1.1, from 192.168.1.1, 00:00:31 ago, via GigabitEthernet1
Route metric is 367, traffic share count is 1
應用於重分發的路由對映使用兩種路由協定:
每個路由協定都支援自己的一組路由屬性。因此,會根據不同的協定評估重分發路由對映中的match和set命令:
命令支援表部分列出了支援的命令。這些命令分類為match和set命令,以顯示重分發路由對映在源路由協定和目標路由協定中的運行方式。
本節介紹redistribute命令中附加的路由對映支援的命令。有七種路由協定可以重分發路由;然而,只有五個地方發生了再分配。相連路由和靜態路由不是動態路由協定,只能提供要重分發到其他協定中的資訊。
中間系統到中間系統(IS-IS)和BGP可以傳播有關無連線網路服務(CLNS)路由的資訊以及IP路由。為了更加全面,本節中的表還提到與CLNS相關的命令,這些命令可用於這些協定的重分發路由對映。
可以使用路由資訊協定(RIP)、OSPF、IS-IS和BGP傳播IPv6路由;這些協定的重分發路由對映可以包含IPv6特定的命令。match ip和set ip命令專門用於重新分配IPv4字首。match ipv6 和set ipv6 命令專門用於重分發IPv6字首。僅當使用路由對映向路由協定或從路由協定重分發CLNS路由時,才能使用match clns和set clns命令。
表1和表2使用以下約定:
支援的命令標籤為Yes。
不支援的命令標有破折號(—)。
已知用於執行操作的不受支援的命令(可能是不受歡迎的操作)標籤為No。
表1 — 用於匹配按協定安裝到路由表中的路由的路由對映命令
| 指令 |
重分發支援 |
||||||
| 已連線 |
靜態 |
RIP |
EIGRP |
OSPF |
IS-IS |
BGP |
|
| match clns address |
— |
是 |
— |
— |
— |
是 |
是 |
| match clns next-hop |
— |
是 |
— |
— |
— |
是 |
— |
| match interface |
是 |
是 |
是 |
是 |
是 |
是 |
— |
| match ip address |
是 |
是 |
是 |
是 |
是 |
是 |
是 |
| match ip address prefix-list |
是 |
是 |
是 |
是 |
是 |
是 |
是 |
| match ip next-hop |
— |
是 |
是 |
是 |
是 |
是 |
是 |
| match ip next-hop prefix-list |
— |
否 |
否 |
否 |
否 |
否 |
否 |
| match ip route-source |
— |
— |
是 |
是 |
是 |
— |
是 |
| match ip route-source prefix-list |
— |
— |
否 |
否 |
否 |
— |
否 |
| match ipv6 address [prefix-list] |
是 |
是 |
是 |
— |
是 |
是 |
是 |
| match ipv6 next-hop [prefix-list] |
— |
是 |
是 |
— |
— |
— |
是 |
| match ipv6 route-source [prefix-list] |
— |
— |
是 |
— |
— |
— |
是 |
| 匹配度量 |
— |
— |
是 |
是 |
是 |
是 |
是 |
| match policy-list |
是 |
是 |
是 |
是 |
是 |
是 |
是 |
| match route-type external |
— |
— |
— |
是 |
是 |
是 |
是 |
| match route-type inside |
— |
— |
— |
是 |
是 |
— |
是 |
| match route-type local |
— |
— |
— |
— |
— |
— |
是 |
| match route-type nssa-external |
— |
— |
— |
— |
是 |
— |
— |
| match route-type {level-1|level-2} |
— |
— |
— |
— |
— |
是 |
— |
| match標籤 |
— |
是 |
是 |
是 |
是 |
是 |
是 |
表2 — 在將路由屬性重新分發到目標協定期間修改路由屬性的命令
| 指令 |
重分發支援 |
||||
| RIP |
EIGRP |
OSPF |
IS-IS |
BGP |
|
| set as-path tag |
— |
— |
— |
— |
是 |
| set community |
— |
— |
— |
— |
是 |
| set ip next-hop |
— |
— |
— |
— |
是 |
| set ip next-hop peer-address |
— |
— |
— |
— |
否 |
| set ipv6 next-hop |
— |
— |
— |
— |
是 |
| set level {backbone|stub-area} |
— |
— |
否 |
— |
— |
| set level {level-1|level-2|level-1-2} |
— |
— |
— |
是 |
— |
| set local-preference |
— |
— |
— |
— |
是 |
| set metric |
是 |
— |
是 |
是 |
是 |
| set metric +/- |
否 |
— |
否 |
否 |
否 |
| set metric eigrp-metric |
— |
是 |
— |
— |
— |
| set metric +/- eigrp-metric |
— |
否 |
— |
— |
— |
| set metric-type internal |
— |
— |
— |
是 |
— |
| set metric-type external |
— |
— |
— |
是 |
— |
| set metric-type {type-1|type-2} |
— |
— |
是 |
— |
— |
| set nlri |
— |
— |
— |
— |
是 |
| set origin |
— |
— |
— |
— |
是 |
| set tag |
是 |
是 |
是 |
— |
— |
| set weight |
— |
— |
— |
— |
是 |
路由對映是控制路由重分配的強大而靈活的工具。它們提供精細的控制來控制重分佈期間路由協定之間交換路由資訊的方式。實施相互重分發時,使用路由標籤和顯式過濾策略來防止重分發的路由重新引入到其源路由協定中。否則可能會導致路由環路、流量黑洞或次優轉發路徑。由於多個路由協定之間的重分發會顯著增加路由複雜性,因此必須在部署高級重分發策略之前仔細設計、實施和驗證網路。
| 修訂 | 發佈日期 | 意見 |
|---|---|---|
4.0 |
29-Jul-2026
|
已更新標題、拼寫、語法、插入水平線以分隔各節/可讀性。 |
3.0 |
27-Nov-2023
|
重新認證 |
2.0 |
10-Nov-2022
|
已更新格式並重新認證。 |
1.0 |
25-Feb-2004
|
初始版本 |