10.1
路由重分布
10.1.1
路由重分布原则
路由重分布的作用:可以使得多种
路由协议之间,多重厂商环境中进行
路由信息交换
Metrics
在做
路由重分布的时候要考虑到的一个问题是:
metric.比如把OSPF
路由重分布到EIGRP里,EIGRP和OSPF之间没有办法理解对方的metric,
因此在做
路由重分布之前,要分配一个对方可以理解的metric,
Administrative Distances
根据管理距离(AD)来判定多种协议学来的
路由.Cisco默认的几种
路由协议的AD如下:
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
如上把OSPF(源
路由协议)向IGRP(接受重分布的
路由协议)重分布,同时分配了该
路由的metric,
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
2种不同的配置其实是相同的效果, default-metric命令的优点是,当要重分布多种
路由协议的时候,可以同时指定这些经过重分布的
路由的metric
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间的重分布
注意
路由器Mantle还连接了个stub网络192.168.10.0/24,如果要求把这个网络宣告进IGRP
路由域,可以使用redistribute connected命令
10.1.3 EIGRP和OSPF间的重分布
在这个拓扑图中,
路由器Hodges运行OSPF进程1,
路由器Podres运行EIGRP进程1,,
路由器Snider和Campanella运行EIGRP进程2,
路由器Robinsion配置如下:
注意不同进程的EIGRP的重分布不需要分配metric,因为它们是同一种
路由协议,可以相互理解对方的metric 查看
路由器Podres的
路由表,如下:
为什么只有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
10.1.4
路由重分布及
路由汇总
Cisco的EIGRP,OSPF和IS-IS都可以对重分布的
路由进行
路由汇总. 可以在OSPF进程下使用summary-address指定汇总的地址和掩码,不过这个命令是用在ASBR上的,
ABR上的
路由汇总是使用area <area-id> range <address>命令,如下:
对于EIGRP的汇总,是基于接口的,使用命令ip summary-address eigrp {process-id},如下:
10.1.5 IS-IS和RIP间的
路由重分布
路由器Mays的配置如下:
参数internal为内部
路由的含义,默认为内部,并且为L1.
路由器Aaron的
路由表如下:
路由器Aaron所连的子网可以汇总为10.2.0.0/16,重分布到IS-IS里的
路由和OSPF一样,也是使用summary-address命令,但是还要额外的指定IS-IS的Level,如下:
10.2 默认
路由及ODR按需
路由
默认
路由(Default Route)最大的好处就是减少
路由表的条目,从而减小了
路由表体积,降低了对
路由器CPU资源的占用
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
ODR
路由得传输机制是Cisco发现协议 (CDP),
路由器上用cdp run启用,用cdp enable在特定的接口上启用
CDP运行在任何支持子网访问协议(SNAP)的介质上,即ODR也依赖SNAP的支持
在中心
路由器上用router odr启用
分支
路由器上配置一条指向中心
路由器的静态
路由就可以了
10.3
路由过滤
路由过滤可以通过下面2种方法实现:
1.使用distribute-list过滤特定
路由
2.使用distance命令来控制
路由的AD
路由过滤器的用途
:把一个
路由选择域分割成多个子域,在连接不同子域的
路由器上过滤 建立
路由防火墙
过滤器是基于访问列表的基础上用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)的数据包有影响
现在要求在
路由器Linus上使用策略
路由,来自网络172.16.6.0的数据包只被转发到
路由器Lucy上;而来自172.16.7.0的数据包只转发到
路由器Pigpen上.相应配置如下:
至于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
还可以根据数据包的大小来做策略
路由,在
路由器Schroeder上做如下配置:
对于
路由器自己所产生的流量,要对它们做策略
路由的话,使用ip local policy route-map,该命令是基于全局配置模式下的,如下,在
路由器Schroeder上的配置:
只有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即可.拓扑图如下:
现在要求只相互再发布第三个8位位组为奇数的
路由,在
路由器Zippy上做如下配置:
其中permit 20没有match命令,因此默认匹配所有地址 上个例子使用distribution-list做简单的
路由过滤也可达到相同效果,但是route map还可以有更高级的功能,如下配置:
如上就是使用route map来控制再分布的OSPF外部
路由类型和IS-IS
路由Level 关于Route-map的更多应用参见后文BGP中的策略控制
本文出自 51CTO.COM技术博客
|