0%

路由标记

写在前面

路由标记其实就是路由的一个属性。有了tag属性,可以对具有相同tag属性的一组路由进行操作(过滤、修改路由类型,修改metric值等)。BGP中有个非常类似的属性:community属性。
一般情况下内部路由不打标记,外部路由打标记。

ospf打标记

ospf将外部路由重分布进ospf时支持直接打标机(也可以使用路由策略route-map)。拓扑图如下:


R1,R2的eth0上运行ospf,R2上创建lp0接口,将lp0重分布到ospf中,并打上标记,使R1学到。配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
R1
interface Ethernet0/0
ip address 12.1.1.1 255.255.255.0
ip ospf 110 area 0

router ospf 110

R2
!
interface Loopback0
ip address 2.2.2.2 255.255.255.255
!
interface Ethernet0/0
ip address 12.1.1.12 255.255.255.0
ip ospf 110 area 0
!
router ospf 110
redistribute connected subnets tag 12 // 重分布直连路由进ospf,并打上tag:12

在R1上查看2.2.2.2的ospf database信息:

1
2
3
4
5
R1#show ip ospf database                  
Type-5 AS External Link States

Link ID ADV Router Age Seq# Checksum Tag
2.2.2.2 12.1.1.12 609 0x80000002 0x009ED2 12

发现已经打上tag:12的标记。之后就可以创建route-map,match这个tag,之后就可以set各种操作。

此外,还可以通过route-map来打tag.

1
2
3
R2(config)#route-map tag permit 10           // 创建一个route-map,名字叫tag
R2(config-route-map)#set tag 20 // 动作时设置tag20
R2(config-router)#redistribute connected route-map tag // 重分布时使能该route-map

在R1上查看ospf的database信息:

1
2
3
4
5
R1#show ip ospf database 
Type-5 AS External Link States

Link ID ADV Router Age Seq# Checksum Tag
2.2.2.2 12.1.1.12 4 0x80000001 0x003139 20

ospf和eigrp都支持tag,两者在重分布时会携带tag到对方的路由域。

eigrp打标记

eigrp中不能直接打tag,只能通过route-map方式打标记。命令和ospf一样。eigrp上查看标记:

1
2
3
R1#show ip eigrp topology 
P 2.2.2.2/32, 1 successors, FD is 409600, tag is 20 // tag是上面route-map定义的
via 12.1.1.12 (409600/128256), Ethernet0/0

eigrp在命名模式下可以给内部路由打标记,

1
2
3
4
5
6
R2(config-router)#eigrp upgrade-cli rancho              // 可以直接从经典模式升级到命名模式,好处是邻居状态不会发生变化
R2(config-router)#address-family ipv4 autonomous-system 90
R2(config-router-af)#eigrp default-route-tag 45

R2(config-router-af)#eigrp default-route-tag 10.10.10.10 // 如果是使用点分十进制打tag,那么对端显示的是十进制数字
R1(config)#route-tag notation dotted-decimal // 需要修改route tag的显示方式

tag结合distribute-list过滤路由

在R1上创建route-map,匹配R2上打的tag,分发列表中调用该route-map

1
2
3
4
5
6
7
8
9
10
11
R1(config)#route-map deny-tag deny 10           // 创建route-map
R1(config-route-map)#match tag 20 // 匹配tag 20
R1(config)#router eigrp 90
R1(config-router)#distribute-list route-map deny-tag in //使能分发列表

R1(config)#route-map deny-tag permit 20 // 创建deny-tag的permit语句,否则分发列表会隐式过滤所有路由

R2(config)#interface loopback 1
R2(config-if)#ip address 3.3.3.3 255.255.255.255
R2(config)#router eigrp 90
R2(config-router)#network 3.3.3.3

查看R1上路由表:

1
2
3
4
5
6
7
R1#show ip route          
3.0.0.0/32 is subnetted, 1 subnets
D 3.3.3.3 [90/409600] via 12.1.1.12, 00:00:06, Ethernet0/0
12.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C 12.1.1.0/24 is directly connected, Ethernet0/0
L 12.1.1.1/32 is directly connected, Ethernet0/0

可以看到2.2.2.2的路由已经被过滤了,没有路由tag的3.3.3.3可以正常看到。

rip打tag

rip只能在version2上打标记,方法和eigrp相同。