这一章概念比较多,刚开始读的时候有点晦涩难懂,多看几次书就明白了。
终于把EIGRP搞完了,好辛苦啊,累死我几百万脑细胞!!!
OSPF也已更新到最后,敬请关注,其他知识后续补充!

动态路由(一) [修改2]里说了RIP和IGRP,这里我们接着说EIGRP和OSPF。
EIGRP(Extend Interior Gateway Routing Protocol) 增强的内部网关路由协议
IGRP和EIGRP都是CISCO的的专用协议(就象CDP一样),而RIP和OSPF则是开放的,意思就是说如果你的网络全是CISCO的设备,那么最好使用EIGRP,如果是品牌比较混杂的网络结构,那么建议你使用OSPF。
EIGRP顾名思义,就是IGRP的增强版,它是一个无类、增强的距离矢量协议,同样它也使用AS来描述相邻路由器的集合,在上一篇中我们可以看到,EIGRP的AD值是90,OSPF的AD值是110。(注意AS和AD两个概念要分清,不要混淆)
l3tY3Bv$z0EIGRP不同于IGRP的就是它发送包含子网掩码的路由信息,所以它支持VLSM(可变长子网掩码),并且EIGRP的最大跳数为255。
EIGRP也被称为混合型路由选择协议,它同时拥有距离矢量和链路状态的两种特性,它在发现新邻居时发送整个路由表到对方,网络会聚后只需发送路由表变化部分。
EIGRP另一个受欢迎的特点就是它使用单一度量来比较并选择最佳可用路径,EIGRP的度量默认时使用带宽延迟为参数,而负载、可靠性和MTU则默认不启用,这点和IGRP是一样的。
下面详细说明EIGRP的主要功能:
通过协议相关模块支持IP、IPX和AppleTalk。 (这是唯一支持这三种上层协议的路由协议,IS-IS只支持IP和IPX,OSPF只支持IP协议,这也是NA的一个考点。)
被视为是无类的。(与RIPv2和OSPF一样)
支持VLSM/CIDR(CIDR=Classless InterDomain Routing 无类别域际路由选择,类似于VLSM的一门技术。)
支持概要和不连续网络
有效的邻居发现
基于可靠传输协议(RTP=Reliable Transmittion Protocol)的通信
基于弥散更新算法(DUAL)的最佳路径

在我们学习之前,先来定义一些术语:
可行的距离:这是一个沿所有路径到达远程网络的最佳度量,它将会出现在路由表中。
被报告距离:这是一个由邻居报告的到达远程网络的度量。
邻居表:每个路由器都将保存有关邻接邻居的状态信息。当了解到一个新邻居被发现时,这个邻居的地址和接口信息就会被记录下来,并保存在RAM的邻居表中。排序号是用来标识更新数据包的,为了可以发现来自邻居数据包的顺序,需要记录最后接收到的排序号。
拓扑表:拓扑表是由协议独立模块生成的,并且根据扩散更新算法(DUAL)来操作。它包含所有由附近的路由器通告的目的地及保持中的每个目的地地址,及通告这些目的地邻居的列表。
邻居表和拓扑表都是被保存在RAM中的,并且都是通过Hello和更新数据包来进行管理的。
可行的继任者:可行的继任者被认为是一条备份路由,保存在拓扑表中。当只存在一个可行的继任者时,目的地项才会从拓扑表中移动到路由表。拓扑表中最多保存6条可行的继任者,使用show ip eigrp topology将给出路由器已知的所有EIGRP可行的继任者。
继任者(successor):继任者路由是到达远程网络的最佳路由,保存在路由表中。

协议相关模块(PDM):EIGRP通过使用协议相关模块为多种网络层协议提供路由支持,例如IP、IPX和AppleTalk。另一个同样可以支持多种网络层协议的路由选择协议是中间系统到中间系统(IS-IS,但它也只是支持IP和无连接网络服务(CLNS)。每个EIGRP PDM都将维护相互分离的表系列,这些表中包含有应用于特定协议的路由信息。也就是说,你将会拥有IP/IGRP表,IPX/IGRP表和AppleTalk/EIGRP表。
邻居发现:在EIGRP互相交换路由信息之前,它们必须是邻居,建立邻居关系必须满足以下三个条件:
A、收到Hello或ACK信息我是网管博客b)S4a }0oL}8a
B、匹配的AS
\:\0UM!eCF4dU0C、相同的度量
当 EIGRP发现新邻居时,先通过Hello信息与之建立邻居关系,然后再通报它的整个路由表给对方(这是它唯一一次发送整个路由表)。在它们都已经了解其 邻居的路由之后,它们只发送路由表的变化部分。当路由器接收到其邻居的更新后,它们会将数据保存在一个本地的拓扑表中,这张表包含了所有从已知的邻居处了 解到的路由。
可靠传输协议:EIGRP使用专用的协议(被称为可靠传输协议(RTP))来管理消息通告,当EIGRP发送组播数据时,它使用D类地址224.0.0.10。
弥散更新算发:EIGRP为选择并维持到达每个远程网络的最佳路径,使用弥散更新算法(DUAL),这个算法可以做到:
如果可用则备份路由
9s3gE#N'aHa0支持可变长子网掩码(VLSM)
*@nq;h:[9N0动态的路由恢复我是网管博客 l1sX'l/ph8n
如果没有路由被发现则查询替换路由
DUAL 为EIGRP提供了在所有协议中尽可能快的路由会聚时间。EIGRP快速会聚的关键有两点:首先,EIGRP路由器维护所有它们邻居的路由拷贝,使用这个 拷贝可以计算出他们到达远程网络的开销。如果最佳路径不存在了,她可以简单地测试此拓扑表中的内容以选择出最佳的替代路由。第二,在本地的拓扑表中没有可 替代的路由,EIGRP会很快的询问他们的邻居。对其他路由器的依赖性和对它们提供信息的平衡就是DUAL的弥散特性。
Hello协议的中心思想就是实现对新的或已消失的邻居的快速判断。RTP满足了提供可靠传输及顺序控制机制的需求。DUAL则负责选择并管理最佳路径信息。为整个协议的实现建立了牢固的基础。

EIGRP包含了许多强大的功能,这使得它非常适用于大型的网络。
在单个路由器上支持多个AS管 理大型网络的可行办法就是将这个网络分割成多个独立的AS,每个AS由一系列相临的路由器组成,路由信息可以通过再发布在不同的AS之间共享。EIGRP 的AD值为90,但它只属于那些被称为内部EIGRP的路由,即同一个AS的路由。而另一种类型的路由被称为外部的EIGRP路由,它们的AD值为 170,这些也会出现在路由表中,它们是代表发源于EIGRP自治系统外部的网络,不论这些路由是来自另一个EIGRP自治系统,还是另一种路由选择协 议,在EIGRP内部再发布时,它们都被称为外部路由。
支持VLSM和概要RIPv2和EIGRP支持不连续的网络划分,但不是在默认状态。OSPF默认时支持不连续网络划分,因为它不像RIPv2和EIGRP一样进行有类边界自动汇总。(这句话有待理解)
路由发现和维护EIGRP路由器必须收集大量的信息,它使用一系列的表来保存这些关于环境的重要信息:
邻居关系表:记录着有关路由器和已建立起来的邻居关系的信息
拓扑表:保存着在互联网中每个路由器从每个邻居处接收到的路由通告
路由表:保存着当前使用着的用于路由判断的路由

配置EIGRP
初始配置:
Route(config)#router eigrp 20
)S*o_]M+aL\ph*v0Router(config-router)#network 172.16.0.0                     //直接相连的网段
Flz!G[Fh ?0Router(config-router)#network 10.0.0.0
如果你需要在指定接口上停止EIGRP的运行,需要使用passive-interface命令,将此接口标记为被动接口:
Router(config-router)#passive-interface s0/1
完 成这个配置将会阻止此接口发送或接收任何路由信息,是不是觉得这个命令很熟悉呢?没错,在RIP中也可以配置相同的命令,但是RIP中只是阻止接口发送路 由信息,却可以接收路由更新,passive-interface命令的影响取决于命令发布时所涉及的路由选择协议。(其他的协议使用该命令的结果目前还 未知)
默认时,EIGRP最多支持4条链路的不等价负载均衡,通过配置,最大可达到6条:
Route(config)#router eigrp 10
)zmBZBa3J0Router(config-router)#maximum-paths ?我是网管博客 X{G/w.pt$Z/_I
  <1-6> Number of paths
另外,EIGRP的最大跳计数为100,但它可以被设置到255,即使在路径度量的计算中没有使用跳计数,路由器仍然会使用最大跳计数来限制AS的范围:
Route(config)#rouer eigrp 10
"T+c8G6`#J0Router(config-router)#metric maximum-hops ?
+vm#~E[I#`0  <1-255> Hop count
配置不连续网络:大家先看下面这个图
521915_200709101711381.jpg
这 是一个典型的不连续网络,172.16.10.0和172.16.20.0通过网络10.3.1.0连接在一起,默认时每个路由器都只认识 172.16.0.0的网络。RIPv1和IGRP在此是不能工作的,默认时,RIPv2、EIGRP和OSPF网络中也不工作,因为RIPv1 RIPv2 IGRP EIGRP都可以在这些相同的有类边界上执行自动汇总(auto-summary)。(虽然OSPF不执行有类边界的自动汇总,但它也不工作,具体原因日 后分析。)
现在我们在来看一下这句话“支持VLSM和概要RIPv2和EIGRP支持不连续的网络划分,但不是在默认状态。OSPF默认时支持不连续网络划分,因为它不像RIPv2和EIGRP一样进行有类边界自动汇总。”
也就是说如果想要RIPv2或者EIGRP工作在此网络中,那么必须配置:
Lab_A(config)#router eigrp 10我是网管博客HD'c6Svka a
Lab_A(config-route)#network 172.16.0.0我是网管博客 jwcXJ$t|
Lab_A(config-route)#network 10.0.0.0我是网管博客DPUz6[j Q7Jt\
Lab_A(config-route)#no auto-summary
Lab_B同样执行no auto-summary命令后,EIGRP将在两个路由器之间通告子网,这个网络就可以使用了。

OSPF(Open Shortest Path First) 开放最短路径优先
OSPF是一个开放标准的链路状态路由选择协议,它使用Dijkstra算法来工作,OSPF的会聚仅次于EIGRP,支持多个等价开销路由,拥有不受限跳计数,但有一点,它只支持IP协议。
OSPF的部分关键术语:
路由器ID:RID是一个用来标识此路由器的IP地址,Cisco通过使用所有被配置的环回接口中最高的IP地址,来指定此路由器ID。如果没有带地址的环回接口被配置,OSPF将选择所有激活的物理接口中最高的IP地址为其RID。
邻接:OSPF对于共享路由选择信息是非常讲究的,并非所有的邻居都可以成为邻接,这将取决于网络的类型和路由器的配置。邻接的路由器允许直接交换路由更新数据,如果两个相邻的路由器它们的Hello和Dead定时器不相同,那么它们将不能形成邻接。
Hello协议:OSPF的Hello协议可以动态的发现邻居,并维护邻居关系。Hello数据包的链路状态通告(LSA)建立并维护着拓扑数据库,一个OSPF路由器只与建立了邻接关系的路由器交换LSA数据包。Hello的数据包地址是224.0.0.5
指定路由器(DR):无论什么时候,当OSPF路由器被连接到相同的多路访问型网络时,都需要选择一个指定路由器(DR)。(有待理解)
备用指定路由器(BDR):BDR是多路访问链路上随时待命的DR。BDR将从OSPF邻接路由器上接收所有的路由更新,但并不泛发这些LSA更新。
OSPF地区:一个OSPF地区是一组相邻的网络和路由器,在同一个地区内部的路由器共享一个公共的地区ID,所有在同一地区中的路由器都拥有相同的拓扑表。地区ID是被指定给特定的接口,因此这个路由器可能属于多个地区。在配置OSPF的时候,必须使用地区0。
广播(多路访问):广播网络就像以太网,它允许多个设备连接到同一个网络,它是通过投递单一数据包到网络中所有的结点来提供广播能力的。在OSPF中,每个广播多路访问网络都必须选出一个DR和一个BDR。
非广播的多路访问:NBMA是指那些如桢中继(Frame. Relay)、X.25和异步传输模式(ATM)类型的网络。这些网络允许多路访问,但不拥有以太网那样的广播能力。
SPF树的计算:在 地区内部,每个路由器都计算到达同一地区中每个网络的最佳/最短路径。这个计算是基于拓扑数据库中被收集的信息和一种被称为最短路径优先(SPF)的算 法。如果某个路由器的接口存在于多个地区,那么需要为每个地区都构建一棵单独的树。OSPF使用开销的度量,开销与每个包含在SPF树中的输出接口相关 联。完整路径的开销是沿这条路径所有输出路径的总和。CISCO使用简单的1e8/bw来进行计算的,例如100Mb/s的fast ethernet接口将有一个默认为1的OSPF开销,再例如10Mb/s的ethernet接口开销为10。开销可以通过配置ip ospf cost命令修改,其范围是1到65535。
配置OSPF
OSPF的配置相当复杂,对于NA,我们只要关心基本的单地区OSPF配置。
启动OSPF:
Router(config)#router ospf  ?我是网管博客+X9dvHY3y:b(s/cKT,h
<1-65535>
这个值是路由器上OSPF协议的进程ID,其值是唯一的,是为了区分同路由器上别的OSPF进程。CCNA的考试目标中只涉及单地区单进程的OSPF,因此这部分暂不赘述。
在标识了OSPF进程后,接下来需要标识想要进行OSPF通信的接口,以及路由器所在的地区。OSPF在配置中使用了通配符(wildcard)掩码,该掩码也被应用在访问控制表的配置中。
Router(config)#router ospf 1
h!E$bJ C` X0lvj0Router(config-route)#network 10.0.0.0 0.255.255.255 area ?我是网管博客)P,S*_1Qr6PKKD
<0-4294967295> OSPF area ID as a decimal value我是网管博客1gdM9YS#S
A.B.C.D                   OSPF area ID in IP address format
W!sxM["LQ*Ye0Router(config-route)#network 10.0.0.0 0.255.255.255 area 0
network 命令的参数是网络号10.0.0.0和wildcard掩码0.255.255.255。这两个数字的组合用于标识OSPF将操作的接口,并且它也将被包 含在LSA的通告中。在wildcard掩码中,一个0的八位位组表示网络地址中相应的八位位组必须严格匹配,而255则表示不必关心网络地址中相应的匹 配情况。我是网管博客o;q!U`?]+?'W

@\m3~*B9^J0验证OSPF配置
show ip route我是网管博客8bmavv)Q*u+i
show ip ospf                          用于显示OSPF信息,包括路由器ID、地区信息、SPF统计和LSA定时器信息
-\ P&J3S2o$ijtj$p)g0show ip ospf database       显示的信息给出了链路号和相邻路由器的ID以及拓扑数据库。我是网管博客(U|OP9w
show ip ospf interface         该命令给出了所有与接口相关的OSPF信息,包括接口IP地址、地区分配、进程ID、路由器ID、网络类型、开销、优先级、DR/BDR选举信息,Hello和Dead定时器间隔以及邻接邻居信息。
{%@:k7e:e&@+W_0show ip ospf neighbor        该命令汇总了有关OSPF信息中关于邻居和邻接信息
OSPF和环回接口:环回接口是某些逻辑接口,即虚拟的软件上的接口,并非真正的路由器接口,在OSPF中配置环回接口是为了确保接口在OSPF过程中一直是激活的。
让我们看一个配置环回接口的例子:使用show running-config命令可以查看这一配置情况
Router#show ip ospf我是网管博客5a!D$]3wT ~'v;[:{
 Routing process "ospf 132" with id 192.168.20.1我是网管博客(~n;aN;pS3rk
[output cut]
n7@&`vw"}M0Router#int loopback 0
我是网管博客@!k4_3l5R
Router(config-if)#ip address 172.16.10.1 255.255.255.255   //我们看到此RID为192.168.20.1 但配置了一个172.16.10.1的环回接口地址,这个以后再理解。我是网管博客T/G*B0Bkm!kROj3@
Router(config-if)#no shutdown
配置EIGRP和OSPF汇总路由
汇总,也称为路由汇聚,它允许路由选择协议将多个网络用一个地址来进行通告。汇总其实并不复杂,需要去解决的就是块尺寸,下面我们来看几个例子:
例1,网络192.168.16.0到192.168.31.0 它的块尺寸是16,因此这个网络的汇总地址就是192.168.16.0 255.255.240.0
例 2,网络172.16.32.0到172.16.50.0 这里可能有两个答案,如果使用32的块尺寸,那么通告地址是172.16.32.0 255.255.224.0,但是这一通告里包含了172.16.51.0到172.16.63.0,如果这一段网络已经被别的地方使用,那么这个网络将 产生问题。另一个比较合适的答案就是块尺寸选择16,则通告为172.16.32.0 255.255.240.0 剩下的172.16.48.0到50.0则另行通告。

"i IKj)[;t P0
 例3,下图给出了一个邻接的网络设计
521915_200709121106231.jpg
上图中有6个网络,其中4个块尺寸为4的网络(/30),两个块尺寸为8个网络(/29),这个网络设计正好可以放入一个尺寸为32的块中,那么它通告的地址应该为192.168.10.64 255.255.255.224
下面我们在核心路由器上进行EIGRP的完整配置:
Router(config)#router eigrp 10
-~JT%Uv'u:Z0ca)v9x0Router(config-route)#network 10.0.0.0
MT2ZY8uqM\'pz0Router(config-route)#network 192.168.10.0
3Z#|nsv$qO0Router(config-route)#no auto-summary
K:L#NAL9{~8L0Router(config-route)#interface ethernet 0
c!|;dt[Hx0Router(config-if)#ip summary-address eigrp 10 192.168.10.64 255.255.255.224
上 面为自制系统为10的EIGRP配置将直接在所连接的网络192.168.10.0 和10.0.0.0中进行通告。由于EIGRP在有类边界上的自动汇总,因此必须使用no auto-summary命令。我们将要通告到主干网络上的汇总路由放置在连接主干网络的接口上,而不是配置在路由进程的控制下。
要用OSPF配置上述网络,我们需要把它划分为多个地区,如下图:
521915_200709121121421.jpg
dI.P&q4s0
要汇总地区1到地区0的主干中,在OSPF进程ID下配置:
Router(config)#router ospf 1
m+t%\&W#^iR0Router(config-router)#network 192.168.10.64 0.0.0.3 area 1                     //有待理解
N'XFOYr+K|0
Router(config-router)#network 192.168.10.68 0.0.0.3 area 1                    //有待理解
5g:QyRe0
Router(config-router)#network 10.10.10.0 0.0.0.255 area 0我是网管博客c(m~ m%@ Wm-f{6Ll
Router(config-router)#area 1 range 192.168.10.64 255.255.255.224
     //ospf配置汇总的语法
默认时OSPF并不去汇总任何边界,因此这里并不需要no auto-summary命令。