增强IGRP(EIGRP)和
开放最短路径优先(OSPF)
1、EIGRP(Enhanced Interior Gateway Routing Protocol)的特点和操作
增强IGRP(EIGRP)是一个无类、增强的距离矢量协议,同内部网关路由选择协议(IGRP)一样,它是又一个Cisco专用协议,并且其应用范围在内部网关路由选择协议(IGRP)之上。与IGRP不同的是,EIGRP在它的路由更新中包含了子网掩码。有时EIGRP也被称为是混合型路由选择协议,因为它同时拥有矩离矢量和链路状态两种协议的特性。
主要功能有:
通过协议相关模块支持IP和IPv6(以及其他一些较少使用的被动路由协议)
被视为是无类的(与RIPv2和OSPF一样)
支持VLSM(Variable Length Subnet Mask)/CIDR(Classless InterDomain Routing)
有效的邻居发现
基于可靠传输协议RTP(Reliable Transport Protocol)的通信
基于弥散更新算法DUAL(Diffusing Update Algorithm)的最佳路径选择
协议相关模块(Protocol-Dependent Modules)
EIGRP通过使用协议相关模块(PDM)支持不同的网络层协议。每个EIGRP PDM将维护相互分离的表系列,这些表中包含有应用于特定协议的路由信息。也就是说,你将会拥有诸如IP/EIGRP和IPv6/EIGRP这类的表。
邻居发现
在EIGRP路由器彼此交换路由之前,它们必须是邻居。
建立邻居关系必须要满足三个条件:
收到Hello或ACK
具有匹配的AS号
具有相同的度量(K值)
当EIGRP发现一个新邻居,并且与它通过交换Hello数据包形成了邻居关系时,EIGRP需要通报它的整个路由表,这也是它唯一需要通报整个路由表更新之处。在它们都已经了解其邻居的路由之后,它们只传播路由表变化的部分。
一些术语
可行的距离:这是一个沿所有路径到达远程网络的最佳度量,并包含有正在与该远程网络进行通告的邻居的度量。由于它包含了最佳路径,它将会出现在路由表中。可行距离量度是由邻居报告的度量值(称为被报告或被通告距离),加上报告此路由的邻居的度量值构成的。
被报告/被通告距离:这是一个由邻居报告的到达远程网络的度量。它也是这个邻居路由表的度量值,并且也与拓朴表中显示在圆括号之内的后面一个数值相同,其前面的数值是可行距离。
邻居表:每个路由器都将保存有关邻接邻居的状态信息。对于每个协议独立的模块都有一个邻居表。排序号是用于标识更新数据包的。为了可以发现来自邻居数据包的顺序,需要记录最后接收到的排序号。
拓朴表:拓朴表是由协议相关模块生成的,并且根据扩散更新算法(DUAL)来操作。它包含所有由邻近路由器通告的目的地及保持中的每个目的地址,以及通告这些目的地邻居的列表。对于每个邻居,所记录的通告度量来自这些邻居的路由表。邻居所通告的目的地,一定是这个邻居用于转发数据包的路由。
可行的继任者:这是一条路径,它所报告的距离要比可行距离差一些,并且它被认为是一条备份路由。EIGRP在拓朴表中将保持多至6个可行的继任者。命令show ip eigrp topology将给出路由器已知的所有EIGRP可行的继任者路由。
继任者:继任者路由是到达远端网络的最佳路由。是EIGRP用于转发业务量的路由,它被存储在路由表中。
可靠传输协议
EIGRP使用专用的协议RTP(可靠传输协议)来管理EIGRP路由器间的消息通信。当EIGRP发送组播数据时,它使用D类地址的224.0.0.10。如果EIGRP没有从某个邻居那里得到应答,它将使用单播来重发同样的数据。在16次单播尝试后,它仍然没有得到应答,则此邻居将被宣告消失。
弥散更新算法
EIGRP为选择并维持到达每个远程网络的最佳路径使用弥散更新算法(DUAL)。这个算法可以做到:
如果可用,就路由备份
支持变长子网掩码
动态的路由恢复
如果没有路由被发现,则查询替换路由
2、使用EIGRP来支持大型网络
EIGRP包含了许许多多的强大功能,这使得它非常适用于大型网络
在单个路由器上支持多个AS
EIGRP使用自治系统号来区别可共享路由信息的路由器集合。路由信息可以通过再发布在不同的AS中间进行共享。通常,EIGRP的管理距离AD是0,但它只属于那些被称为内部EIGRP的路由。而通过再发布的EIGRP的管理距离是170,不论它是手工输入的还是自动再发布的,它们代表源于EIGRP自治系统外部的网络,它会出现在EIGRP的路由表内。
VLSM支持和汇总
作为一个历史悠久的无类路由选择协议,EIGRP支持使用变长子网掩码。并且,由于子网掩码是随每个路由更新一同传播的,EIGRP甚至支持不连续的子网应用。但默认时,RIPv2或EIGRP在不连续网络中不能工作,不过OSPF能,这是因为OSPF不像EIGRP一样能自动汇总。
路由发现和维护
EIGRP使用了一系列的表来保存关于环境的重要信息。邻居表(记录有关路由器与已经建立起来的邻居关系);拓朴表(保存着在互联网中每个路由器从邻居处接收到的路由通告);路由表(保存着当前使用着的用于路由判断的路由)。
EIGRP的度量
带宽、延迟、负载、可靠性。同IGRP一样,默认时,EIGRP只使用带宽和线路延迟来判定到达远程网络的最佳路径。另外还有第五个元素,最大传输单元(MTU)尺寸。它在EIGRP的计算中决没有被用到,但是在一些与EIGRP相关的命令中,它是一个必需的参数,特别是涉及再发布的命令。MTU的值表示去往目的网络过程中所遇到的最小MTU值。
最大路径数和跳计数
默认时,EIGRP(和IGRP)可以支持最多到4条链路的不等代价的负载均衡(实际上所有的链路选择协议都可以做到这点)。可使用如下命令
Router(config)#router eigrp 10
Router(config-router)#maximum-paths 6 //实现负载均衡的链路数量达到6:取值<1-6>
EIGRP的最大跳计数值为100,但它可以被设置到255。可使用如下命令
Router(config-router)#metric maximum-hops 255 //取值范围<1-255>
3、配置EIGRP
根据EIGRP命令的输入不同,有两种模式:路由配置模式和接口配置模式。路由器配置模式启用该协议,判断哪个网络将要运行EIGRP,并且设置全局参数。接口配置模式允许定制汇总、度量、定时器和带宽。
对于RT06
Router>enable
Router#config terminal
Router(config)#hostname RT06
RT06(config)#interface f0/0
RT06(config-if)#ip address 202.10.20.1 255.255.255.0
RT06(config-if)#no shutdown
RT06(config-if)#exit
RT06(config)#interface s0/0
RT06(config-if)#ip address 10.0.0.1 255.255.255.252
RT06(config-if)#clock rate 1000000 //对于指定为DCE的设备设置时钟频率
RT06(config-if)#no shutdown
RT06(config-if)#exit
RT06(config)#router eigrp 20 //启用EIGRP路由协议,定义自治系统号为20
RT06(config-router)#network 202.10.20.0 //申明直连网络号
RT06(config-router)#network 10.0.0.0
对于RT08的配置与上类似,注意不须要配时钟频率,EIGRP自治系统号必须相同为20。
(说明:
Router(config)#router eigrp 20
Router(config-router)#passive-interface serial0/0
如果完成了这个配置将会阻止此接口发送或接收Hello数据包,这样做的结果是,将会中止它已建立起来的邻居关系。这就意味着在这个接口上不能再发送或接收路由信息了。这与运行RIP协议时不同,在RIP路由协议中,passive-interface命令将阻止路由更新的发送,但却允许对路由更新的接收。因而,带被动接口的RIP路由器将仍然可认从其他路由器的通告中认识网络。而在EIGRP中,一个被动接口既不发送更新也不接收更新。)
4、再发布命令redistribute
例如:在上图中路由器R2与R3均支持RIP和EIGRP,但路由器871W只支持RIP,且R3与R2配置并运行着EIGRP。此时我们可以在R3上做路由再发布,让它同时运行RIP和EIGRP,并使这两种路由协议交换路由信息,从而让这三台路由器互联!配置如下:
R3#config terminal
R3(config)#router eigrp 10
R3(config-router)#redistribute rip metric 10000000 20000 255 1 1500
//配置RIP到EIGRP的再发布,以上数据分别表示带宽、延迟、可靠性(255为100%可靠)、负载(255为100%负荷)、最大传输单元。当配置再发布时,即使EIGRP使用的是默认值(带宽、延迟),你也必须配置所有的度量值。这样R3可同时使用RIP和EIGRP
R3(config-router)#exit
R3(config)#router rip
R3(config-router)#redistribute eigrp 10 metric 1 //配置EIGRP到RIP的再发布,这样871W就可以将EIGRP路由作为RIP路由进行接收
5、配置不连续网络
EIGRP协议是无类别路由协议,可以支持设计上地址不连续的网络环境,但由于路由总结的原因可能会带来问题。如下图:
图中四台路由器将网络分成五段,同属于主网172.16.0.0的3个子网172.16.30.0/24,172.16.20.0/24,172.16.40.0/24被两个C类网络分离,造成了它们之间不连续,假如在自动汇总开启的情况下,则会出现问题:让我们观查R2、R4、R3的路由表
R2的路由表:
R2#show ip route
(代码部分省略)
D 192.168.10.0/24 [90/30720] via 192.168.20.6 , 00:05:30 , FastEthernet0/0
172.16.0.0/16 is variably subnetted , 3 subnets , 2 masks
D 172.16.30.0/24 [90/30720] via 172.16.20.3 , 00:05:30 , FastEthernet0/1
C 172.16.20.0/24 is directly connected , FastEthernet0/1
D 172.16.0.0/16 is a summary , 00:05:32 , Null0
C 192.168.20.0/24 is directly connected , FastEthernet0/0
输出显示,EIGRP的路由使用D标识(DUAL算法),路由器产生了汇总路由172.16.0.0/16,但没有学习到到达网络172.16.40.0的路由。
R4的路由表:
R4#show ip route
(代码部分省略)
C 192.168.10.0/24 is directly connected , FastEthernet0/1
172.16.0.0/16 is variably subnetted , 2 subnets ,2 masks
C 172.16.40.0/24 is directly connected , FastEthernet0/0
D 172.16.0.0/16 is a summary , 00:00:20 ,Null0
D 192.168.20.0/24 [90/30720] via 192.168.10.2 , 00:01:10 , FastEthernet0/1
输出显示,R4也产生了汇总路由172.16.0.0/16。
R3的路由表:
R3#show ip route
(代码部分省略)
C 192.168.10.0/24 is directly connected , FastEthernet0/0
D 172.16.0.0/16 [90/30720] via 192.168.20.4 , 00:00:45 , FastEthernet0/1
[90/30720] via 192.168.10.4 , 00:00:45 , FastEthernet0/0
C 192.168.20.0/24 is directly connected , FastEthernet0/1
路由表显示,R3分别从路由器R2和R4学习到两条等值的到达网络172.16.0.0的路由。根据EIGRP协议的特性,它会使用这两条路由进行负载均衡。当有数据需要到达目标网络时它会在两个接口(F0/0和F0/1)上一替一个地轮流发送数据包。例如:R3收到到达网络172.16.40.0/24的数据,这些数据中的一半被错误地转发给了R2,对于数据的源发设备来说,就等于数据丢失。这就是自动在不连续的网络上汇总边界带来的问题:解决的方法是,在路由配置模式下使用no auto-summary命令关闭自动汇总功能。
6、验证EIGRP
在特权模式下:
show ip route //显示整个路由表
show ip route eigrp //只显示路由表中的EIGRP项目
show ip eigrp neighbors //显示所有EIGRP的邻居
show ip eigrp topology //显示EIGRP拓朴表中的项目
debug eigrp packet //显示在两台相邻路由器之间发送/接收的Hello数据包
debug ip eigrp notification //显示当EIGRP出现在网络上时它的变化及更新
7、开放最短路径优先基础
开放最短路径优先OSPF(Open Shortest Path First)是一个开放标准的路由选择协议,它被各种网络开发商所广泛使用,它通过使用Dijkstra(是典型最短路算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法能得出最短路径的最优解,但由于它遍历计算的节点很多,所以效率低。)算法来工作的。
OSPF具有下列特性:
由地区和自治系统组成
最小化的路由更新的流量
允许可缩放性
支持VLSM/CIDR
拥有不受限的跳计数
允许多销售商的设备集成(开放的标准)
OSPF创建为层次结构的原因包括:
减少路由选择的开销
加速会聚
用单一的网络地区来缩小网络的不稳定性
OSPF必须要有一个称为地区0的主干地区,而且如有可能,所有的路由器都应该连接到这个地区(没有直接连的可通过使用虚拟链路进行连接)。那些在一个AS内部连接其它地区到主干网络的路由器,被称为地区边界路由器(ABR)。这些路由器至少有一个接口必须在地区0中。
8、OSPF术语
链路:是指定给任一给定网络的一个网络或路由器接口;
路由器ID:路由器ID(RID)是一个用来标识此路由器的IP地址。Cisco通过使用所有被配置的环回接口中最高的IP地址,来指定此路由器ID。如果没有带有地址的环回接口被配置,OSPF将选择所有激活的物理接口中最高的IP地址为其RID;
邻居:可以是两台或更多的路由器,这些路由器都有某个接口连接到一个公共的网络上;
邻接:邻接是两台OSPF路由器之间的关系,这两台路由器允许直接交换路由更新数据;
Hello协议:OSPF的Hello协议可以动态发现邻居,并维护邻居关系。Hello数据包和链路状态通告建立并维护着拓朴数据库。Hello数据包的地址是224.0.0.5
邻居关系数据库:是一个OSPF路由器的列表,这些路由器的Hello数据包是可以被相互看见的。
拓朴数据库:包含有来看所有从某个地区接收到的链路状态通告数据包中的信息。路由器使用这些来自拓朴数据库中的信息作为Dijkstra算法输入,并为每个网络计算出最短路径。
链路状态通告:链路状态通告(LSA)是一个OSPF的数据包,它包含有在OSPF路由器中共享的链路状态和路由信息。
指定路由器:无论什么时候,当OSPF路由器被连接到相同的多路访问型的网络时,都需要选择一台指定路由器(DR)。它将负责分发/收集路由选择信息,确保所有路由器上的拓朴表是同步的。
备用指定路由器:(BDR)是多路访问链路上跃跃欲试的待命DR。
OSPF地区:一个OSPF地区是一组相邻的网络和路由器。在同一地区内的路由器共享一个公共的地区ID。由于路由器可以同时是多个地区中的成员,因此地区ID被指定给此路由器上特定的接口。
广播(多路访问):(BMA)就像以太网,它允许多台设备连接(或者是访问)到同一个网络,它是通过投递单一数据包到网络中所有的结点来提供广播能力的。在OSPF中,每个广播多路访问网络都必须选出一个DR和一个BDR。
非广播的多路访问:(NBMA)网络是那些像帧中继、X.25和异步传输模式(ATM)类型的网络。这些网络允许多路访问,但不拥有如以太网那样的广播能力。
点到点:被定义为一种包含两台路由器间直接连接的网络拓朴类型,这一连接为路由器提供了单一的通信路径。
点到多点:是一种网络的拓朴类型,这种拓朴包含有路由器上的某个单一接口与多个目的路由器间的一系列连接。
9、配置OSPF
对于RT06
Router>enable
Router#config terminal
Router(config)#hostname RT06
RT06(config)#interface f0/0
RT06(config-if)#ip address 202.10.20.1 255.255.255.0
RT06(config-if)#no shutdown
RT06(config-if)#exit
RT06(config)#interface s0/0
RT06(config-if)#ip address 10.0.0.1 255.255.255.252
RT06(config-if)#clock rate 1000000 //对于指定为DCE的设备设置时钟频率
RT06(config-if)#no shutdown
RT06(config-if)#exit
RT06(config)#router ospf 1 //启用OSPF路由协议,定义本地进程ID为1(取值1~65535)
RT06(config-router)#network 202.10.20.0 0.0.0.255 area 0
//申明直连网络号,并用反掩码来控制要宣告的范围,0表示精确匹配,255表示任意匹配。area 0表示骨干区域,OSPF中必须要有骨干区域。
RT06(config-router)#network 10.0.0.1 0.0.0.0 area 0
10、通配符
例如一个路由器用4个不同的接口与4个子网相连接:
192.168.10.64/28 (相应的子网掩码为:255.255.255.240 对应块尺寸:256-240=16)
192.168.10.80/28
192.168.10.92/28
192.168.10.8/30 (相应的子网掩码为:255.255.255.252 对应块尺寸:256-252=4)
最简单的网络申明配置是:
Router(config-router)#network 192.168.10.0 0.0.0.255 area 0
最能体现你CCNA身份的网络申明配置是(嘿嘿):
Router(config-router)#network 192.168.10.64 0.0.0.15 area 0
Router(config-router)#network 192.168.10.80 0.0.0.15 area 0
Router(config-router)#network 192.168.10.92 0.0.0.15 area 0
Router(config-router)#network 192.168.10.8 0.0.0.3 area 0
记住当配置通配符时,它们的取值总是块尺寸(256-子网掩码)减去1。
11、重要提示
要记住OSPF只使用带宽来判断去往某个网络的最佳路径。OSPF使用被称为开销的度量,Cisco为每一个应用OSPF的接口执行它自己计算开销的方法,Cisco使用简单的“108/带宽”等式来进行计算。这个带宽是为接口配置的带宽。
利用这个规则,100Mb/s快速以太网接口将有一个默认带宽为1的OSPF开销。这个值可以使用ip osfp cost命令而被忽略。通过将这个值改为1~65525范围内的数,可以巧妙处理开销。另外OSPF只可以在代价相等的链路上进行负载均衡,它不能像EIGRP一样可以在代价不相等的链路上进行负载均衡。
12、验证OSPF配置
Show ip ospf //用于显示OSPF信息,这些信息是关于运行在该路由器上的一个或全部OSPF进程的,包括路由器ID、地区信息、SPF统计和LSA定时器。
Show ip ospf database //给出在互联网络中路由器的编号(AS),及相邻路由器的ID(前面提到过拓朴数据库)。
Show ip ospf interface //显示所有与接口相关的OSPF信息。信息内容包括:接口IP地址、地区分配、进程ID、路由器ID、网络类型、开销、优先级、DR/BDR选举信息(如果可用)、Hello和Dead定时器间隔、邻接邻居信息。
Show ip ospf neighbor //汇总了有关OSPF信息中关于邻居和邻接状态的信息。
Show ip protocols //不论你配置何种路由协议,它都非常有用的。它提供了一个关于所有当前运行协议真实操作情况的精彩概述。
13、调试OSPF
debug ip ospf packet //显示hello数据包
debug ip ospf hello //显示详细hello数据包
debug ip ospf adj //显示广播和非广播多路访问网络上的DR和BDR选举
14、OSPF的DR和BDR选举
邻居:
多个共享共同网络分段的路由器在这个网络分段上将成为邻居。这个邻居是通过hello协议选择出来的。Hello数据包将使用IP组播周期性地被发送出每个接口。两台路由器只有同意下面的内容,它们才能成为邻居:
地区ID:这里的原则是,在某一特定网络分段上的两台路由器的接口必须要属于同一个地区。当然,这些接口必须归属于相同的子网。
认证:OSPF允许为特定的地区设置口令。虽然路由器间的认证并不必需,但是如果你需要的话可以去设置它。但要使路由器成为邻居,那么它们在该网络分段上的口令必须相同。
Hello和Dead间隔:OSPF要求两个邻居间设置的这些间隔是完全相同的。如果这两个间隔中的任何一个不相同,则这些路由器在此网络分段上将不会成为邻居。可以使用show ip ospf interface命令来设置这些定时器。
邻接:
在选举过程中,邻接是成为邻居之后的下一个处理过程。邻接路由器指那些经过简单的hello数据交换并进入数据库交换过程的路由器。
15、DR和BDR的选举:
只在在广播和非广播的多路访问网络(如以太网和帧中继)的网络分段上才会进行DR和BDR的选举。点到点链路,例如串行WAN连接,将不会进行DR的选举过程。在网络分段中带有最高优先级的路由器将会成为本网络分段中的DR。这个优先级在默认时取值为1。如果将接口优先级设置为0,如果所有路由器都使用默认优先级设置,那么带有最高路由器ID(RID)的路由器将会胜出。RID是在OSPF启动时由所有接口中最高的IP地址来确定的。如果配置了回环接口(是些逻辑接口,即虚拟的软件接口,它们用于OSPF的配置和诊断),具有最高回环接口IP地址的接口将会成为路由器的RID。我们也可以在路由器配置模式下使用router-id 命令(如:Router(config-router)#router-id 172.16.10.5)来指定RID,并且环回接口将不能忽略router-id命令的设置,router-id命令不用重启路由器就能使新设置的RID生效。在OSPF中,另一种替代使用环回接口来配置DR和BDR的方式是“指定”选举。通过配置接口的优先级可以做到这一点,只要在选举进行时此优先级比其他路由器的高就行。具体配置如下:
Router#config terminal
Router(config)#interface fastethernet0/0
Router(config-if)#ip ospf priority 2
//所有接口默认是优先级为1,如设成255表示最高,无人战胜。
说明:对于已经选举结束的网络,在已存在的DR或BDR被关闭之前,选举都不会再次进行。
16、配置EIGRP和OSPF汇总路由
EIGRP:
对于EIGRP,我们在Ethernet0上放置汇总路由,这样我们的汇总路由将通告到主干网络(10.10.10.0)。下面是Core上进行的EIGRP完整配置:
Core#config t
Core(config)#router eigrp 10
Core(config-router)#network 192.168.10.0
Core(config-router)#network 10.0.0.0
Core(config-router)#no auto-summary
Core(config-router)#interface ethernet 0
Core(config-if)#ip summary-address eigrp 10 192.168.10.64 255.255.255.224
OSPF:
要汇总地区1到地区0主干中,在OSPF进程ID下使用下列命令。
Core#config terminal
Core(config)#router ospf 1
Core(config-router)#network 192.168.10.64 0.0.0.3 area 1
Core(config-router)#network 192.168.10.68 0.0.0.3 area 1
Core(config-router)#network 10.10.10.0 0.0.0.255 area 0
Core(config-router)#area 1 range 192.168.10.64 255.255.255.224
OSPF默认时并不去自动汇总任何边界,因此命令no auto-summary在这里并不需要。