OSPF是Open Shortest Path First(即“开放最短路由优先协议”)的缩写。它是IETF组织开发的一个基于链路状态的自治系统内部路由协议。在IP网络上,它通过收集和传递自治系统中的链路状态来动态地发现并传播路由;OSPF协议支持IP子网和外部路由信息的标记引入;它支持基于接口的报文验证以保证路由计算的安全性;OSPF协议使用IP Multicasting方式发送和接收报文。
每个支持OSPF协议的路由器都维护着一份描述整个自治系统拓扑结构的数据库——这一数据库是收集所有路由器的链路状态广播而得到的。每一台路由器总是将描述本地状态的信息(如可用接口信息、可达邻居信息等)广播到整个自治系统中去。在各类可以多址访问的网络中,如果存在两台或两台以上的路由器,该网络上要选举出“指定路由器”(DR)和“备份指定路由器”(BDR)。“指定路由器”负责将网络的链路状态广播出去。引入这一概念,有助于减少在多址访问网络上各路由器之间邻接关系的数量。OSPF协议允许自治系统的网络被划分成区域来管理,区域间传送的路由信息被进一步抽象,从而减少了占用网络的带宽。
OSPF使用4类不同的路由,按优先顺序来说分别是:
l区域内路由
l区域间路由
l第一类外部路由
l第二类外部路由
区域内和区域间路由描述的是自治系统内部的网络结构,而外部路由则描述了应该如何选择到自治系统以外目的地的路由。一般来说,第一类外部路由对应于OSPF从其它内部路由协议所引入的信息,这些路由的花费和OSPF自身路由的花费具有可比性;第二类外部路由对应于OSPF从外部路由协议所引入的信息,它们的花费远大于OSPF自身的路由花费,因而在计算时,将只考虑外部的花费。
根据链路状态数据库,各路由器构建一棵以自己为根的最短路径树,这棵树给出了到自治系统中各节点的路由。外部路由信息出现在叶节点上,外部路由还可由广播它的路由器进行标记以记录关于自治系统的额外信息。
OSPF的区域由BackBone(骨干区域)进行连接,该区域以
在同一区域内的所有路由器都应该一致同意该区域的参数配置。因此,应该以区域为基础来统一考虑,错误的配置可能会导致相邻路由器之间无法相互传递信息,甚至导致路由信息的阻塞或者自环等。
由于OSPF协议自身的复杂性,在配置的过程中可能会出现错误。
OSPF协议正常运行的标志是:在每一台运行该协议的路由器上,应该得到的路由一条也不少,并且都是最优路径。
在排除故障之前,应首先检查基本的协议配置是否正确。
使用命令router id Router-id
Router-id可以配置为与本路由器一个接口的IP地址相同,需要注意的是:不能有任何两台路由器的Router ID是完全相同的。
使用命令ospf enable启动协议的运行。该命令是协议正常运行的前提。
使用命令ospf enable area area_id 将接口配置属于特定区域。可通过命令 display ospf interface interfacename来查看该接口是否已经配置成功。
实际运行中可能经常需要引入自治系统外部路由(其他协议如BGP或静态路由)。如果需要,是否已经通过命令import 配置了引入。
由于OSPF协议需要整个自治系统中所有路由器的协调工作,所以任意两台相邻路由器之间的故障都会导致网络中全部或部分路由错误。
如何判断相邻的路由器之间运行正常:
在两台路由器上分别执行display ospf peer命令,查看在相应的接口上是否已发现对端路由器为自己的邻居,并且邻居状态机达到Full状态。需要注意的是:在Broadcast和NBMA类型的网络中,两台接口状态是DROther的路由器之间邻居状态机停留在“2-Way”状态,这是正常的,但都应该与DR之间达到Full状态。两台路由器之间达到Full需要一定的时间,一般在几秒钟至3分钟之间为正常。如果超过这段时间仍旧没有发现邻居或没有达到Full状态,则可以判断为出现故障。若出现故障可按下列几点来检查:
OSPF正常运行需要下层协议来发送和接收报文,所以必须确保下层协议运行无误。可通过ping命令测试,若从本地路由器Ping对端路由器不通,则表明物理连接和下层协议有问题。但需要注意的是:ping命令发送的是单播报文,而OSPF除了在NBMA类型的接口之外,都发送多播报文。所以除了能够ping通对端之外,还必须具有能够收发多播报文的能力。
如果物理连接和下层协议正常,则检查在接口上配置的OSPF参数,必须保证和与该接口相邻的路由器的参数一致。这些参数包括 ospf timer hello, ospf timer dead和authentication-mode。区域(area)号必须相同。网段与掩码也必须一致(点到点与虚连接的网段与掩码可以不同)。这些错误可以通过命令display ospf error来查看。关于常用的OSPF错误值可以参见附录的说明。
按照协议规定,接口上的dead的值必须大于hello,并且至少在4倍以上。否则的话会引起邻居状态之间的震荡。
协议规定,接口的priorty = 0 的路由器没有被选举权,即不能被选为DR或BDR。而在广播或NBMA类型网络中所有的路由器只与DR之间交换路由信息,所以至少应有一台路由器的priority应大于零。
如果一个AREA配置成STUB AREA,则在与这个区域相连的所有路由器中都应将该区域配置成STUB AREA。
两台直接相连的路由器,它们之间的接口的网络类型必须一致。否则可能无法正确计算出路由。查看接口的网络类型可以使用命令display ospf interface,如果发现双方类型不一致,可使用接口配置模式下的命令 ospf network-type 来修改。需要特别注意的是:当两台路由器的接口类型不一致时,双方的邻居状态机仍旧有可能达到Full状态,但无法正确计算路由。
协议规定在NBMA类型的网络中发送单播报文,这样就不能通过发送多播报文来动态发现邻居,所以必须手工指定邻接点的IP地址。
系统规划中的故障主要体现在区域化分中的错误。协议中对区域划分的要求是:如果自治系统被划分成一个以上的区域,则必须有一个区域是骨干区域,并且保证其它区域与骨干区域直接相连或逻辑上相连,且骨干区域自身也必须是连通的。区域划分错误的表现形式是:在一个区域内通常路由都是正常的,但无法得到区域外部的路由。
这是从全局规划的角度来看的,如果落实到具体的配置上,可以这样认为:如果在一台路由器上配置了两个以上的区域,则至少应该有一个是骨干区域,或者配置了一条虚连接。在上图中用此方法判断,配置了两个以上区域的是RTB和RTC,其中RTB符合要求,RTC上由于没有配置骨干区域,所以是错误的配置。表现的形式可能是在RTD上无法得到RTA和RTB的路由,同理,RTA和RTB上也无法得到RTD的路由。修改的方法是将Area0和Area1互相调换一下位置,或者在RTB和RTC之间配置一条虚连接。但这种判断方法只是配置正确的必要条件,而非充分条件。
图5-2 系统规划例如,每台路由器的配置都符合上面的条件,但配置仍旧是不正确的。错误在于骨干区域自身没有连通。改正的方法是:在RTB与RTC之间配置一条虚连接。
如果经过以上分析之后,仍无法定位错误产生的原因,可继续按以下步骤查找。
可以查询一下是否本路由器配置了路由过滤。可查看是否配置了命令distribute list in(在OSPF协议配置模式下)。如果配置,再查询access-list中的访问规则,是否丢失的路由恰好是访问列表中所过滤的。
表现形式为:路由表中的部分或者全部路由表现不稳定,一会儿加上了,一会儿又丢失,且变化很快。这种错误不太好分析,可能由以下几种原因产生:
网络中线路质量不好,导致线路时通时断,造成OSPF 的路由随之不停的更改。可以通过检查相应的链路层协议是否正常来定位问题的原因。
在拨号的情况下,如果是多台路由器同时拨一台路由器时,应将所有的这些拨号的接口类型改为point-to-multipoint。因为缺省的网络类型是point-to-point,如果不加更改的话,当有多台路由器同时拨入时,接入方会在这些拨入的路由器之间不停的选择其中的一个并建立邻接关系。导致路由不稳定。
有可能是自治系统中有两台路由器的Router ID相同了。协议中规定,一台路由器的Router ID应该在整个自治系统中唯一。如果有两台路由器的Router ID相同,协议运行就会出现故障。这两台路由器如果是邻居的话,在相互接收对方的hello报文时会检测到这一错误,导致无法建立邻接关系。如果这两台路由器不是直接相连,而是分别位于自治系统中的两个不同的地方,则表现出的现象是部分路由时断时通。可以通过查看这部分不正常的路由所属的路由器来定位此问题。
某台路由器引入了自治系统外部路由后,却无法在其它路由器上发现这些路由。则很可能是由于本路由器处于一个STUB区域之内,因为按照协议规定,STUB区域内不传播Type5类型的LSA。所以这种类型的LSA即不能由区域外传播进来,也同样不能由区域内传播出去。实际上即使是同一个区域内的其它路由器也无法获得这些路由信息。
通过在ABR上配置路由聚合可以大大减少自治系统中的路由信息,但如果配置不当,也会出现如下问题:
某个区域配置了聚合之后,在其它区域中虽然有聚合后的路由,但未聚合前的路由仍旧存在。出现这种现象的原因多半是因为该区域有两个以上的ABR,用户只在其中一台ABR上配置了聚合命令,而没有在其它的ABR上配置相同的命令。在下图中,Area1内有两个网段
配置了路由聚合之后,路由表显示正常,但却无法PING通某些目的地址。
可能是由于聚合命令配置错误导致。例如在下图中,Area1中内有两个网段
|
|||
| · OSPF路由协议专栏 · 思科路由器产品 · 华为路由器产品 · 路由器模拟器 · AIX操作系统管理应用(.. · 思科路由器配置 · 路由器组网解决方案 · 路由器密码恢复 |
· 无线路由器故障处理 · 路由故障处理手册 · 路由器访问控制列表(AC.. · 路由器的安全配置与安.. · 无线路由器配置 · 路由器技巧 · 华为路由器配置 · 路由器配置基础 |
||
|
|||
| · Java基础教程 · VPN技术 · SQL Server 2005全解 · ARP攻击防范与解决方案 · SOA 面向服务架构 · SQL Server 2005全解 · Java编程开发手册 · 三层交换技术专题 |
· SQL Server入门到精通 · Windows Server 2003企.. · Windows远程桌面应用 · C#技术开发指南 · VPN技术 · Solaris 10 配置管理 · C#技术开发指南 · Windows操作系统安装 |
||
|
|||
| · VPN技术 · ARP攻击防范与解决方案 · SQL Server 2005全解 · Java基础教程 · SQL Server入门到精通 · SQL Server 2005全解 · SOA 面向服务架构 · Java编程开发手册 |
· C#技术开发指南 · 三层交换技术专题 · C#技术开发指南 · Windows远程桌面应用 · Windows Server 2003企.. · 邮件服务器专题 · wimax技术与趋势 · Windows操作系统安装 |
||
| ·DB2 Viper快速入门 ·DB2 9数据库的镜像分割与.. |
·将XML应用程序从DB2 8.x.. ·DB2 9中的pureXML:如何.. |
| ·服务器中的“傻瓜机”在.. ·盖茨也喜欢登录Youtube看.. |
· · |
| · 职场冲浪(之八):让感.. ·职场冲浪(之七):潜心.. |
·人生如鞋 ·职场冲浪(之六):从离梦最.. |
| ·将职业教育职业化 - 各IT.. ·思科交换机上实现MAC地址.. |
·关于51CTO合作出书中的职.. ·OSPF动态路由协议入门简介 |
| · NGN:下一代网络 · 网络访问中断大排查 · FTTx光纤接入 |
· 平凡黑客讲述精彩人生(.. · 平凡黑客讲述精彩人生(.. · 平凡黑客讲述精彩人生(.. |
| · C++是垃圾语言?! · 2007年IT界七大抄袭事件 · Java实用开发全集 |
· 解析Ajax开发框架 走进A.. · 基于Google Maps与Ajax.. · 基于Google Maps与Ajax.. |
| · Ubuntu 中文开源频道 · Solaris基础知识入门 · 微软正式发布英文版Wind.. |
· 服务器基础知识入门 · Rambus第二?看全缓冲内.. · 服务器节能对比测试:AM.. |
| · 甲骨文Oracle 11g正式发.. · Oracle数据库开发之PL/S.. · Oracle数据库开发基础教.. |
· 存储2006,一个并购的大.. · IDC宣布浪潮蝉联存储市.. · 双机热备技术 |