[原创]让我们一起CCNA吧系列文章六:EIGRP and OSPF

时间:2021-11-14 09:28:51
本系列文章主要针对CCNA 640-801的学习者,学习课程为SYBEX的《Cisco Certified Network Associate Study Guide Fourth Edition》

本章思科的考试内容包括:


设计与规划

·基于用户需求选择一个合适的路由协议
·用思科的技术设计一个简单的互连网络

执行与操作

·基于用户要求配置路由协议




增强型内部网关协议(Enhanced Interior Gateway Routing Protocol (EIGRP))是一个在思科路由器上运行的,思科的私有路由协议。这是一个在当前很流行的路由协议,所以弄懂它很重要。在这章里我将介绍EIGRP的许多特性并描述它是如何工作的,还有一些EIGRP发现,选择,和通告路由的独特的方法。

同样地,我也向你介绍开放式最短路径优先(Open Shortest Path First (OSPF))路由协议,这也是一个现在非常流行的路由协议。你要知道它使用的技术和内部操作,知道OSPF对比RIP的优点。然后我们围绕在广播网络和非广播网络上OSPF的执行情况来一步步介绍OSPF。最后还解释了在特定的不同的网络环境中是如何执行一个单区域的OSPF和示范怎么样进行确认检查操作。





EIGRP Features and Operation


EIGRP是一个无类的,增强的距离向量协议。它比其他思科的私有路由协议有明显的优势,如IGRP。这就是我们为什么要把它叫做增强型的IGRP的原因。就象IGRP一样,EIGRP使用自治系统的概念来描述了一连串运行相同路由协议和分享路由信息的路由器。不过和IGRP不同的是,EIGRP在路由更新信息中包含了子网掩码。你现在应该知道了吧,通告子网掩码可以让我们在设计网络的时候使用VLSM(可变长度子网掩码)和路由汇总。

EIGRP通常都被认为是混合型的路由协议,那是因为它包含了距离向量和链路状态路由协议的特点。例如,EIGRP不象OSPF那样发送链路状态数据包而是发送传统的距离向量的路由更新信息,这些路由信息包括从有联系的路由器到达指定网络的开销。EIGRP同样有着链路状态的特征:在邻居路由器启动的时候同步彼此的路由表;当网络拓扑发生变化时发送具体的路由更新。这些都使得EIGRP能够适应非常大型的网络。EIGRP有一个最大的跳数是255。
许多强大的特性使得EIGRP对比IGRP及其他的路由协议而显得非常突出,下面是一些比较重要的特性:

·通过协议相关模型来支持IP,IPX和AppleTalk。
·无类路由协议(和RIPv2,OSPF一样)
·支持VLSM/CIDR
·支持路由汇总和不连续的网络
·有效率地发现邻居
·通过可靠传输协议(Reliable Transport Protocol (RTP))来通信
·通过扩散更新算法(Diffusing Update Algorithm (DUAL))来选择最好路径。



Protocol-Dependent Modules


EIGRP的一个非常有趣的特性就是它为多种网络层协议如IP,IPX,AppleTalk等 提供路由选择支持。只有另外一个路由协议跟RIGRP类似地支持多种网络层协议,那就是IS-IS(Intermediate System-to-Intermediate System),但IS-IS只支持IP和CLNS(Connectionless Network Service)。
EIGRP通过使用PDMs(protocol-dependent modules)来支持不同的网络层协议。
每个EIGRP PDM建立一系列的分开的路由表来对应相关协议。这是什么意思呢?就是说,如果使用IP那么就会有IP/EIGRP路由表,或者是IPX/EIGRP,AppleTalk/EIGRP路由表。呵呵,我知道新版的CCNA考试中没有IPX和AppleTalk的内容,但是你要知道,在实际生活中,一定会有你可能要运行IPX或者AppleTalk的时候,而这里要理解EIGRP能够支持多种网络层协议是很重要的。


Neighbor Discovery

在EIGRP路由器彼此交换路由信息前,它们必须成为邻居。要建立邻居关系必须符合三个条件:
·收到Hello或ACK
·相同的AS号码
·相同的度(K值)

链路状态协议往往是使用Hello消息来建立邻居关系(也叫做邻接关系),因为它们通常不用周期性的发送路由更新,并且它们有一些机制来帮助邻居路由器了解是否有新邻居加入或者某个旧邻居离开等。为了保持邻居关系,EIGRP路由器必须从邻居那里持续接收Hello消息。如果EIGRP路由器属于不同的自治系统(autonomous systems AS)那么它们不会自动的分享路由信息当然也不会成为邻居。这个性质在大型网络中能够有效地减少某个特定AS路由信息的到处传播,除非你手动地在不同AS之间进行redistribution。
EIGRP只有在发现一个新的邻居时才会通告它的整个路由表。当这种情况发生时,邻居彼此通告它的整个路由表给另一个。当每一个路由器都学习完后,只有路由表中变动的地方才会被发送。
当EIGRP路由器接收到邻居的更新时,它们把更新存放在一个本地的拓扑表中,这个拓扑表包括了所有从邻居那里学来的路由信息,并从中选择一些最好的路由放进路由表中。
现在我们学习一些概念:
Feasible distance:可行距离是所有到达远程网络的路径中最好的路径。它包含了可通告远程网络的邻居的度。你可以在路由表中发现可行距离路由,那是因为可行距离被认为有最好的度。这个度是邻居报告的度(叫做reported distance)加上邻居报告这个度时的路由开销。

Reported distance:报告距离是邻居路由器报告的到达远程网络的度。也是邻居的路由表中的路由。并且它的号码跟拓扑表中/后面的号码相同。

Neighbor table:邻居表,每个路由器在邻居表中保存临近邻居的状态信息。当一个新发现的邻居被学习到后,邻居的地址和接口会被记录下来保存进邻居表中,邻居表是在内存中建立的。每一个协议相关模型(PDM)有各自的邻居表。序列号码被用来匹配更新应答包,从邻居那收到的最后序列号码被记录下来使得能够删除那些无序的更新包。

Topology table:拓扑表通过PDM和DUAL来填写内容。它包含了所有由邻居路由器通告的目的地,保持每一个目的地址和一个可以通告目的地的邻居列表。每一个邻居通告的度(邻居路由表中使用的路由)都会被保存下来。
注意:邻居表和拓扑表都是保存在内存中的,通过使用Hello和update数据包来维护。

Feasible successor:可行后继,可行后继是一条报告距离比可行距离要差一点的路径,它通常作为备份路由使用。EIGRP能够在拓扑表中维持6个可行后继,只有最好度的那个可行后继(successor)将被放进路由表中。show ip eigrp topology命令可以显示路由器所有的EIGRP可行后继路由。


Successor:后继,一个后继路由是到达远程网络的最好的路由。后继路由被EIGRP用来发送数据到目的地并且它被保存在路由表中。后继有一个叫做可行后继的备份路由,可行后继保存在拓扑表中。
QUOTE:

注意:可行后继是一个备份路由并且它保存在拓扑表中,而后继是同时保存在拓扑表和路由表中!!这点ccna的考试中经常考到,要注意两者的区别。


通过使用可行距离和在拓扑表中作为链接备份的可行后继,网络能够立即聚合,聚合时只有EIGRP的数据信息被发送到所有邻居上。






Reliable Transport Protocol (RTP)


EIGRP使用一个叫做可靠传输协议(Reliable Transport Protocol (RTP))的私有协议来管理在EIGRP路由器间的通信消息。就象名称一样,RTP的关键就是可靠性。思科设计了一个机制来在组播和单播间起杠杆作用,使得其快速传送数据包并追踪接收到的数据。
当EIGRP发送组播信息的时候,它使用了一个D类的地址:224.0.0.10。前面也说过了,每个EIGRP路由器知道谁是邻居,所以组播信息会发送到邻居上去,并建立一个回应组播信息的邻居列表。如果EIGRP没有收到一个邻居的回应,那么它转而使用单播来发送同样的信息,如果尝试16次单播后还是没有接收到任何回应,那么该邻居被认为已经“死亡”。通常人们把这个过程叫做可靠性组播(reliable multicast)。
路由器通过分配一个序列号码给每个数据包来留意它发出的数据。通过这个技术,路由器可以检测信息是否过时,多余或者无序。
上面这些东西对于EIGRP来说非常重要,因为EIGRP是一个安静的协议,它依靠这些能力在启动的时候来同步路由数据库,然后当发生任何变化时随时维护数据库的一致性。



Diffusing Update Algorithm (DUAL)

EIGRP使用扩散更新算法(Diffusing Update Algorithm (DUAL))来选择和维护到达远程网络的最好路径。这个算法能够做到下面几点:
·测定备份路由是否有效
·支持VLSM
·动态路由恢复
·如果没有发现路由的话发送备份路由的请求

DUAL使EIGRP在所有协议中可能有最快的路由会聚时间。EIGRP快速会聚的关键有两点:第一,EIGRP路由器建立了一个包括所有邻居路由的副本,这些路由被用来计算它们到达远程网络的开销。如果最好的路径失效了,那么可以很简单地检查拓扑表中的内容并找出最好的代替路由。第二,如果本地拓扑表中没有好的备用路由,那么路由器马上让它的邻居们来帮助找一条出来,邻居们回应这个请求,这就是DUAL的扩散特性。
正如我所说的,Hello协议能够快速的测定一个新的邻居或者一个失效的邻居。RTP应答这个呼叫,提供一个可靠的机制来传输和排序信息。在这些基础上,DUAL负责选择和维护最好路由路径。





Using EIGRP to Support Large Networks


EIGRP有许多优点,让它能够适合在大型网络中使用:
·在单个路由器上支持多重AS
·支持VLSM和路由汇总
·路由发现和维护


Multiple ASes

EIGRP使用自治系统号码来标记选定的路由器共享路由信息。只有在相同自治系统里的路由器才会共享彼此的路由信息。在大型网络里,很容易得到非常复杂的路由和拓扑表,这样在进行扩散计算操作的时候会导致会聚时间缓慢。
所以管理员怎样才能减轻大型网络管理的负担呢?好,可以把大网络划分成多个独立的EIGRP的自治系统(AS),每个AS里居住着一系列临近的路由器,然后能够通过重新分配(redistribution)技术来在不同的AS间分享路由信息。
在EIGRP中使用重新分配有一个有趣的特点,通常,EIGRP的管理距离AD是90,但这是在AS内的管理距离,通常叫做internal EIGRP route。另外的一种类型叫做external EIGRP route,它的AD值是170。当这些路由手动或者自动重新分配时出现在EIGRP路由表中,并且它们呈现了EIGRP外部的网络。就算这些路由来自另外的EIGRP的自治系统或者其它路由协议如OSPF也没有关系-----当EIGRP使用了重新分配后,它们都被认为是外部路由。
我有一些关于EIGRP和重新分配的好消息,我们假设你有一个网络,里面的路由器运行IGRP路由协议,你作为这个网络的管理员并决定运行EIGRP来代替IGRP----因为你读了本书的内容并知道了许多EIGRP的优点。
自从你想转换到EIGRP但是不能使得所有的路由器同步时,你需要配置重新分配(redistribution)而不是EIGRP!当你使用和原来IGRP相同的EIGRP自治系统号码的时候,EIGRP会自动把IGRP的路由重新分配给EIGRP。当然,EIGRP会把这些路由当作是外部路由(AD值170),这个绝不是你希望使用的东西。你需要转移得越快越好,但是因为这个自动重新分配的特性你将不能在一个周末里完成转移。




VLSM Support and Summarization

就象大多数高级的无类路由选择协议(classless routing protocol)一样,EIGRP支持VLSM。这点是很重要的,因为使用VLSM可以通过改变子网掩码来更适应用户需求以保存地址空间,例如在point-to-point网络上使用一个30位的子网掩码。并且路由更新传播的时候会包含子网掩码的信息,所以EIGRP同样支持不连续的子网,使用不连续的子网可以在我们设计网络地址方案时有更多的灵活性。
那么什么是不连续的子网(discontiguous subnets)呢?如果有两个或者更多个基本类型的不同网络的子网连接在一起,那么就构成了不连续子网。举个例子吧,子网172.16.10.0和172.16.20.0通过10.3.1.0网络连接在一起,因为172.16.10.0是一个子网,而172.16.20.0是另外一个子网,虽然它们都属于172.16.0.0网络,但是10.0和20.0是分开的,独自的,是通过另外一个网络连接起来的,所以才叫做不连续的子网。
有一点你一定要理解,那就是不连续的网络根本不会在RIPv1和IGRP上运行,但是!不连续的网络默认情况下在RIPv2,EIGRP这些可以支持VLSM的协议上同样也不能工作!呵呵,不用担心,有办法可以让它们工作的,在等下的内容中我会告诉你如何实现这个目标。
EIGRP同样支持在全部或任意的路由器上手动地创建路由汇总。路由汇总能够大大地减少路由表的体积。然而EIGRP自动设置了路由汇总使得网络只能工作在它们的基本类型的边界上。很明显,这样的情况下不连续的子网根本不能正常工作。
QUOTE:
注意:RIPv1, RIPv2,IGRP和EIGRP一样会默认地使用自动路由汇总那些基本的网络边界。但OSPF不会!
RIPv2和EIGRP可以支持不连续的网络,但默认情况下不能。
OSPF默认情况下就可以支持不连续的网络,因为OSPF不会象RIP和EIGRP那样自动地路由汇总。






Route Discovery and Maintenance

EIGRP的混合特性在进行路由发现和路由维护的时候完全显露出来。象链路状态协议,EIGRP使用Hello信息发现邻居,并随时监视着邻居的状态。又象大部分距离向量协议那样使用routing-by-rumor的机制。routing-by-rumor的意思是很多路由器接收到的路由更新通常都是别人传来的,不是第一手的,和谣言(rumor)类似。
因为使用EIGRP的路由器需要在大量的信息中筛选出最好的路由,所以必须要有地方来放置这些信息,EIGRP使用了一系列的表来存储重要的环境信息:

·Neighborship table
·Topology table
·Route table


邻居表(neighborship table,也叫做neighbor table)记录了路由器的邻居信息。

拓扑表(topology table)记录了从邻居那里接收到的关于整个互连网络的路由。

路由表(route table)记录了当前使用的路由。

EIGRP支持的每种不同的网络层协议如IP,IPX,AppleTalk都有各自的上述表。

下面我们介绍EIGRP的度。



EIGRP Metrics

不象其他的许多路由协议使用单一的因素来比较并选出最好的路由,EIGRP使用了一个混合的因素(度):
·Bandwidth
·Delay
·Load
·Reliability
跟IGRP类似,EIGRP默认情况下只使用线路的bandwidth和delay来决定到达远程网络的最好的路由。通常思科喜欢把这个叫做路径带宽和线路累积延迟。
还有第五个因素MTU,虽然这个因素并没有起到任何作用,但是在一些配置EIGRP的命令中它还是一个必要的参数的,尤其是在进行重新分配的时候。



Maximum Paths and Hop Count

默认情况下,EIGRP和IGRP能够支持4条不等价的线路进行负载均衡。然而,如果你希望EIGRP能够支持6条不等价线路进行负载均衡的话,可以使用下面的命令:
Pod1R1(config)#router eigrp 10
Pod1R1(config-router)#maximum-paths ?
<1-6> Number of paths

这里要注意一下的是,默认情况下RIP也能支持4条线路进行负载均衡,但是不象IGRP和EIGRP,RIP只能支持等价的线路。

另外,EIGRP(还有IGRP)有一个默认的最大的跳数100,但能够设置到255。

Pod1R1(config)#router eigrp 10
Pod1R1(config-router)#metric maximum-hops ?
<1-255> Hop count

就象上面你看到的,EIGRP能够设置一个最大跳数255,虽然没有把跳数作为计算最好路由的条件因素,但还是能够用最大跳数来限制AS的范围的。




Configuring EIGRP

虽然EIGRP可以为IP,IPX和AppleTalk进行配置,但是在目前思科CCNA的考试你只需要注意IP的配置就可以了。
在两种模式下可以输入EIGRP的命令:路由器全局配置模式和接口配置模式。全局配置模式启动协议,检测运行EIGRP协议的网络,并设置全局的参数条件。接口配置模式可以定制路由汇总,度,时间,带宽。本书因为CCNA的考试要求所以只把焦点放在全局配置模式下的命令。

在路由器上启动EIGRP,使用router eigrp 后面跟着你网络的AS号码。然后用network命令宣告连接的网络。
让我们举一个例子吧,在路由器连接的两个网络上使用自治系统号码20,两个网络的地址是10.3.1.0/24和172.16.10.0/24。

Router#config t
Router(config)#router eigrp 20
Router(config-router)#network 172.16.0.0
Router(config-router)#network 10.0.0.0

记住!!和IGRP一样,我们只使用基本类型的网络地址,所有的子网位和主机位都置0。

如果说你想在某个接口上停止使用EIGRP,那么你可以使用passive-interface interface 命令来标记该接口为被动:
Router(config)#router eigrp 20
Router(config-router)#passive-interface serial 0/1

这样可以阻止serial 0/1接口发送或接收Hello数据包,这样做的结果是停止接口形成邻接关系。这意味着该接口将不能接收或发送路由信息。

QUOTE:
注意:passive-interface命令的作用跟路由协议有关。举个例子,如果接口运行的是RIP协议,那么passive-interface命令能够阻止接口发送路由更新信息但是还能够接收!!!这样RIP路由器还能够从其它路由器上学习网络结构。而EIGRP的passive-interface命令将同时阻止接口接收和发送更新。


好了,你可以在运行EIGRP的同时还运行RIP和IGRP,如果你不在乎浪费带宽和CPU运算时间的话。这是因为EIGRP的AD是90,而IGRP的AD是100,RIP的AD是120。所以只有EIGRP的路由能够起作用。



Configuring Discontiguous Networks

这是一个你需要注意的地方,那就是我们前面说的自动路由汇总。为了使EIGRP支持不连续的网络,我们需要使用no auto-summary命令:

Lab_A#config t
Lab_A(config)#router eigrp 100
Lab_A(config-router)#network 172.16.0.0
Lab_A(config-router)#network 10.0.0.0
Lab_A(config-router)#no auto-summary




Verifying EIGRP

在路由器上能够使用一些命令来帮助你检测故障和确认EIGRP配置。

TABLE 6.2 EIGRP Troubleshooting Commands

Command             Description/Function

show ip route         Shows the entire routing table
show ip route eigrp     Shows only EIGRP entries in the routing table
show ip eigrp neighbors Shows all EIGRP neighbors
show ip eigrp topology   Shows entries in the EIGRP topology table


接下来我说明一下怎么使用表6.2中的命令,这里不包括不连续网络的例子。

Lab_A#sh ip route
[output cut]
Gateway of last resort is not set
D 192.168.30.0/24 [90/2172416] via 192.168.20.2,00:04:36, Serial0/0
C 192.168.10.0/24 is directly connected, FastEthernet0/0
D 192.168.40.0/24 [90/2681856] via 192.168.20.2,00:04:36, Serial0/0
C 192.168.20.0/24 is directly connected, Serial0/0
D 192.168.50.0/24 [90/2707456] via 192.168.20.2,00:04:35, Serial0/0
Lab_A#


这里要注意EIGRP路由条目前是用D来标记的,D意味着DUAL算法。AD值是90,表示是internal EIGRP routes。


show ip route eigrp 命令只显示路由表中的EIGRP路由。



show ip eigrp neighbors:显示所有的EIGRP邻居。



上面的输出告诉我们以下信息:
·H字段表示发现邻居的顺序。
·hold time表示这个路由器等待指定的邻居发送Hello数据包过来的时间。
·uptime表示邻居关系已经建立了多长时间。
·SRTT字段表示了smooth round-trip timer:从路由器到邻居的来回时间,这个字段的数值被用来决定当发送组播到邻居,等待邻居回应的时间。如果到时了没有回应,那么路由器换单播来再次发送以尝试完成通信。
·RTO(Retransmission Time Out)字段表示了EIGRP等待重新发送一个重新传输队列中的数据包到邻居的时间。
·Q表示了在队列中有多少突出的消息,如果这个数值过大,就可以知道有故障发生。
·Seq字段表示了从邻居那里接收的最后更新的序列号,这个经常用来建立同步和避免发送一个队列外的数据包。

注意:show ip eigrp neighbor命令可以让你检查已经建立邻接关系的邻居的ip地址,重新传输的时间间隔和队列记数。


接下来我们看看show ip eigrp topology命令:

Lab_C#show ip eigrp topology
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
r - reply Status, s - sia Status
P 192.168.40.0/24, 1 successors, FD is 2169856
via Connected, Serial0
P 192.168.50.0/24, 1 successors, FD is 281600
via Connected, Ethernet0
P 192.168.10.0/24, 1 successors, FD is 2707456
via 192.168.40.1 (2707456/2195456), Serial0/0
P 192.168.30.0/24, 1 successors, FD is 2172416
via 192.168.40.1 (2172416/28160), Serial0/0
P 192.168.20.0/24, 1 successors, FD is 2681856
via 192.168.40.1 (2681856/2169856), Serial0/0
Lab_C#


注意每个路由条目前都标记为P,这意味着路由条目处在passive state,是正常工作状态。如果路由条目前面标记为A,那就是active state,这是因为路由器找不到路径了而在搜索代替的路由。每个条目中也包含了可行距离(feasible distance,或者FD),FD加上下一跳邻居的距离就是一个数据包到达远程网络目标的距离。还有括号里的两个参数,第一个是FD,第二个是到达远程网络的通告距离。好了,迄今为止我们学习了EIGRP的许多内容,下面我们继续学习OSPF。






Open Shortest Path First (OSPF) Basics

开放式最短路径优先(OSPF)是一个开放性标准的路由选择协议,它能够支持许多不同厂商的路由器,包括思科的。如果你有许多路由器并且不全全部是思科的,那么你就不能使用EIGRP!这样你就只剩下了RIPv1,RIPv2或者OSPF三个选择了。如果是一个大的网络,那么,你就只剩下唯一一个OSPF能够选择了,或者你使用路由重新分配(redistribution)-------一个在路由协议间提供转换的服务。

OSPF使用Dijkstra算法,首先形成一个最短路径树,然后选择最好的路由放进路由表。OSPF聚合非常快(虽然可能没有EIGRP那么快),并且支持多条等价的到达目标的路由,但是不象EIGRP,OSPF只支持IP路由。

OSPF提供了以下特性:
·由区域和自治系统组成
·极小的路由更新流量
·提供可扩缩性
·支持VLSM/CIDR
·有无限的跳数
·能够支持不同厂商的设备(因为是开放性的标准)

OSPF是一个纯链路状态的路由协议。所以把它跟传统的距离向量协议如RIP进行一个比较是非常有用的:




OSPF有许多新特性,我已经在表6.3中列出来了。这些特性构成了一个快速的,可缩放的和健壮的协议,这个协议在许多实际工作网络中被使用。

OSPF被假定设计为一个层次性的方式。这通常意味着你可以把一个大的网络分割成许多小的互连网络(叫做区域)。这是OSPF最好的特点。

把OSPF设计为层次性的原因如下:
·减少路由开销
·加快聚合速度
·把网络的不稳定性限制在单一的区域里
这些使得配置OSPF不是那么容易而是更加精确和困难。

图6.4显示了一个典型的OSPF的简单设计:


注意到每一个区域的路由器都连接到主干---叫做area 0或者主干区域。
OSPF必须有一个区域0(area 0),然后其他的路由器必须尽可能连接上这个区域0。连接其他区域到主干区域的路由器叫做区域边界路由器(ABRs,Area Border Routers),ABR必须至少有一个接口在区域0内。OSPF在一个自治系统内运行,但也能够连接多个自治系统,连接其他自治系统到一起的路由器叫做自治系统边界路由器(Autonomous system Boundary router,ASBR)。
事实上,你要创建其他的网络区域来最小化路由更新的数量并且把问题故障限制在一个区域里而不能影响到整个网络。但是这超出了本书的内容,我们这里只学习单一区域。



OSPF Terminology

象学习EIGRP一样,学习之前我要先介绍几个关键的术语概念:

Link:一个链接是把一个网络或者路由器接口分配到特定的网络。在OSPF进行处理时一个路由器接口被认为是一个链接。这个链接或者说接口将有关联的状态信息(up or down),和一个甚至多个ip地址。

Router ID:路由器ID(RID)是一个用来鉴别路由器的ip地址。思科选择所有已配置的环回(loopback)接口中ip地址最高(或者说最大,跟我们10进制说的大小一样)的那个ip作为RID;如果没有配置任何环回接口,那么OSPF选择所有活动的物理接口中最高的ip地址的作为RID。

Neighbors:邻居,两个或者多个路由器有接口在同一网络上,那么这些路由器就成了邻居。例如两个路由器通过一条point-to-point串行线路连接在一起。

Adjacency:邻接是两个OSPF路由器之间的关系,邻接的路由器允许直接交换路由更新信息。OSPF在分享路由信息的时候非常挑剔,不象EIGRP那样把路由信息和所有的邻居分享,而是仅仅在建立了邻接关系的邻居路由器之间分享路由信息。不是所有的邻居都能建立邻接关系的,这依靠网络的类型和路由器的配置来决定。


Hello protocol:OSPF Hello协议提供了动态发现邻居和维护邻居关系的能力。Hello数据包和链路状态通告(Link State Advertisements ,LSAs)建立和维护拓扑数据库。OSPF的Hello数据包通过ip地址224.0.0.5发送。

Neighborship database:邻居数据库,是一列Hello数据包发现的OSPF路由器,里面包含了许多详细的资料如RID,邻居状态等。

Topology database:拓扑数据库包含了在一个区域内接收到的所有LSA数据包中的信息。路由器从拓扑数据库中取出信息放到Dijkstra算法进行计算以得出达到每个网络的最好路径。
注意:LSA数据包被用来更新和维护拓扑数据库。


Link State Advertisement:链路状态通告,是一个OSPF的数据包,里面包含了在路由器间共享的链路状态和路由选择信息。LSA数据包分几种类型,等下我再进行说明。一个OSPF路由器只在和它建立了邻接关系的路由器之间交换LSA数据包。

Designated router:被指定路由器(DR),只要OSPF路由器连接在一个多路访问网络(思科经常叫做广播网络)上,那么就要选出一个DR。
一个主要的例子是以太局域网(Ethernet LAN),为了最小化邻接关系的数量,DR被选举出来发送/接收路由信息,以保证全部路由器的拓扑数据库的同步。这样,在广播网络中的其它路由器必须和DR以及BDR建立邻接关系。DR的选择跟路由器的最高优先级和RID有关,如果优先级相同那么由RID来决定。

Backup designated router:被指定路由器的备份路由器,BDR从相邻的OSPF路由器那里接收所有的路由信息,但不发送LSA更新。

OSPF areas:OSPF区域是一个连续网络和路由器的分组。在同样区域里的所有路由器使用相同的Area ID。因为一个路由器可能同时处在不同的区域内,所以Area ID被关联到特定的接口,这样路由器就可能有一些接口属于area1而另外的接口属于area0。在同一区域内的所有路由器都有一个同样的拓扑数据库。当你配置OSPF的时候记得必须要有一个area0,这是因为通常都要把路由器配置为连接到主干网络。区域在建立一个层次性网络的时候扮演了一个主要角色。层次性的网络实际上增强了OSPF的可伸缩性。


Broadcast (multi-access):广播(或者多路访问)网络例如以太网允许许多设备连接到相同的网络,也提供了一个“广播”的能力:一个数据包被发送到网络上的所有节点。在OSPF中,每一个广播多路访问网络都要选出一个DR和BDR。

Non-broadcast multi-access:非广播多路访问(NBMA)网络的类型有Frame Relay,X.25,和异步传输模式(Asynchronous Transfer Mode ,ATM)等。这些网络允许多路访问,但是没有象以太网那样的广播能力。所以NBMA网络需要特殊的OSPF配置来提供适当的功能并且邻居关系也要定义。

QUOTE:
注意:在广播网络和非广播多路访问网络中都要选出DR和BDR。



Point-to-point:点到点是一种网络拓扑结构,它由两个直接相连的路由器组成,提供了单一的通信路径。点到点的连接可以是物理性的,如通过一条串行缆线来直接连接两个路由器;或者也可以是逻辑性的,如两个路由器相隔数千米然后通过Frame Relay网络种的一条线路来连接起来。另外,这种类型的网络避免了使用DR或者BDR,它是自动发现邻居的。


Point-to-multipoint:点到多点这种网络拓扑结构是在一个路由器上的一个接口和多个目的路由器之间的一系列连接组成的。和点到点一样,不需要DR和BDR!


上面这些概念对于你理解OSPF的运行很重要,所以你一定要确定你已经熟悉这些术语概念了。




SPF Tree Calculation

在一个区域内每个路由器计算到达在同一区域里其他的网络的最短/好的路径。这个计算基于从拓扑数据库里选择的信息和一个叫做SPF(shortest path first)的算法。把区域里的每个路由器画成一棵树,你会发现这很象一个族谱,有一个路由器作为根(root),其它的路由器则分布散开出去。这是为什么路由器用最短路径树来添加路由进路由表的原因。
要知道这棵树只包含了一个网络,这个网络要在相同的区域。如果一个路由器有接口在多个区域里,那么每个区域都要有单独的树。
SPF算法在选择路由的处理过程中有一个关键的标准要考虑,那就是每条可能到达目标网络路径的度或者开销。但这个SPF的计算跟其他区域的路由无关,也就是说不计算其它区域的路由。

OSPF使用一个度叫做开销(cost),开销跟每一个包含在SPF树上的输出接口有关。路径的全部开销是路径上每一个输出接口的开销之和。因为cost在RFC2338中定义为一个任意的数值,所以思科使用自己的方法来计算每一个OSPF接口的开销:一个简单的等式10的8次方除以接口带宽。接口带宽是在接口上配置的带宽而不是实际线路输送数据的带宽。根据这个规则,一个100Mbps的快速以太网接口的默认OSPF cost是1,而一个10Mbps以太网接口的cost是10。
注意:如果一个接口设置了带宽为64000bps,那么它的cost开销就是1563。


可以通过ip ospf cost命令来改变cost的数值,这个数值的范围在1--65535间。因为cost被分配到每条链接,所以必须在你想改变cost的接口上来改变cost数值。
QUOTE:

注意:思科是基于链路带宽来计算cost的,其他厂商可能使用另外的度来计算链路的cost,所以当你连接不同厂商的路由器时,你可能需要调节其中一个路由器的cost来适应另外不同厂商的路由器。在路由器的链路间必须分配同样的cost才能使OSPF正常工作。







Configuring OSPF

配置OSPF不象RIP,IGRP,EIGRP那么简单,并且当OSPF使用了许多条件参数后可能配置会变得相当复杂。幸好,我们的学习只需要把注意力放在单一区域的OSPF的配置上。下面的部分描述了怎样配置一个单一区域的OSPF。

配置OSPF,有两个基本的要点:
·启动OSPF
·配置OSPF的区域


Enabling OSPF

启动OSPF的命令很简单:

Lab_A(config)#router ospf ?
<1-65535>

在1-65535间的数值范围标明了OSPF的Process ID。它是标明在这个路由器上一系列OSPF配置中的一个特定运行过程的唯一的号码。不同的OSPF路由器不一定要使用相同的Process ID来维持通信。Process ID完全是一个本地的标记,只有一小点的意思。但是Process ID不能从0开始,它必须最小从1开始。
你可以在一个路由器上同时运行多个OSPF进程,但这个不等于运行多区域OSPF。第二个进程将建立一个单独的拓扑数据库并独立地管理通信。由于CCNA考试只要求一个单区域的OSPF和每个路由器上只运行单一的OSPF进程,所以我们只注意这个就可以了。





Configuring OSPF Areas

在指定了OSPF的进程之后,你需要指定你想要进行OSPF通信的接口,和这个接口对应的区域号码。这将把你配置的网络通告给其他的网络。OSPF在配置中使用反掩码(也叫通配符),在访问控制列表(access-list)中同样使用使用反掩码,访问列表我们将在第十章学习。


Lab_A#config t
Lab_A(config)#router ospf 1
Lab_A(config-router)#network 10.0.0.0 0.255.255.255 area ?
<0-4294967295> OSPF area ID as a decimal value
A.B.C.D OSPF area ID in IP address format
Lab_A(config-router)#network 10.0.0.0 0.255.255.255 area 0

注意:区域号码可以是0到42亿之间的任意号码。不要把这个区域号码跟进程ID搞混了,Process ID的范围是1到65535。

记住,OSPF的进程ID是不相关的,你可以在同一网络的所有路由器上配置相同的进程ID也可以不同,都没有关系的。它只是一个本地的标记并只是在路由器上启动OSPF路由选择而已。


重点在network命令配置的网络号码10.0.0.0和反掩码0.255.255.255。这两个结合起来告诉了OSPF该怎样处理这个接口,而且这个地址也指定了OSPF的LSA通告范围。OSPF会使用这个命令来找出在路由器上的任何配置在10.0.0.0网络的接口,并且把这些找到的接口放进区域0里。注意,你可以创建42亿个区域(我很怀疑一个路由器是否能让你配置如此多的区域,但起码你要知道可以用42亿以内的数字来命名区域)。
QUOTE:

下面我们来快速复习一下反掩码:在反掩码中,0表示相应的网络必须要精确匹配,而255表示不用匹配对应的网络地址。举个例子吧,地址1.1.1.1 反掩码0.0.0.0表示只有1.1.1.1这个ip地址符合要求。如果是1.1.0.0和0.0.255.255呢?这个表示了从1.1.0.0到1.1.255.255范围间的任何地址。


还有最后一个重点就是区域号码,区域号码表明了在同一个区域里的路由器或接口在指定的网络范围里分享路由信息。区域号码的格式可以使用十进制,范围是0-4294967295。或者也可以象ip地址那样使用点分十进制来表示,例如area 0.0.0.0是一个合法的区域,它表示的是区域0。


OSPF的AD是110,如果你前面配置了IGRP或者EIGRP,那么你必须先取消,因为IGRP的AD是100,而EIGRP的AD是90,都比OSPF低,如果不取消的话那么OSPF将不能正常工作。 下面我们开始配置OSPF,使用区域0,并且我们示范了几种不同的表示network的方式:


Lab_A
So here’s the Lab_A router’s configuration:

Lab_A#config t
Enter configuration commands, one per line. End with CNTL/Z.
Lab_A(config)#no router eigrp 10
Lab_A(config)#no router igrp 10
Lab_A(config)#no router rip
Lab_A(config)#router ospf 132
Lab_A(config-router)#network 192.168.10.1 0.0.0.0 area 0
Lab_A(config-router)#network 192.168.20.1 0.0.0.0 area 0
Lab_A(config-router)#^Z
Lab_A#





Lab_B
The Lab_B router is directly connected to networks 20, 30, and 40. Instead of typing in each interface, I can use one network command and still make it work:
Lab_B#config t
Enter configuration commands, one per line. End with CNTL/Z.
Lab_B(config)#no router eigrp 10
Lab_B(config)#no router igrp 10
Lab_B(config)#no router rip
Lab_B(config)#router ospf 1
Lab_B(config-router)#network 192.168.0.0 0.0.255.255 area0
                                      ^
% Invalid input detected at '^' marker.
Lab_B(config-router)#network 192.168.0.0 0.0.255.255 area 0
Lab_B(config-router)#^Z
Lab_B#




Lab_C
Let’s give the Lab_C router that’s directly connected to networks 40 and 50 some attention:
Lab_C#config t
Enter configuration commands, one per line. End with CNTL/Z.
Lab_C(config)#no router eigrp 10
Lab_C(config)#no router igrp 10
Lab_C(config)#no router rip
Lab_C(config)#router ospf 64999
Lab_C(config-router)#network 192.168.40.0 0.0.0.255 area 0
Lab_C(config-router)#network 192.168.50.0 0.0.0.255 area 0
Lab_C(config-router)#^Z
Lab_C#



好,现在我们已经配置完了OSPF,接下来该做什么呢?喝茶时间吗?不,不是的,你还需要检查你的OSPF配置,我们要确定你的网络现在是否正常工作。







Verifying OSPF Configuration

我们在路由器上使用show ip route命令来看看:          
Lab_A#sh ip route
Gateway of last resort is not set
O 192.168.30.0/24 [110/65] via 192.168.20.2, 00:01:07, Serial0/0
C 192.168.10.0/24 is directly connected, FastEthernet0/0
O 192.168.40.0/24 [110/128] via 192.168.20.2, 00:01:07, Serial0/0
C 192.168.20.0/24 is directly connected, Serial0/0
O 192.168.50.0/24 [110/138] via 192.168.20.2, 00:01:07, Serial0/0
Lab_A#

[略]

是否你的配置都出现在路由表中了?如果是的话我们可以用ping或者telnet来再次确定一下。





The show ip ospf Command

show ip ospf命令是用来显示在路由器上运行OSPF的进程信息的。进程信息包括了RID,区域信息,SPF统计和LSA时间信息。现在我们再看一下Lab_A的输出:

Lab_A#sho ip ospf
Routing Process "ospf 132" with ID 192.168.20.1
Supports only single TOS(TOS0) routes
Supports opaque LSA
SPF schedule delay 5 secs, Hold time between two SPFs 10 secs
Minimum LSA interval 5 secs. Minimum LSA arrival 1 secs
Number of external LSA 0. Checksum Sum 0x000000
Number of opaque AS LSA 0. Checksum Sum 0x000000
Number of DCbitless external and opaque AS LSA 0
Number of DoNotAge external and opaque AS LSA 0
Number of areas in this router is 1. 1 normal 0 stub 0 nssa
External flood list length 0
Area BACKBONE(0)
Number of interfaces in this area is 2
Area has no authentication
SPF algorithm executed 5 times
Area ranges are
Number of LSA 3. Checksum Sum 0x020E9A
Number of opaque link LSA 0. Checksum Sum 0x000000
Number of DCbitless LSA 0
Number of indication LSA 0
Number of DoNotAge LSA 0
Flood list length 0


注意,Router ID(RID)是192.168.20.1,这是路由器Lab_A上最高的ip地址。


The show ip ospf database Command

show ip ospf database命令显示的信息是链接的号码和邻居路由器的ID,还有前面我说过的拓扑数据库。只能显示同区域的内容:


Lab_A#sh ip ospf database
OSPF Router with ID (192.168.20.1) (Process ID 132)
Router Link States (Area 0)
Link ID     ADV Router Age Seq#     Checksum Link count
192.168.20.1 192.168.20.1 648 0x80000003 0x005E2B   3
192.168.40.1 192.168.40.1 351 0x80000003 0x00E32F   5
192.168.40.2 192.168.40.2 192 0x80000003 0x00CD40   3
Lab_A#



路由器显示了链路ID(记住,一个接口同样可以是一条链路)和在ADV router下显示的链路上的路由器的RID。






The show ip ospf interface Command

show ip ospf interface命令显示所有OSPF的接口相关信息。可以显示指定接口或者所有接口,显示的内容包括了:
·接口的ip地址
·分配的区域
·进程ID
·路由器ID
·网络类型
·COST
·优先级
·DR/BDR的选择信息(如果有的话)
·Hello和Dead时间间隔
·邻居的邻接信息




Lab_A#show ip ospf interface
Serial0/0 is up, line protocol is up
Internet Address 192.168.20.1/24, Area 0
Process ID 132, Router ID 192.168.20.1, Network Type POINT_TO_POINT, Cost: 64
Transmit Delay is 1 sec, State POINT_TO_POINT,
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
Hello due in 00:00:06
Index 2/2, flood queue length 0
Next 0x0(0)/0x0(0)
Last flood scan length is 1, maximum is 1
Last flood scan time is 0 msec, maximum is 0 msec
Neighbor Count is 1, Adjacent neighbor count is 1
Adjacent with neighbor 192.168.40.1
Suppress hello for 0 neighbor(s)
FastEthernet0/0 is up, line protocol is up
Internet Address 192.168.10.1/24, Area 0
Process ID 132, Router ID 192.168.20.1, Network Type BROADCAST, Cost: 10
Transmit Delay is 1 sec, State DR, Priority 1
Designated Router (ID) 192.168.20.1, Interface address 192.168.10.1
No backup designated router on this network
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
Hello due in 00:00:04
Index 1/1, flood queue length 0
Next 0x0(0)/0x0(0)
--More--





The show ip ospf neighbor Command

show ip ospf neighbor命令超级有用,因为它概括了OSPF的相关信息,包括邻居和邻接状态。如果DR或BDR存在的话也会显示它们的信息:

Lab_A#sh ip ospf neighbor
Neighbor ID   Pri State   Dead Time Address   Interface
192.168.40.1   1   FULL/ - 00:00:30 192.168.20.2 Serial0/0
Lab_A#





The show ip protocols Command

这个show ip protocols命令当你运行OSPF,EIGRP,IGRP,RIP,BGP,IS-IS或者其它能够在你路由器上配置的协议的时候同样非常非常有用。该命令提供了一个很好的现在运行的协议的概述:

Lab_A#sh ip protocols
Routing Protocol is "ospf 132"
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
Router ID 192.168.20.1
Number of areas in this router is 1. 1 normal 0 stub 0 nssa
Maximum path: 4
Routing for Networks:
192.168.10.1 0.0.0.0 area 0
192.168.20.1 0.0.0.0 area 0
Routing Information Sources:
Gateway Distance Last Update
192.168.40.1 110 00:05:56
192.168.40.2 110 00:05:56
192.168.20.1 110 00:05:56
Distance: (default is 110)
Lab_A#


根据上面的的输出,你能够确定OSPF的进程ID,RID,区域类型,配置的网络和区域还有邻居的RID,这些都很有用。






OSPF and Loopback Interfaces

当使用OSPF路由协议的时候配置一个环回(loopback)接口是很重要的,思科也建议当你在路由器上配置OSPF时使用环回接口。

环回接口是一个逻辑接口,是虚拟的接口;它们不是真正的路由器接口。在你使用OSPF时配置环回接口可以保证在OSPF进程中总有一个接口是活动的。

环回接口通常用于诊断OSPF配置故障。你需要在路由器上配置一个环回接口的原因是如果没有环回接口那么路由器上的最高ip地址就会变成RID,而RID通常是用来选择DR和BDR通告路由的。
现在假设如果我们没有使用环回接口那么路由器的串行接口作为路由器的RID并且它的ip地址是最高的。如果这个接口故障(down)了,那么网络需要重新选择DR和BDR,虽然这个重新选择的过程处理量不大,但是你想想如果这个接口不断的摇摆(going up/down)呢?这样路由器根本不能完成聚合,因为选择DR不会完成。对于OSPF来说这是一个极其严重的问题。环回接口能够解决这个问题,因为一个虚拟的接口绝不会故障所以路由器的RID也绝不会改变。

注意:默认情况下,OSPF在启动的时候会选择任何活动接口中ip地址最高的作为RID。然而,如果配置有逻辑接口,那么任何逻辑接口中最高的ip地址将做为RID。



Configuring Loopback Interfaces

首先,让我们看看路由器Lab_A的RID,用show ip ospf命令:

Lab_A#sh ip ospf
Routing Process "ospf 132" with ID 192.168.20.1
[output cut]

我们看到RID是192.168.20.1。现在让我们配置一个环回接口使用和当前网络完全不同的ip寻址方案(一般环回接口的地址强烈建议设置为私有地址)

Lab_A#config t
Enter configuration commands, one per line. End with CNTL/Z.
Lab_A(config)#int loopback 0
Lab_A(config-if)#ip address 172.16.10.1 255.255.255.255
Lab_A(config-if)#no shut
Lab_A(config-if)#^Z
Lab_A#


呵呵,我可以肯定你一定会奇怪觉得为什么ip地址掩码要使用255.255.255.255(/32)而不是255.255.255.0呢。是的,两个掩码都能使用,但是一个/32的掩码(叫做主机掩码)能够在环回接口中更好的工作。

这里使用的ip地址并没有什么关系,但每个路由器的ip必须在不同的子网。

Lab_B#config t
Enter configuration commands, one per line. End with CNTL/Z.
Lab_B(config)#int lo0
Lab_B(config-if)#ip address 172.16.20.1 255.255.255.255
Lab_B(config-if)#no shut
Lab_B(config-if)#^Z
Lab_B#


Lab_C#config t
Enter configuration commands, one per line. End with CNTL/Z.
Lab_C(config)#int lo0
Lab_C(config-if)#ip address 172.16.30.1 255.255.255.255
Lab_C(config-if)#no shut
Lab_C(config-if)#^Z
Lab_C#




Verifying Loopbacks and RIDs

确认环回地址,使用show runnning-config命令:

Lab_C#show running-config

hostname Lab_C

interface Loopback0
ip address 172.16.30.1 255.255.255.255
[略]


如果想确定RID,可以使用show ip ospf interface命令,show ip ospf database命令,或者只使用show ip ospf也可以。

Lab_C#sho ip ospf database
OSPF Router with ID (172.16.30.1) (Process ID 64999)
Router Link States (Area 0)
Link ID ADV Router Age Seq# Checksum Link count
172.16.10.1 172.16.10.1 689 0x80000002 0xB404 3
172.16.20.1 172.16.20.1 139 0x8000000A 0x4AB1 5
172.16.30.1 172.16.30.1 138 0x80000002 0x2B14 3




Lab_C#show ip ospf interface
FastEthernet0/0 is up, line protocol is up
Internet Address 172.16.50.1/24, Area 0
Process ID 64999, Router ID 172.16.30.1, Network Type BROADCAST, Cost: 10
Transmit Delay is 1 sec, State DR, Priority 1
Designated Router (ID) 172.16.30.1, Interface address 172.16.50.1
No backup designated router on this network




Lab_C#show ip ospf
Routing Process "ospf 64999" with ID 172.16.30.1 and Domain ID 0.0.253.231
[output cut]



有一点很重要的地方需要记住的就是在设置了环回接口后,新的RID不会即刻生效,直到路由器重启后新的RID才能生效。






Troubleshooting OSPF

这个部分是关于确认OSPF配置和通过配置信息来检测故障,维护和修复OSPF关联。


当你看到这样的配置:
Router(config)#router ospf 1
Router(config-router)#network 10.0.0.0 255.0.0.0 area 0
你必须知道没有任何一个路由器会接受这样的输入,因为反掩码配置错误了。正确配置应该是:
Router(config)#router ospf 1
Router(config-router)#network 10.0.0.0 0.255.255.255 area 0


接着,让我们看一下图6.5,看你能决定哪个路由器是DR么?假设所有的路由器都使用默认的优先级。




注意每个路由器的RID,这些路由器中RID最高的是路由器A和路由器B,因为路由器B的ip地址最高,所以路由器B将成为DR,而路由器A将成为BDR。真的吗??
好,现在让我们注意一件事情:因为在point-to-point的链路上默认不会选择DR和BDR,所以LAN会排除那两个点到点连接的路由器。在CCNA的考试里,最好的答案就是路由器B将会成为DR。

让我们使用另一个命令来检查OSPF的配置:show ip ospf interface。看看下面路由器A,B的输出看你能否检测为什么这两个直接相连的路由器不能建立邻接关系:

RouterA#sh ip ospf interface e0/0
Ethernet0/0 is up, line protocol is up
Internet Address 172.16.1.2/16, Area 0
Process ID 2, Router ID 172.126.1.1, Network Type BROADCAST, Cost: 10
Transmit Delay is 1 sec, State DR, Priority 1
Designated Router (ID) 172.16.1.2, interface address 172.16.1.1
No backup designated router on this network
Timer intervals configured, Hello 5, Dead 20, Wait 20, Retransmit 5



RouterB#sh ip ospf interface e0/0
Ethernet0/0 is up, line protocol is up
Internet Address 172.16.1.1/16, Area 0
Process ID 2, Router ID 172.126.1.1, Network Type BROADCAST, Cost: 10
Transmit Delay is 1 sec, State DR, Priority 1
Designated Router (ID) 172.16.1.1, interface address 172.16.1.2
No backup designated router on this network
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5


两个路由器的输出看起来都很正常,除了Hello和Dead的时间不一样外。路由器A的Hello和Dead的时间分别是5,20而路由器B的Hello和Dead分别是10和40,路由器B的时间是OSPF默认使用的。如果两个直接相连的路由器的时间数值不一样,那么它们将不能形成邻接关系。注意show ip ospf interface命令同样能够显示区域里的DR和BDR路由器。



再看看图6.6,有四个路由器和两种不同的路由协议:



如果所有的参数都是默认的设置并且也没有使用重新分配的话,你认为路由器A会使用什么路径到达路由器D呢?

因为IGRP的AD是100,而OSPF的AD是110,路由器A将会通过路由器C来发送数据包到路由器D。




仔细看图6.7,


你在图上所示的路由器上运行OSPF,通过一个ISDN线路来提供Corporate路由器到remote sales office路由器的连接。

你会在连接remote sales office的Corporate路由器上配置什么类型的路由使得在ISDN线路上的网络开销最小呢?

解决这个问题的最好办法是:撤掉ISDN线路改用宽带线路连接remote office到因特网上,然后通过因特网创建一个从Corporate office到Remote office的VPN。这不是很好嘛?不过,问题问的是我们在ISDN上怎么样才能最小化网络开销。我们能够做的唯一选择就是创建一条从Corporate router到remote office路由器的静态路由,其他的方法都会造成带宽浪费。






Configuring EIGRP and OSPF Summary Routes


这部分内容是关于配置EIGRP和OSPF路由汇总的命令的。虽然OSPF可以通过一些不同的办法来路由汇总,但这里我们只学习最常见的OSPF的路由汇总命令,把多区域的OSPF网络汇总到区域0。

我们在第三章已经学习了怎么检测一个网络的路由汇总,这里我们学习的是怎么在路由器上配置路由汇总。

图6.8显示了一个连续的网络设计,是的,现在还不是连续的网络,我们的目标就是把它变成连续的。


图6.8里有六个网络,使用/30掩码的WAN线路有4个,使用/29掩码的LAN连接有两个。我们的设计使用网络地址192.168.10.64,掩码是255.255.255.224。

在核心路由器上,如果是EIGRP我们将把路由汇总放到E0接口上,使能够通告我们的路由汇总到主干网络上(10.10.10.0网络)。这将阻止我们的六个网络分别发送通告,替换成通告一个路由到互连网络上另外的路由器。然而,这需要强制我们连续网络外的其它路由器不能使用和这个连续网络所使用的掩码255.255.255.224。使得它们通告不一致的路由。下面是一个在核心路由器上配置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

上面配置科自治系统10通告了两个直连的网络192.168.10.0和10.0.0.0。因为EIGRP在基本类型的网络边界上使用自动路由汇总,所以你需要先用no auto-summary来关掉自动汇总。我们把要通告的汇总路由放在连接主干网络的接口上。这个汇总路由告诉EIGRP寻找192.168.10.64/27网络上的所有网络并象通告一个路由那样从E0口输出。这意味着,如果目标ip是192.168.64.1到192.168.95.254的所有数据包都通过这个汇总路由来发送。




下面我们看看在同样的使用OSPF的连续网络上我们是怎么配置的:

[原创]让我们一起CCNA吧系列文章六:EIGRP and OSPF

要把area1汇总到area0,我们使用下面的命令:

Core#config t
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


这里我们不需要用no auto-summary命令,因为OSPF默认不支持自动路由汇总。







Summary

我知道,你会说本章的内容涉及太广泛了。但这章非常重要,EIGRP是本章的一个重点,它是一个混合了链路状态协议和距离向量协议的路由协议。它允许不等价的负载均衡。受控的路由更新和正式的邻居邻接关系。
EIGRP使用可靠传输协议(RTP)来在邻居之间进行通信,利用扩散更新算法(DUAL)来计算最好的路由。
通过一些如支持VLSM,支持不连续网络和路由汇总等特性EIGRP同样支持大型网络。
我也同样介绍了EIGRP的配置,和检测修复故障的命令。


本章告诉你关于OSPF的许多处理过程的信息。虽然在本章或者本书不能介绍完OSPF的全部内容,但是我们已经学习了一些最基本的。这对你以后的学习很有帮助,请牢牢地记住这些内容。

我讲了OSPF的很多内容,包括了术语概念,操作和配置,检查确认等。

虽然这些内容是OSPF的很基本的部分,但是你要好好的掌握住你学习的东西:如配置单区域的OSPF,执行VLSM和连续边界路由汇总等。

最后,我告诉了你许多检测的命令,这些命令对观察OSPF的运行很有用。



                                        12:31 2005-4-5