- 论坛徽章:
- 0
|
一、静态路由的基本配置
ip route [destination_network] [mask] [next-hop_address or exitinterface]
[administrative_distance] [permanent] 静态路由的语法
二、案例研究:简单IPv4静态路由
1、常规配置
对于不连续子网,如果是在动态路由选择协议(如RIPv1)中将会在有类别界自动汇总,因为RIPv1是有类别路由选择协议,这样将会造成只有50%的机会可以正确交付数据包,也就是说会丢失50%的数据包;
对于可变长子网,如子网地址是全0的情况下,使用简单的有类别路由选择协议,如RIP和IGRP,将会产生一些问题,而静态路由则工作正常!但在现在的版本中因为都默认有ip subnet-zero和ip classless这两条命令,所以不会出现问题!
在配置静态路由时,如果有0子网和变长子网的情况,必须附加两个全局配置命令ip classless(好像没什么用,可能是模拟器的原因吧;这条命令现在已经没意义了,IOS软件都支持VLSM,所以no不no都是一个样)和ip subnet-zero,以支持VLSM和子网0和子网1;在IOS 11.3及其以后的版本中,ip classless功能在缺省状态下是打开的!假如关闭了ip subnet-zero功能,在配置时将会出现错误,它将不会允许使用子网0,如下所示:
Pooh(config)#in e 0/0
Pooh(config-if)#ip add 192.168.1.1 255.255.255.224
Bad mask /27 for address 192.168.1.1
所有用静态路由指明的网络,如果静态路由参照出站接口,那么它们将被作为直连网络输入到路由表中(只是说它们通过如个口直连,但前缀仍然是“S”,表明是静态路由),下面的路由表是指向下一跳路由器的静态路由表项产生的结果和指向出站接口到达目标网络的路由表的对比:
Tigger#show ip route
Gateway of last resort is not set
10.0.0.0 is variably subnetted, 3 subnets, 2 masks
C 10.4.6.0 255.255.255.0 is directly connected, Serial1
S 10.4.7.0 255.255.255.0 [1/0] via 10.4.6.2
S 10.1.0.0 255.255.0.0 [1/0] via 192.168.1.194
192.168.1.0 255.255.255.224 is subnetted, 3 subnets
C 192.168.1.64 is directly connected, Serial0
S 192.168.1.0 [1/0] via 192.168.1.65
C 192.168.1.192 is directly connected, Ethernet0
Tigger#
Tigger#show ip route
Gateway of last resort is not set
10.0.0.0 is variably subnetted, 3 subnets, 2 masks
C 10.4.6.0 255.255.255.0 is directly connected, Serial1
S 10.4.7.0 255.255.255.0 is directly connected, Serial1
S 10.1.0.0 255.255.0.0 is directly connected, Ethernet0
192.168.1.0 255.255.255.224 is subnetted, 3 subnets
C 192.168.1.64 is directly connected, Serial0
S 192.168.1.0 is directly connected, Serial0
C 192.168.1.192 is directly connected, Ethernet0
Tigger#
2、使用出站接口和下一跳地址相结合
配置静态路由的第三种选择是联合使用出站接口和下一跳地址,即指定的出站接口加上下一跳地址。如果出站接口失效,即使下一跳地址通过替代路由递归可达,路由依然会被删除。这样可以把与下一跳地址相关联的出站接口查询减到最小,同时使相应的路由表项不再是直连网络,而是距离为1的静态路由;如:
Pooh(config)#ip route 10.1.0.0 255.255.0.0 e 0/0 192.168.1.194
如果直接把静态路由指向一个广播型出站接口(如以太网),而不使用下一跳地址,可能会导致广播网络上出现过多的流量,而且还可能耗尽路由器的内存,如这样的情况:
Pooh(config)#ip route 10.1.0.0 255.255.0.0 e 0/0
那这这里路由器会认为10.1.0.0是直连网络。当路由器向10.1.0.0/16中的目标主机转发数据时,路由器会发送ARP请求以便获取目标主机的MAC地址。如果广播网络上的一台路由器(ARP代理)代表网络10.1.0.0回复ARP响应,那么不管数据包的目标地址是否有效,每次到达都会触发一个ARP请求和响应,并需要路由器配备大容量的ARP调整缓存;
如果在静态路由表项后面附加下一跳地址,那么路由器就不再认为目标网络是直连网络。这时ARP的请求对象只可能是下一跳地址,而且仅当第一个去往10.1.0.0的数据包才会触发ARP请求,如下面的情况:
Pooh(config)#ip route 10.1.0.0 255.255.0.0 e 0/0 192.168.1.194
所以,指定出站接口和下一跳地址相结合的方法可以最小化与下一跳地址关联的接口查询,并且把广播网络上的流量减到最小!当联合使用出站接口和下一跳地址时,静态路由表项会有所不同,如下图所示:
Tigger#show ip route static
10.0.0.0/16 is subnetted, 1 subnets
S 10.1.0.0 is directly connected, Ethernet0
Tigger#show arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.1.193 - 0004.c150.f1c0 ARPA Ethernet0
Internet 10.1.8.1 0 0010.7b38.37d5 ARPA Ethernet0
Internet 192.168.1.194 24 0010.7b38.37d5 ARPA Ethernet0
Internet 10.1.5.5 0 0010.7b38.37d5 ARPA Ethernet0
Internet 10.1.1.1 0 0010.7b38.37d5 ARPA Ethernet0
Tigger#
Tigger#show ip route static
10.0.0.0/16 is subnetted, 1 subnets
S 10.1.0.0 [1/0] via 192.168.1.194, Ethernet0
Tigger#show arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.1.193 - 0004.c150.f1c0 ARPA Ethernet0
Internet 192.168.1.194 22 0010.7b38.37d5 ARPA Ethernet0
可以看到:
第一组路由表和ARP缓存中没有使用下一跳地址,网络10.1.0.0是直连网络,并且有多个ARP缓存表项与之相关联,其中硬件地址相同,且都是路由器192.168.1.194的MAC地址。该路由器代替网络10.1.0.0中的所有主机回复ARP请求;
第二组表显示同时使用了出站接口和下一跳地址。注意,网络不再被直连了,而是通过192.168.1.194到达,出站接口是E0.ARP缓存中没有关于10.1.0.0网络的表项,仅有实际存在的直连网络地址,其中包含192.168.1.194!
三、案例研究:简单IPv6静态路由
基本命令:
ipv6 unicast-routing 启用ipv6路由选择
Honeypot(config-if)#ipv6 address ?
WORD General prefix name
X:X:X:X::X IPv6 link-local address
X:X:X:X::X/ IPv6 prefix
autoconfig Obtain address using autoconfiguration
路由器上只能手工指定link local address,或者一个ivp6前缀,或者让它自动配置;
Honeypot(config-if)#ipv6 address fec0:0:0:3::/64 ?
anycast Configure as an anycast
eui-64 Use eui-64 interface identifier
Honeypot(config-if)#ipv6 address fec0:0:0:3::/64 eui-64 为接口配置ipv6地址
ipv6 route fec0::1:0:0:0:0/64 fec0::3:204:c1ff:fe50:f1c0 创建ipv6静态路由
Honeytree#sh ipv6 route
IPv6 Routing Table - 9 entries
L FE80::/10 [0/0]
via ::, Null0
C FEC0:0:0:1::/64 [0/0]
via ::, Serial1/1
L FEC0::1:CE03:DFF:FE18:0/128 [0/0]
via ::, Serial1/1
S FEC0:0:0:3::/64 [1/0]
via FEC0::1:CE01:DFF:FE18:0
S FEC0:0:0:5::/64 [1/0]
via FEC0::1:CE01:DFF:FE18:0
S FEC0:0:0:8::/64 [1/0]
via FEC0::1:CE01:DFF:FE18:0
C FEC0:0:0:A::/64 [0/0]
via ::, Ethernet0/0
L FEC0::A:CE03:DFF:FE18:0/128 [0/0]
via ::, Ethernet0/0
L FF00::/8 [0/0]
via ::, Null0
Honeytree#
显示ipv6路由表
Honeytree#ping FEC0::5:CE02:DFF:FE18:1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to FEC0::5:CE02:DFF:FE18:1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 44/63/108 ms
测试配置连通性
IPv6静态路由的配置方法和IPv4基本相同,惟一不同的是IPv4网络掩码使用点分十进制形式,而IPv6使用目标网络的前缀长度。IPv6路由选择在缺省情况下是关闭的,所以必须使用命令ipv6 unicast-routing启动IPv6路由选择;创建静态路由的命令是ipv6 route,该命令后面跟随的参数是目标网络、前缀长度(单位是bit)和下一下跳路由器地址或去往目标网络的出站接口;
当我们需要确定静态路由表中下一跳地址时,详细的网络拓扑会有所帮助,但是地址接口ID部分的动态特性又使得拓扑信息容易改变。在为IPv6网络分配地址时,要想预先指定下一跳地址,就必须手动指定接口ID(只能指定link-local adddress),而不能使用自动构建的EUI64格式的地址。如果数据链路上接口已经配置了EUI64接口ID,那么就只能指定地址的前64位。路由器将基于MAC地址确定后64位。如果路由器被新路由器替换,那么相应的IPv6地址也不同(前64位保持相同,后64位将不同)。
Cisco发现协议(CDP)将详细显示邻接路由器的统计信息,如下所示:
Honeybee#show cdp neighbor detail
-------------------------
Device ID: Honeytree
Entry address(es):
IP address: 10.4.6.2
IPv6 address: FE80::2B0:64FF:FE30:1DE0 (link-local)
IPv6 address: FEC0::1:2B0:64FF:FE30:1DE0 (site-local)
Platform: cisco 2610, Capabilities: Router
Interface: Serial0/0.2, Port ID (outgoing port): Serial0/0.2
Holdtime : 146 sec
Version :
Cisco Internetwork Operating System Software
IOS (tm) C2600 Software (C2600-J1S3-M), Version 12.3(6), RELEASE SOFTWARE (fc3)
Copyright (c) 1986-2004 by cisco Systems, Inc.
Compiled Wed 11-Feb-04 19:24 by kellythw
advertisement version: 2
另一种确定链路IPv6地址的方法是使用show ipv6 interface命令,如下所示:
Honeybee#show ipv6 interface serial0/0.1
Serial0/0.1 is up, line protocol is up
IPv6 is enabled, link-local address is FE80::204:C1FF:FE50:F1C0
Description: Link to Piglet
Global unicast address(es):
FEC0::3:204:C1FF:FE50:F1C0, subnet is FEC0:0:0:3::/64
Joined group address(es):
FF02::1
FF02::2
FF02::1:FF30:1DE0
注意:一个路由器的E口和S口接口地址的后64位可能是相同的,因为路由器使用第一个遇到的MAC地址来生成它的每个串行接口EUI64格式的IPv6地址的后64位;
当然,ipv6静态路由也可以使用出站接口代替下一跳地址。一种选择是在接口后面输入地址,你可以输入链路本地地址,或者一个配置的地址;当出站接口是广播接口时,例如以太网,应该使用下一跳地址;当然,我们也可以使用目标网络的出站接口和下一跳地址相结合的方法来配置静态路由,如下所示:
ipv6 route fec0::a:0:0:0:0/64 serial 0/0.2
ipv6 route fec0::8:0:0:0:0/64 serial 0/0.2
ipv6 route fec0::1:0:0:0:0/64 serial 0/0.2
ipv6 route fec0::20:0:0:0:0/62 Ethernet0/0 FE80::2B0:64FF:FE30:1DE0
生成的路由表如下:
Honeypot#show ipv6 route static
S FEC0:0:0:A::/64 [1/0]
via ::, Serial0/0.2
S FEC0:0:0:8::/64 [1/0]
via ::, Serial0/0.2
S FEC0:0:0:1::/64 [1/0]
via ::, Serial0/0.2
S FEC0:0:0:20::/62 [1/0]
via FE80::2B0:64FF:FE30:1DE0, Ethernet0/0
注意:这里虽然是以出站接口指定的,但是路由表内并不会显示直连!
在广播网络上使用出站接口配置静态路由时,必须指定下一跳地址。这里建议采用链路本地地址。这样做有两个原因:一是除非网卡或路由器被替换,否则本地链路地址不会发生改变,即使使用不同的IPv6前缀重新编号站点也是这样;二是可以与路由器通告信息中的地址保持一致,使用这些地址的进程可按要求运行,例如ICMPv6重定向进程!
路由器向广播网络上的所有设备通告自己的存在及本地链路地址。主机使用这些通告信息建立路由器列表,并使用这些列表确定如何向网络转发数据包。如果主机把一个数据包转发给路由器,并且该路由器知道一个更适合转发该数据包的路由器,那么路由器将向主机发送重定向消息。重定向信息包括另一台路由器的本地链路ipv6地址。当主机在处理重定向信息时,如果路由器列表中包含这台更合适的路由器,那么主机将向它转发数据包,否则(或列表中这台路由器使用了不现的ipv6地址),主机将丢弃数据包。
四、案例研究:汇总路由(Summary Route)
汇总路由是一个包含路由表中几个更加精确地址的地址;用于末端路由器到远程的网络,比如此路由器是一个末端路由器,到达远端的网络192.168.1.0/27、192.168.1.64/27、192.168.1.192/27都可以通过邻居路由器到达,那么我只需要一条汇总路由192.168.0.0/24指向邻居路由器,就可以访问远程的这三个子网了,这就是汇总路由!
用小于特定类别地址标准掩码长度的掩码汇总一组主网地址的方法叫做超网化,如:192.0.0.0/8;
通过对一组子网甚至主网汇总,可以使静态路由表的条目讯速减小,但是在对地址进行汇总时需要小心,当汇总不正确时会产生意想不到的故障!
五、案例研究:选择路由
ip route 192.168.1.192 255.255.255.224 192.168.1.66
ip route 10.0.0.0 255.0.0.0 192.168.1.34
ip route 10.1.0.0 255.255.0.0 192.168.1.66
ip route 10.4.7.25 255.255.255.255 192.168.1.66
对某些路由进行精确控制,路由器将会按照最长匹配原则进行最为精确的配置!
六、案例研究:浮动静态路由(Floating Static Route)
浮动静态路由就是修改了管理距离的静态路由,如下所示:
ip route 192.168.1.0 255.255.255.0 192.168.1.193
ip route 10.4.0.0 255.255.0.0 192.168.1.193
ip route 10.1.30.0 255.255.255.0 10.1.10.2
ip route 10.1.30.0 255.255.255.0 10.1.20.2 50 浮动路由!!!
路由表中的其他路由总是优先于浮动路由,仅在首先路由发生失败时,浮动路由才会出现在路由表中!因为管理距离大,所以正常情况下它不会在路由表中显示!一般应用在有两条链路连接做线路冗余的情况下!加的管理距离它有点像度量,但它与度量不同!度量指明了路径的优先级,而管理距离指明了路由选择方式的优先级!
七、案例研究:IPv6浮动静态路由
IPv6与IPv4浮动静态路由的原理是相同的,如下所示:
ipv6 route FEC0::/62 FEC0::3:204:C1FF:FE50:F1C0
ipv6 route FEC0::/62 FEC0::2:204:C1FF:FE50:F1C0 50 浮动路由
ipv6 route FEC0:0:0:8::/62 FEC0::3:204:C1FF:FE50:F1C0
ipv6 route FEC0:0:0:8::/62 FEC0::2:204:C1FF:FE50:F1C0 50 浮动路由
不管是使用出站接口还是下一跳地址,IPv6静态路由管理距离的值都为1,使用这两种方式指定的静态路由是等价的,并且会负载均衡!
八、案例研究:负载均衡
负载均衡(Load Sharing),又叫作均分负载,它可以是等价的或非等价的。等价负载均衡(Equal-Cost Load Sharing),将流量均匀地分配到多条度量相同的路径上;非等价负载均衡(Unequal-Cost Load Sharing)将数据包分配到度量不同的链路上。各条路径上分布的流量与路由代价成反比,也就是说,代价越低的路径上分配的流量越多,代价越高的路径上分配的流量越少;
一些路由选择协议可以支持等价和非等价负载均衡两种方式,而其它一些路由选择协议仅支持等价方式,比如静态路由选择,因为它没有度量!
配置如下所示:
ip route 192.168.1.0 255.255.255.0 192.168.1.193
ip route 10.4.0.0 255.255.0.0 192.168.1.193
ip route 10.1.30.0 255.255.255.0 10.1.10.2
ip route 10.1.30.0 255.255.255.0 10.1.20.2
Rabbit#show ip route
Gateway of last resort is not set
10.0.0.0/8 is variably subnetted, 4 subnets, 2 masks
C 10.1.10.0/24 is directly connected, Serial0
S 10.1.5.0/24 [1/0] via 10.1.10.1
[1/0] via 10.1.20.1
S 10.4.0.0/16 [1/0] via 10.1.10.1
[1/0] via 10.1.20.1
C 10.1.20.0/24 is directly connected, Serial1
S 192.168.0.0/16 [1/0] via 10.1.10.1
[1/0] via 10.1.20.1
Rabbit#
IPv6与IPv4的原理相同,如下所示:
ipv6 route FEC0::/62 FEC0::2:204:C1FF:FE50:F1C0
ipv6 route FEC0::/62 FEC0::3:204:C1FF:FE50:F1C0
ipv6 route FEC0:0:0:8::/62 FEC0::2:204:C1FF:FE50:F1C0
ipv6 route FEC0:0:0:8::/62 FEC0::3:204:C1FF:FE50:F1C0
Honeypot#show ipv6 route static
S FEC0::/62 [1/0]
via FEC0::3:204:C1FF:FE50:F1C0
via FEC0::2:204:C1FF:FE50:F1C0
S FEC0:0:0:8::/62 [1/0]
via FEC0::3:204:C1FF:FE50:F1C0
via FEC0::2:204:C1FF:FE50:F1C0
负载均衡有两种方式:基于目标网络和基于数据包!
1、负载均衡和Cisco急速转发(Cisco Express Forwarding)
基于目标网络的负载均衡是根据目标地址分配负载。假设到一个网络存在两条路径,那么发往该网络中第一个目标的数据从第一条路径通过,发往网络中第二个目标的数据包通过第二条路径,发往此网络第三个目标的所有数据还通过第一条路径,依次类推。这就是Cisco急速转发(CEF)使用的缺省负载均衡方式。在大部分平台上,IPv4的缺省交换模式是CEF,但IPv6却不是;
CEF是一种非常有效的交换方法。它事先从路由表中获取信息并把信息存储在转发信息库(Forwarding Information Base,FIB)中,当任何数据包需要这些信息时可以立即使用。FIB包括路由表中所有目标网络,如果路由表稳定且不发生变化,那么FIB也不会变化。CEF使用一个单独的数据表-邻接关系表,为FIB的每个表项维护第二层转发信息。邻接关系表由第二层信息构成,例如,这些信息可以通过IP ARP或IPv6 NDP学习到。FIB和邻接关系表是在数据包转发之前建立的;
CEF在缺省情况下是基于目标进行负载均衡。这实际上是按照源目地址对进行负载均衡。所有发往特定目标地址的流量只要源地址相同都会从相同的接口出站,而不同源目地址对的流量可能会从下一个接口出站;
基于数据包的负载均衡是交换IPv4数据包的另一种方式。对于IPv6,CEF仅支持基于目标网络的负载均衡方式。基于数据包的负载均衡方式意味着在不同的链路上发送数据包,即使在路径等价、目标相同的情况下也是这样。如果路径代价不同,那么可能会在高、低代价路径上按照比率进行分流。基于数据包的负载均衡方式可以更加均匀地分布流量,这取决于不同源目地址对的数量。但是数据包丢不同的路径去往目标网络会引起非顺序到达,这对某些应用来说是不能接受的,例如VoIP;
路由器通常根据入站接口和源与目的地址类型确定是否使用CEF交换。对于考虑使用CEF的路由器来说,出站接口必须配置为CEF交换模式,如果接口上配置了CEF,那么CEF将尝试交换数据包;否则,CEF将会把数据包交付给次于最好的可用交换方式去处理。对于IP发v4,这种方法是快速交换,而在IPv6中叫过程交换(process switching);
相关命令:
show ip cef
show ipv6 cef 查看CEF功能是否启用
ip cef
ip cef --ipv6 cef 启用CEF,IPv6必须先打开IPv4的CEF
ip load-sharing per-packet 启用基于数据包的负载均衡功能
ip load-sharing per-destination 启用基于目标地址的负载均衡
show cef interface
show ipv6 cef interface 查看使用了哪一种方式的负载均衡
默认使用基于目标网络的负载均衡方式!
2、基于目标网络的负载均衡和快速交换
IOS在配置了快速交换的出站接口上执行基于目标的负载均衡,在一些路由器上,IOS的缺省交换模式是快速交换,其工作原理如下:
当路由器为第一个去往特定目标的数据进行交换处理时,路由器将执行路由表查询并选择出站接口;
然后获取有关被选接口的数据链路层信息(例如从ARP表),这些信息对数据包成帧是必需的,最后封装数据包并发送;
前面获取的路由和数据链路层信息被输入到快速交换的高速缓冲内;
一旦去往相同目的地的后继数据包进入路由器,高速缓冲中的信息使路由器不必查找路由表和ARP高速缓存,就可以立即交换数据包;
高速交换意味着所有去往指定目的地的数据包都从相同的接口被发送出去,因此交换时间和处理器的占用率将大大降低。当去往相同网络内不同主机的数据包进入路由器且还存在一条可选路由时,路由器会在另一条路径上发送数据包到目的地。因此,路由器能够做得最好的就是基于目标网络的负载均衡!
3、基于数据包的负载均衡和过程交换
过程交换(process switching)就是对于每个数据包,路由器都要进行路由表查询和接口选择,然后再查询数据链路信息。因为每一次为数据包确定路由的过程都是相互独立的,所以不会强制去往相同目标网络的所有数据包使用相同的接口。对于ipv4来说用命令no ip route-cache关闭快速交换并打开过程交换,而对于ipv6来说,它默认的方式就是过程交换!
我们可以使用debug ip packet来观察数据包的走向:
Piglet#debug ip packet
IP packet debugging is on
Piglet#
IP: s=192.168.1.15 (Ethernet0), d=10.1.30.25 (Serial0), g=10.1.10.2, forward
IP: s=10.1.30.25 (Serial0), d=192.168.1.15 (Ethernet0), g=192.168.1.193, forward
IP: s=192.168.1.15 (Ethernet0), d=10.1.30.25 (Serial1), g=10.1.20.2, forward
IP: s=10.1.30.25 (Serial1), d=192.168.1.15 (Ethernet0), g=192.168.1.193, forward
IP: s=192.168.1.15 (Ethernet0), d=10.1.30.25 (Serial0), g=10.1.10.2, forward
IP: s=10.1.30.25 (Serial0), d=192.168.1.15 (Ethernet0), g=192.168.1.193, forward
IP: s=192.168.1.15 (Ethernet0), d=10.1.30.25 (Serial1), g=10.1.20.2, forward
IP: s=10.1.30.25 (Serial1), d=192.168.1.15 (Ethernet0), g=192.168.1.193, forward
IP: s=192.168.1.15 (Ethernet0), d=10.1.30.25 (Serial0), g=10.1.10.2, forward
IP: s=10.1.30.25 (Serial0), d=192.168.1.15 (Ethernet0), g=192.168.1.193, forward
IP: s=192.168.1.15 (Ethernet0), d=10.1.30.25 (Serial1), g=10.1.20.2, forward
IP: s=10.1.30.25 (Serial1), d=192.168.1.15 (Ethernet0), g=192.168.1.193, forward
Piglet#
可以看到,路由器交换使用接口S0和S1向相同目标网络发送数据包,当然,在两条链路的另一端也以同样的方式回复数据包;应该注意的是:debug ip packet这条命令仅显示过程交换的数据包,而快速交换的数据包不会被显示!
正如许多选择一样,基于数据包的负载均衡虽然使流量分配比基于目标的方式更均匀,但是快速交换的较低交换时间和处理器占用的优点也随之丧失了!
4、哪一种交换方法会被用到?
IOS首先基于入站接口的配置来决定交换模式;如果入站接口上配置了CEF,那么不管出站接口如何配置,数据包都会被CEF交换,并使用CEF负载均衡规则:根据所做的配置,对于ipv4是每目的地或每数据包的,对于ipv6是每目的地的;如果入站接口没有配置CEF,则IOS会根据出站接口的配置来决定,其确定方法如下表:
有些时候即使打开了CEF,但是并没有使用CEF交换数据(例如,如果访问列表的日志功能被打开和数据包将被记录下来),那么数据包将被送交仅次于最快的交换方法,例如在IPv4下使用快速交换,在IPv6下使用过程交换!
九、案例研究:递归表查询
所有路由表项不必一定指向真实的下一跳路由器,如下所示:
ip route 10.1.30.0 255.255.255.0 10.1.10.2
ip route 10.1.10.0 255.255.255.0 192.168.1.194
ip route 192.168.1.192 255.255.255.224 192.168.1.66
如果Pooh需要向主机10.1.30.25发送数据包,它将查找路由表并发现经过10.1.10.2可以到达这个子网,但是因为这个地址不在直连网络中,所以它必须再次查找路由表并发现去往10.1.10.0需要途经192.168.1.194.由于这个子网也不是直连子网,因而需要进行第3次路由表查找。这次它发现途经192.167.1.66可以达到192.168.1.192,并且192.168.1.66在一个直连子网中,于是现在可以转发数据包了,这就是递归表查询!
这样做大大增加了路由器的负担,一般情况下并不使用,只使用在某些特殊需要的环境下!
十、案例研究:追踪故障路由
追踪故障路由,就是根据从源到目标网络路径上的路由器的路由表,来检查数据去往目标网络和从目标网络返回一步步的转发过程,从而来发现故障的所在!
一般来说,如果一个路由器所连的一子网能访问目标网络,而路由器自己却不能访问目标网络,那么它很可能是因为数据包来回走的路线不同,而在中间结点的某台路由器的路由出了问题,比如没有返回到源接口的路由;
Tigger#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default
Gateway of last resort is not set
10.0.0.0 is variably subnetted, 3 subnets, 2 masks
C 10.4.6.0 255.255.255.0 is directly connected, Serial1
S 10.4.7.0 255.255.255.0 [1/0] via 10.4.6.2
S 10.1.0.0 255.255.0.0 [1/0] via 192.168.1.194
192.168.1.0 255.255.255.224 is subnetted, 3 subnets
C 192.168.1.64 is directly connected, Serial0
S 192.168.1.0 [1/0] via 192.168.1.65
C 192.168.1.192 is directly connected, Ethernet0
Tigger#
10.0.0.0 is variably subnetted, 3 subnets, 2 masks 表示10.0.0.0这个网络是变长子网掩码的,也就是说每个子网的掩码并不相同,它用了两个掩码,总共有三个子网;
192.168.1.0 255.255.255.224 is subnetted, 3 subnets 表示192.168.1.0被划分了成了三个子网,掩码是一样的,这里都是255.255.255.224!
一般来说,路由器PING远程网络时使用的接口是数据包沿路由向目标网络最近的那个接口,除非用扩展PING改变这个接口;
在跟踪路由时,必须考虑完整的通信过程,不仅要验证去往目标网络的路由是正确的,还要验证返回的路径也是正确的,要知道ICMP回应报文和回应应答报文各自的源、目标地址是什么,然后再结合各路由表中的路由表项就可以了!
十一、案例研究:协议冲突
非常经典的一个案例!详情TCP/IP路由技术第二版卷一94页
注意:路由器在接收到一个数据包时,一旦发现该数据的目标IP地址是与本路由器直连的,那么它通过除接收到数据的接口外的所有端口发送ARP请求,来获取目标主机的MAC地址,而不是先把它转发到直连的那个端口再发ARP!
十二、案例研究:被取代的路由器
每当路由器或接口卡被替换时,一定要记得修改参考旧路由器EUI64格式IPv6地址的路由表项!
十三、案例研究:追踪IPv6故障路由
ipv6默认是基于数据包的负载均衡,所以会在两个接口之间交替转发数据包,因为有两条路径可以走,它轮流分别使用这两条路径,但是这样,会形成路由环路,比如从一个路径来的数据包,它又通过这个路径返回去!如果碰到从一个接口入站,又从同一个接口出站的情况,那就表明存在路由环路,这时路由器会产生ICMP错误信息!
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/27698/showart_406213.html |
|