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中的策略控制