10.1 路由重分布
10.1.1 路由重分布原则
Metrics
在做路由重分布的时候要考虑到的一个问题是:
metric.比如把OSPF路由重分布到EIGRP里,EIGRP和OSPF之间没有办法理解对方的metric,
因此在做路由重分布之前,要分配一个对方可以理解的metric,
Administrative Distances
1.直连接口:0
2.静态路由:1(有个例外,使用接口来代替下1跳地址的时候它会被认为是直连接口)
3.EIGRP汇总路由:5
4.External(外部) BGP:20
5.EIGRP:90
6.IGRP:100
7.OSPF:110
8.IS-IS:115
9.RIP:120
10.EGP:140
11.External(外部) EIGRP:170
12.Internal(内部) BGP:200
13.未知:255
Redistributing from Classless to Classful Protocols
OSPF是基于无类的路由协议,将IGRP重分布到OSPF以后,路由器Paige它可以知道OSPF路由域和IGRP路由域的所有子网信息;而路由器Leonard只能学习到OSPF中掩码为/24的子网,因为IGRP是基于类的路由协议
10.1.2 配置路由重分布
路由器Paige的IGRP配置如下:
Paige(config)#router igrp 1
Paige(config-router)#redistribute ospf 1 metric 10000 100 255 1 1500
Paige(config-router)#passive-interface Ethernet1
Paige(config-router)#network 172.20.0.0
10000:带宽 100:延迟 255:可靠性 1:负载 1500:MTU
路由器Paige的OSPF配置如下:
Paige(config)#router ospf 1
Paige(config-router)#redistribute igrp 1 metric 30 metric-type 1 subnets
Paige(config-router)#network 172.20.112.2 0.0.0.0 area 0
如上是把IGRP重分布到OSPF中去,指定metric为30(OSPF的metric标准为cost),经过重分布以后,路由器Paige就成为了ASBR,经过重分布的IGRP路由是作为外部路由宣告进OSPF路由域的,同时使用metric-type命令指定外部路由类型为E1.subnets参数只在把路由重分布到OSPF中使用,它指明经过重分布后的子网的细节信息
另一种分配metric的方法是使用default-metric命令,比如刚才才把IGRP重分布到OSPF里的配置也可以写成下面的形式:
Paige(config)#router ospf 1
Paige(config-router)#redistribute igrp 1 metric-type 1 subnets
Paige(config-router)#default-metric 30
Paige(config-router)#network 172.20.112.2 0.0.0.0 area 0
Paige(config)#router ospf 1
Paige(config-router)#redistribute igrp 1 metric-type 1 subnets
Paige(config-router)#redistribute rip metric-type 1 subnets
Paige(config-router)#redistribute eigrp 2 metric-type 1 subnets
Paige(config-router)#default-metric 30
Paige(config-router)#network 172.20.112.2 0.0.0.0 area 0
这里使用default-metric 30同时指定了重分布到OSPF里的RIP,IGRP和EIGRP路由的metric都为30 不过这2种分配metric的命令可以结合在一起使用,如下:
Paige(config)#router igrp 1
Paige(config-router)#redistribute ospf 1
Paige(config-router)#redistribute rip metric 50000 500 255 1 1500
Paige(config-router)#redistribute eigrp 2
Paige(config-router)#default-metric 10000 100 255 1 1500
Paige(config-router)#passive-interface Ethernet1
Paige(config-router)#network 172.20.0.0
如果metric和default-metric命令没有指定具体的参数,重分布到OSPF里的路由默认的metric为20,而其他的路由协议为0.metric为0不能被RIP正确理解,并且与IGRP和EIGRP不兼容,IS-IS可以正确理解
10.1.3 IGRP和RIP间的重分布
10.1.3 EIGRP和OSPF间的重分布
为什么只有1条为指向192.168.2.0/24的E2外部OSPF路由?答案是把其他类型的路由重分布到OSPF里的时候没有使用参数subnets,因此将把没有连接到做路由重分布的路由器(Robinson)的主网络地址(192.168.2.0/24)做重分布.使用subnets参数
router ospf 1
redistribute eigrp 1 metric 50 subnets
redistribute eigrp 2 metric 100 subnets
network 192.168.3.33 0.0.0.0 area 0
如上,所有子网都能被路由器Hodges学习到 另外,OSPF外部路由类型默认为E2,如果要把上面的OSPF外部路由类型更改为E1,可以在重分布外部路由到OSPF中的时候使用命令metric-type 1,如下:
Robinson(config)#router ospf 1
Robinson(config-router)#redistribute eigrp 1 metric 50 subnets
Robinson(config-router)#redistribute eigrp 2 metric 100 metric-type 1 subnets
Robinson(config-router)#network 192.168.3.33 0.0.0.0 area 0
ABR上的路由汇总是使用area <area-id> range <address>命令,如下:
对于EIGRP的汇总,是基于接口的,使用命令ip summary-address eigrp {process-id},如下:
10.1.5 IS-IS和RIP间的路由重分布
路由器Mays的配置如下:
ODR(On-Demand Routing,按需路由)是从Cisco IOS版本11.2出现的,它为Cisco所私有,并且不是真正意义上路由协议.它依赖于Cisco发现协议(CDP,Cisco Discovery Protocol)
标记为o的代表ODR,它的管理距离为160,并且metric永远不会超过1
10.2.1 配置静态默认路由
Memphis(config)#ip classless
Memphis(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.82
Memphis(config)#ip classless Memphis(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.82
10.2.2 default-network配置默认路由
另一种配置默认路由的方法是使用ip default-network命令.
路由器Athens配置如下:
可以看到10.0.0.0被标记为侯选的默认路由,但是没有指定默认网关,原因是路由器Athens就是到这个默认网络的网关,即使在配置RIP的时候不声明network 10.0.0.0,ip default-network命令会使得路由器Athens宣告一个默认网络
对于IGRP和EIGRP的默认路由稍微有些不同,它们不能理解0.0.0.0,所以通常会宣告一个真实的地址作为外部路由,然后这个外部路由会被IGRP和EIGRP理解成默认路由 如果路由器Athens运行的是IGRP,如下:
router igrp 1
network 10.0.0.0
network 172.16.0.0
!
ip classless
ip default-network 10.0.0.0
注意和配置RIP不同的是,在配置IGRP的时候增加了network 10.0.0.0语句
10.2.3 Default-information originate配置默认路由
可以看到路由器Athens上设置的有默认路由,可路由器Sparta上却没有,这时就要用到default-information originate命令,告诉该OSPF路由器成为1个ASBR(默认路由以类型5的LSA被宣告进OSPF路由域中),并指定metric和OSPF外部路由类型,如下:
10.2.4 配置ODR按需路由
ODR的启用只需输入命令router odr无需指明网络和其他参数.
ODR传送地址前缀,而不是整个地址,因此路由器必须支持VLSM
ODR可以被重分布到其他路由协议
ODR的管理距离为160,度量永远都不会超过1
CDP运行在任何支持子网访问协议(SNAP)的介质上,即ODR也依赖SNAP的支持
在中心路由器上用router odr启用
10.3 路由过滤
路由过滤可以通过下面2种方法实现:
1.使用distribute-list过滤特定路由
过滤器是基于访问列表的基础上用distribute-list acl-no in/out 接口/路由协议
NO.是被应用的访问列表编号
在“路由协议”关键字中,仅有out是有意义的
由于链路状态协议不从自身路由表中通告路由,所以在“接口”关键字中用out是没有意义的,要过滤什么进程,就把过滤器放在什么进程下例:在OSPF 1下过滤RIP,则在OSPF进程下用distribute-list 10 in rip
在OSPF 1下过滤OSPF 1,这在OSPF进程中用distribute-list 10 in
要在一个本来运行一种路由协议的网络中运用另一种路由协议时,为了防止出错和路由黑洞,如果新协议的管理距离小于旧协议,在新路由进程中用distance增大新协议的管理距离,等到网络中的每个路由器上新协议都配置好后再改回去,再删除旧协议,最后用clear ip route * 清空路由表,让其重新学习
在路由进程中用distance AD IP-addr wildcat-mask acl-NO.
10.4 Route-Map
route map和ACL很类似,它可以用于路由的重分布和策略路由,还经常使用在BGP中.策略路由(policy route)实际上是复杂的静态路由,静态路由是基于数据包的目标地址并转发到指定的下一跳路由器,策略路由还利用和扩展IP ACL链接,这样就可以提供更多功能的过滤和分类
route map的一些命令:
match命令可以和路由的重分布结合使用:
1.match interface {type number} […type number]:匹配指定的下一跳路由器的接口的路由
2.match ip address {ACL number|name} […ACL number|name]:匹配ACL所指定的目标IP地址的路由 3.match ip next-hop {ACL number|name} […ACL number|name]:匹配ACL所指定的下一跳路由器地址的路由 4.match ip route-source {ACL number|name} […ACL number|name]:匹配ACL所指定的路由器所宣告的路由 5.match metric {metric-value}:匹配指定metric大小的路由 6.match route-type {internal|external[type-1|type-2]|level-1|level-2}:匹配指定的OSPF,EIGRP或IS-IS的路由类型的路由 7.match tag {tag-value} […tag-value]:匹配带有标签(tag)的路由 set命令也可以和路由的重分布一起使用:
1.set level {level-1|level-2|level-1-2|stub-area|backbone}:设置IS-IS的Level,或OSPF的区域,匹配成功的路由将 被重分布到该区域 2.set metric {metric-value|bandwidth delay RELY load MTU}:为匹配成功的路由设置metric大小 3.set metric-type {internal|external|type-1|type-2}:为匹配成功的路由设置metric的类型,该路由将被重分布到OSPF或IS-IS
4.set next-hop {next-hop}:为匹配成功的路由指定下一跳地址5.set tag {tag-value}:为匹配成功的路由设置标签 match命令还可以和策略路由一起使用:
1.match ip address {ACL number|name} [„ACL number|name]:匹配ACL所指定的数据包的特征的路由 2.match length {min} {max}:匹配层3的数据包的长度 set命令也可以和策略路由一起使用: 1.set default interface {type number} [„type number]:当不存在指向目标网络的显式路由(explicit route)的时候,为匹配成功的数据包设置出口接口 2.set interface {type number} [„type number]:当存在指向目标网络的显式路由的时候,为匹配成功的数据包设置出口接口 3.set ip default next-hop {ip-address} [„ip-address]:当不存在指向目标网络的显式路由的时候,为匹配成功的数据包设置下一跳路由器地址 4.set ip precedence {precedence}:为匹配成功的IP数据包设置服务类型(Type of Service,ToS)的优先级 5.set ip tos {tos}:为匹配成功的数据包设置服务类型的字段的TOS位
10.4.1 配置Route-map
route map是通过名字来标识的,每个route map都包含许可或拒绝操作以及一个序列号,序列号在没有给出的情况下默认是10,并且route map允许有多个陈述,如下:
尽管先输入的是20,后输入的是15,IOS将把15放在20之前.还可以允许删除个别陈述,如下:
Linus(config)#no route-map Hagar 15
在删除的时候要特别小心,假如你输入了no route-map Hegar而没有指定序列号,那么整个route map将被删除.并且如果在添加match和set语句的时候没有指定序列号的话,那么它们仅仅会修改陈述10.在匹配的时候,从上到下,如果匹配成功, 将不再和后面的陈述进行匹配,指定操作将被执行
关于拒绝操作,是依赖于route map是使用再路由的再发布中还是策略路由中,如果是在策略路由中匹配失败(拒绝),那么数据包将按正常方式转发;如果是用于路由再发布,并且匹配失败(拒绝),那么路由将不会被再发布
如 果数据包没有找到任何匹配,和ACL一样,route map末尾也有个默认的隐含拒绝所有的操作,如果是在策略路由中匹配失败(拒绝),那么数据包将按正常方式转发;如果是用于路由再发布,并且匹配失败(拒绝),那么路由将不会被再发布
如果route map的陈述中没有match语句,那么默认的操作是匹配所有的数据包和路由;
每个route map的陈述可能有多个match和set语句,如下:
! route-map Garfield permit 10
match ip route-source 15
match interface Serial0
set metric-type type-1
set next-hop 10.1.2.3
!
在这里,为了执行set语句,每个match语句中都必须进行匹配
10.4.2 路由策略
使用ip policy route-map命令定义策略路由,这个命令是基于接口的,并且只对进站(incoming)的数据包有影响
至于172.16.8.0的数据包将按正常方式被转发,并做负载均衡 再假设策略规定从172.16.1.0的服务器上发出的FTP和Telnet流量分别转发到Lucy和Pigpen上, 在路由器Schroeder上做如下配置:
interface Ethernet0
ip address 172.16.1.4 255.255.255.0
ip policy route-map Rerun
!
access-list 105 permit tcp 172.16.1.0 0.0.0.255 eq ftp any
access-list 105 permit tcp 172.16.1.0 0.0.0.255 eq ftp-data any
access-list 106 permit tcp 172.16.1.0 0.0.0.255 eq telnet any
!
route-map Rerun permit 10
match ip address 105
set ip next-hop 172.16.2.1
!
route-map Rerun permit 20
match ip address 106
set ip next-hop 172.16.3.1
只有match语句没有set语句,如果没有permit 10,那么OSPF Hello包会和permit 30匹配并被转发到路由器Pigpen上,这将切断路由器Lucy和Schroeder之前的邻接关系;如果匹配permit 10,OSPF Hello包将被正常转发,不影响邻接关系
10.4.3 在重分布中使用Route-map
在路由的再发布中使用route map,只需要在使用redistribute的时候调用相应的route map即可.拓扑图如下:
其中permit 20没有match命令,因此默认匹配所有地址 上个例子使用distribution-list做简单的路由过滤也可达到相同效果,但是route map还可以有更高级的功能,如下配置:
|