理解OSPF工作原理_第1页
理解OSPF工作原理_第2页
理解OSPF工作原理_第3页
理解OSPF工作原理_第4页
理解OSPF工作原理_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章理解并实施路由技术任务6.3理解基于链路状态的动态路由协议OSPFOSPF(OpenShortestPathFirst,开放式最短路径优先)是一个内部网关协议,OSPF是基于链路状态的路由协议,OSPF支持VLSM、支持快速收敛、协议本身占用的带宽小、使用组播地址(224.0.0.5和224.0.0.6)完成路由更新、用成本(Cost)作为度量值。在思科CCNA认证的范围内,要求只对单区域的OSPF进行掌握,下面对OSPF的工作原理进行描述。任务6.3.1链路状态路由与矢量路由的区别矢量距离路由协议只是单纯地公告自己的路由表,而不关心路由表中的路由记录状态是否良好,而且距离也有限制。比如,RIP的最大连接数就只有15,矢量路由协议的收敛很慢。所谓收敛很慢是指网络环境发生变化时,将所有路由器同步到新环境所需要的时间延迟。链路状态路由协议中的链路事实上是网络设备接口的另一种说法,链路状态路由协议就是指需要关心网络设备接口状态的一种路由协议。OSPF就是典型的链路状态路由协议,OSPF通过相邻路由器接口的状态来建立一个链路状态数据库,然后对该数据库根据一种最短路径树(SPF)的算法计算出最佳路径,最后将最佳路径放入到路由表中。这就是说,基于链路状态的路由协议,不是只公告自己的路由表,而是经历了一个复杂的演算过程后才得到的路由表。另外,链路状态路由协议在理论上是不受连接数目限制的,而且收敛速度很快。所以,基于链路状态的路由协议非常适合用在一个较大的网络环境中。任务6.3.2从人类生活的角度类比并理解RIP与OSPF的区

矢量路由协议:只是单纯地公告自己的路由表,而不去关心路由表中路由记录的状态情况。这就好比你来到一个陌生的城市,想去小镇A,然后你就问这个城市的某个人,我要去小镇A该怎么走?这个人就告诉你:“这是地图,你去找吧!”你拿着这张陌生的地图开始寻找小镇A,这就是一个问题。你拿着这张地图会出现很多种情况,比如:你刚过了几条街,就不能再走了,因为前方在修路,或者你走了几个小时却回到原地。种种情况都是有可能发生的,为什么呢?因为给你地图的那位朋友可能只对这几条街比较熟悉,而对这几条街以外的环境完全不知道。换而言之,他无法估计这个城市中的每一条街道状况是否良好,那么就导致许多问题使你到不了小镇A。但这种方式的优点在于实现寻路简单,开销不大。为什么呢?因为用一张地图就完成了选路,不足点是容易导致寻路时遇到阻碍,如图6.72所示。任务6.3.2链路状态路由协议:只收集路由器最近的链路,确认链路状态良好后,就将链路状态发送给邻居路由器,邻居路由器通过一种SPF的算法找到最短路径后,再将其放入路由表中。这就好比你来到一个陌生的城市,想到达小镇A,这次你不采取单纯的地图来到达小镇A了,而是把去小镇A的整条路线分成几个路段,然后每个路段都有一个相当熟悉这段路程情况的人,当然此人可能也知道怎样走近路。比如:当你走到A段时,问A段的路人,到小镇A该怎么走,然后A段的路人会告诉你,向东走是最佳路径。为什么?因为“北面”和“西面”到不了小镇A,而“南面”正在修路,你无法穿越它。这充分表现出一个熟悉地理环境的人会让你少走很多弯路。然后到达B段时,B段的路人也像A段的路人那样为你指示最佳路径。所以,最终你会用最短的路径到达目标,而且永远不会回到原点,如图6.73所示。任务6.3.2图6.72关于矢量路由协议的一个比喻任务6.3.2链路状态路由协议:只收集路由器最近的链路,确认链路状态良好后,就将链路状态发送给邻居路由器,邻居路由器通过一种SPF的算法找到最短路径后,再将其放入路由表中。这就好比你来到一个陌生的城市,想到达小镇A,这次你不采取单纯的地图来到达小镇A了,而是把去小镇A的整条路线分成几个路段,然后每个路段都有一个相当熟悉这段路程情况的人,当然此人可能也知道怎样走近路。比如:当你走到A段时,问A段的路人,到小镇A该怎么走,然后A段的路人会告诉你,向东走是最佳路径。为什么?因为“北面”和“西面”到不了小镇A,而“南面”正在修路,你无法穿越它。这充分表现出一个熟悉地理环境的人会让你少走很多弯路。然后到达B段时,B段的路人也像A段的路人那样为你指示最佳路径。所以,最终你会用最短的路径到达目标,而且永远不会回到原点,如图6.73所示。任务6.3.2图6.73关于链路状态路由协议的一个比喻任务6.3.3理解并取证:动态路由协议OSPF的工作原理因为动态路由协议OSPF是基于链路状态进行工作的,所以它比RIP的工作过程更复杂,这对于初学者将是一件困难的事情。为了让学习者能更好地理解OSPF的工作原理,在学前必须要有一个清晰的学习思路,而本小节对OSPF的描述过程可以为大家提供一个明确的学习思路。笔者将OSPF的工作过程分为7个步骤,然后分别对这7个步骤中OSPF执行的具体任务进行描述,其中包括OSPF发送的相关消息类型、报文结构,最后取证了相关工作步骤的数据帧。所以读者可以把这7个步骤看成是OSPF工作原理的整体过程,对每个步骤描述的知识点是对过程的详细诠释,如图6.74所示。图6.74OSPF的工作过程与状态任务6.3.3两台路由器在启动OSPF动态路由器协议以前处于Down状态。OSPF动态路由协议正式在两台路由器上启动,路由器R3向网络中发送OSPF的Hello报文,该报文的源地址为192.168.2.3,目标地址为224.0.0.5(该地址是一个组播地址,表示链路上的所有OSPF路由器)。Hello报文的作用是向链路上公告OSPF路由器的存在、发现并建立OSPF的邻居关系、维持OSPF邻居的双向性等。在这一步中Hello报文相当于人类在初次见面时的一个问候“你好!我是…”。当然,路由器R2(192.168.2.2)也会发送相同的报文。所以,在这里相当于路由器R3与R2的相互自我介绍,为形成邻居做好准备。那么现在我们需要来详细分析Hello报文的结构,再取证对应的数据帧。Hello报文的结构如图6.75所示,对应的数据帧取证如图6.76所示。在该步骤中,重点理解如下字段的作用与意义。任务6.3.3图6.75

OSPF的Hello报文结构图6.76Hello报文的数据帧任务6.3.3版本:指示当前OSPF的版本,工作于IPv4的OSPF是V2版本,工作于IPv6的OSPF是V3版本,而当前路由器R3工作在IPv4环境中,所以其版本号为2,如图56.76Hello报文的数据帧所示。类型:指示当前OSPF数据包的类型,一般情况下OSPF使用5种类型的数据包:1型为Hello报文;2型为数据库描述;3型为OSPF的链路状态请求;4型为OSPF的链路状态更新;5型为OSPF的链路状态确认。当前在第二步中的类型应该为1,如图6.76Hello报文的数据帧所示。数据包长度:指示OSPF数据包的长度,包括数据包头部的长度,当前的长度为44,如图6.76Hello报文的数据帧所示。路由器ID:指示始发Hello报文路由器的ID,当前的始发路由器是R3,如图6.76Hello报文的数据帧所示,其路由器ID为3.3.3.3。区域ID:指示始发Hello报文路由器所在的OSPF区域,当前路由器R3处于OSPF区域0(主干区域),所以区域ID的值为0.0.0.0,具体如图6.76Hello报文的数据帧所示。校验和:对整个OSPF分组的校验和。认证类型:该字段指示认证的类型码,通常有三个值,0表示没有使用认证(nullauthentication);1表示使用普通的明文认证;2表示认证的类型为MD5。任务6.3.3认证数据:如果是明文认证,该字段指示认证的密钥字符串内容;如果是消息摘要认证(MD5),这个字段将被定义成64个比特的其他参数。网络掩码:指示发送OSPF数据包接口地址的网络掩码,如果接收该数据包的接口网络掩码与之不匹配,那么接收方将丢弃该数据包,目标在于形成OSPF邻居前的精确匹配。当前路由器R3的网络掩码为255.255.255.0,如图6.76Hello报文的数据帧所示。Hello间隔:指示OSPF路由器接口发送Hello数据报文的间隔时间,该值为周期性发送时间值,默认10秒为一个发送周期,如图6.76Hello报文的数据帧所示。可选项:表示OSPF路由器支持的更多可选特性,该字段在CCNA范围内不要求掌握。路由器的优先级:指示发送Hello报文路由器的优先级,该字段将直接影响OSPF路由器DR与BDR的选举,在默认情况下该字段的值为1。关于它如何影响DR与BDR的选举,将在OSPF工作原理的第四步“准启动”状态中详细描述。路由器无效时间间隔:指示路由器R3在宣告OSPF邻居路由器无效之前,将要等待从邻居路由器发出的Hello包的时间长度,一般情况下,默认为40秒,是Hello周期时间的4倍,如图6.76Hello报文的数据帧所示。任务6.3.3邻居:列出已经通过Hello协商形成OSPF邻居的路由器,因为现在路由器R3在第二步中正处于与R2的Hello协商的初始状态,所以邻居关系还没有形成,如图6.76Hello报文的数据帧所示,暂时没有列出路由器R2成为自己邻居的列表。注意:关于上面所描述的Hello报文路由器R2也会发送,其意义与R3发送的Hello报文基本相同,这里不再重复描述。任务6.3.3当完成初始状态后,在路由器R3的邻居表中可见R2,并告诉R2,“我可以看见你了”,R2也是一样,此时进入双向状态,表示OSPF的邻居关系正式形成。如图6.77所示,在路由器R3与R2的Hello报文中可以清晰地看到对应的邻居关系。图6.77彼此的Hello报文中列出邻居任务6.3.3接下来是进入准启动(Exstat)状态,准启动状态一个很重要的任务就是选举DR与BDR。那么首先需要理解什么是DR,什么又是BDR。DR(DesignatedRouter)是指定路由器,在多路访问链路上(比如:以太网),存在至少两个通信点以上的情况,多则成百上千,如果这些在多路访问链路上的OSPF路由器任意地去建立邻居关系,任意洪泛链路状态更新报文,那么将是一件很恐怖的事情,如图6.78所示,所以需要在OSPF多路访问链路上指定一台路由器(DR),让它来负责与该链路上的其他OSPF路由器建立邻居关系并统一洪泛链路状态更新报文,这在OSPF的多路访问网络上将是一项很伟大的设计。图6.78网络中没有DR与有DR的对比示意图任务6.3.3BDR(BackupDesignatedRouter)是备份指定路由器,它的作用是当DR出现故障时,BDR将接替DR的工作,如图6.79所示。图6.79网络中DR出现故障后BDR接替DR的工作注意:在OSPF多路访问链路上,当OSPF路由器数量很少时,体现不出DR的作用,在这里为了进一步体现DR的作用,现在来做一个数学计算。在多路访问链路上OSPF的邻居关系是成2次方的方式增长的,可以通过数学公式n(n-1)/2来确定要建立的邻居关系数量,其中n表示路由器的台数。通过这个公式可以计算得到如表6.2所示的有无DR情况下的OSPF邻居关系建立参考数量,相信这已有足够的说服力,证明DR的意义。任务6.3.3存在OSPF路由器的数量没有DR情况下的邻居关系数有DR情况下的邻居关系数1002113324635104615572168287936810459100495099表6.2关于OSPF邻居数量与关系的对照任务6.3.3在理解了DR与BDR的意义后,现在需要理解DR与BDR的选举原则。(1)首先是最高OSPF优先级的路由器成为DR,次高的成为BDR。(2)在默认情况下所有OSPF路由器的优先级都是一样的,那么具有最大路由器ID的OSPF路由器成为DR,次大路由器ID的OSPF路由器成为BDR。(3)因为路由器ID是OSPF的可选配置项,换而言之,如果用户没有为OSPF路由器配置路由器ID,那么具有最大环回接口IP地址的路由器成为DR,次大环回接口IP地址的路由器成为BDR。(4)如果没有为OSPF配置环回接口,那么在活动的物理接口上,有最大IP地址的路由器成为DR,次大IP地址的路由器成为BDR。在本小节所描述的环境中,路由器R3与R2的OSPF优先级一样,而路由器R3有较高的路由器ID,所以R3将成为该环境中的DR,如图6.80所示的数据帧为DR与BDR选举的结果。一旦DR和BDR选举成功,其他OSPF路由器就都只和DR或者BDR建立邻居关系,其他的OSPF路由器使用224.0.0.6这个组播地址将链路状态更新数据包发送到DR和BDR,因为只有OSPF路由器的DR和BDR侦听224.0.0.6这个组播地址。而DR使用224.0.0.5这个组播地址将链路状态更新数据包发送到所有的OSPF路由器。任务6.3.3图6.80关于Hello报文中的DR与BDR注意:路由器R3与R2能够知道对方的OSPF优先级与路由器ID。是因为在OSPF工作原理的第二步中发送的Hello报文中描述了。任务6.3.3当DR与BDR被成功选举后,在这一步中将进入OSPF的交换状态,在该环境中路由器R3会发送链路状态数据库的描述消息(DBD分组),该消息属于OSPF的2型消息。首先需要理解什么是链路状态描述消息,它的报文格式是怎么样的。链路状态描述消息是描述发起该消息的路由器的数据库中的一些LSA(链路状态公告)信息,以便接收路由器能够确定所收到的LSA公告在其数据库中是否存在。说得更具体点,该消息描述了某台路由器的链路类型、接口、接口状态、不同链路类型的出站成本等,这个过程是所有的矢量动态路由协议无法实现的,这也正是基于链路状态路由协议的优势。数据库描述消息(DBD)报文的结构如图6.81所示,路由器R3发送给R2的数据库的描述消息(DBD分组)数据帧如图6.82所示。图6.81OSPF的DBD报文结构任务6.3.3接口MTU:是指数据包在不分段的情况下,始发路由器接口可以发送的最大IP数据包大小。在该步骤中路由器R3的MTU值为1500,如图6.82所示。可选项:指示在DBD描述报文中,使用路由器可以选择不转发某些LSA到那些没有支持能力的路由器上,该选项不在思科CCNA认证的知识范围内,所以在这里不做重点描述。图6.82

OSPF的DBD数据帧任务6.3.3I位:是初始位(InitialBit)的缩写,通常DBD报文是一系列地进行发送,如果是这一系列数据报文中最初的一个,那么该DBD报文的I位将被设置为1,后续报文会将该位设置为0。M位:是更多位(MoreBit)的缩写,通常DBD报文是一系列地进行发送,如果不是这一系列数据报文中最后的一个,那么该DBD报文的M位将被设置为1,最后一个DBD报文会将该位设置为0。MS位:在OSPF链路状态数据库同步时,两台OSPF路由器是需要一个“主从”关系的协调来完成数据库同步,如果MS位被设置为1,那么被设置的这台路由器就是“主从”关系协调中的主控路由器。“从”路由器的该位通常是0,在该环境中,路由器R3是一台“主”控路由器,所以它发送的DBD报文的MS位被设置成1,具体如图6.82所示。DBD的序列号:该字段指示在数据库同步过程中,用来确保路由器能够收到完整的数据库描述数据包序列,这个序列号由“主”路由器在最初发送的DBD报文中设置一个唯一的数值,然后后面发送的DBD报文的序列号将依次增加。在该环境中,DBD序列号为1786,具体如图6.82所示。LSA头部:该字段指示发送DBD描述的OSPF路由器数据库中的LSA头部。在LSA头部中已经有足够的信息标识一个LSA的实例。关于LSA头部的具体字段,稍后会在“理解LSA头部”部分做详细描述。任务6.3.3理解LSA头部因为DBD报文中包括了LSA头部,所以需要分析LSA头部的结构,并取证它的结构。关于LSA头部的结构,如图6.83所示,相关的具体字段的意义如下。老化时间:指示始发路由器从发出LSA后所经历的时间,以秒为单位,如图6.82所示的老化时间为28秒。可选项:该字段指示在部分OSPF域中LSA能够支持的可选功能,该选项不在思科CCNA认证的知识范围内,所以在这里不做重点描述。图6.83关于LSA头部的结构任务6.3.3类型:指示LSA的类型,一般LSA存在11种类型,但在CCNA认证部分主要介绍两种类型的LSA,其中类型1的LSA表示路由器的LSA,类型2的LSA表示网络的LSA。链路状态ID:这个字段将根据LSA的类型来确定,因为LSA的类型不同,链路状态ID就不同。比如,如果是1型的LSA(路由器的LSA),对应的链路状态ID字段就应该是始发路由器的ID;如果是2型的LSA(网络的LSA),对应的链路状态ID字段就应该是网络中DR接口上的IP地址。在如图6.82所示的数据帧中,因为是路由器的LSA,所以对应的链路状态ID就是始发路由器R3的ID:3.3.3.3。通告路由器:该字段指示始发路由器的ID,如图6.82所示,显示该字段的值为路由器R3的ID:3.3.3.3。序列号:该字段指示当始发路由器产生新的LSA时,这个序列号就会增加,目的在于接收端可以清晰地识别最新的LSA公告。在如图6.82所示的数据帧中,路由器R3发送的LSA的序列号是0X80000002。校检和:该字段指示除了“老化时间”以外的所有LSA全部信息的校检和。为什么在计算校检和时要排除“老化时间”字段?因为如果不排除该字段,那么随着老化时间的增大,每次都需要重新去计算校检和,这是一件非常不科学的事情。长度:指示LSA的长度,在如图6.82所示的数据帧中,路由器R3发送的LSA的长度为48个字节。任务6.3.3当路由器R3发送了链路状态数据库的描述消息(2型),路由器R2收到该消息后,查看自己的链路状态数据库,如果自己没有R3发来的链路状态信息,或者说不是最新的信息,路由器R2就会发送链路状态请求消息(LSR),该消息属于OSPF消息类型3,去请求链路状态的更新。整个第五步属于OSPF的交换状态。现在来描述路由器R2发送LSR消息的报文结构并取证LSR报文的数据帧。关于链路状态请求消息(LSR)报文的结构如图6.84所示,所对应路由器R2发给R3的LSR的数据帧如图6.85所示。关于链路状态请求消息(LSR)报文中的各个字段在前面已经有详细描述,这里不再重复。图6.84关于OSPF的链路状态请求消息报文的结构任务6.3.3图6.85关于OSPF的链路状态请求消息的数据帧注意:在第五步中存在两个过程,即消息类型2的OSPF数据库描述(DBD)和消息类型3的OSPF链路状态请求(LSR),这两个过程都属于OSPF的交换过程,交换过程并没有真正地更新各自路由器的链路状态。而链路状态的真正更新是接下来的第六步——OSPF的载入过程也叫更新过程。任务6.3.3当路由器R3收到R2发来的链路状态请求消息(LSR)后,它会向路由器R2发送链路状态更新消息(LSU),该消息属于OSPF的消息类型4。LSU的报文结构如图6.86所示,路由器R3发给R2的LSU的数据帧如图6.87所示。除OSPF的报头外,该消息只有两个关键字段。图6.86OSPF的链路状态更新消息的报文结构图6.87OSPF的链路状态更新消息数据帧任务6.3.3更新LSA的数目:该字段指示在链路状态更新消息中包含的LSA的数量,在该环境中,在路由器R3发给R2的LSU消息中,更新LSA的数目字段值为2,如图6.87所示。链路状态公告(LSA):该字段指示在链路状态更新消息中所携带的具体LSA的内容。一个链路状态更新消息可以携带多个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论