写在前面 路由标记其实就是路由的一个属性。有了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相同。