版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
OSPF协议原理及配置链路状态路由选择协议也称为最短路径优先协议或分布式数据库协议基于Dijkstra的著名算法而设计链路状态协议的例子:OpenShortestPathFirst(OSPF)forIPTheISO'sIntermediateSystem-to-IntermediateSystem(IS-IS)forCLNSandIPDEC'sDNAPhaseVNovell'sNetWareLinkServicesProtocol(NLSP)基本功能每台路由器与它的邻居之间建立联系,这种联系叫做邻接关系每台路由器向每个邻居发送被称为链路状态通告(LSA)的数据单元每台路由器在数据库中保存一份它所收到的LSA的备份,如果所有路由器工作正常,它们的数据库应该相同整个网络拓扑数据库(也叫链路状态库)由Dijkstra算法使用,通过对网络图进行计算得出到每台路由器的最短路径邻居邻居发现是建立链路状态环境并运行的第一步,这一步使用Hello协议Hello数据包包含路由器ID和发送数据包的网络地址,路由器ID可以将发送该包的路由器与其他路由器惟一区分开来当两台路由器已经互相发现并将对方视为邻居时,要进行数据库同步过程,直到数据库相同为止除建立邻接关系之外,Hello数据包还作为监视邻接关系的握手信号。典型的Hello数据包交换间隔为10s,典型的死亡周期是数据包交换间隔的4倍。
链路状态泛洪建立邻接关系之后,路由器开始发送LSA邻居路由器保存接收到的LSA,并依次向自己每个邻居转发(除了发送该LSA的邻居)泛洪扩散过程是链路状态协议中最复杂的一部分两个过程对泛洪扩散极为重要的:排序和老化序号
数据包中的TTL值可以终止过期的数据包(位于IP首部的一个字段)但是不能有效地控制LSA在网络中漫游序号(续)当拓扑发生变化时,通告该变化的LSA在整个网络上扩散序号(续)当路由器发送LSA时,每个拷贝中的序号都是一样的这个序列号和LSA的其他部分一起被保存在路由器的拓扑数据库中当路由器收到数据库中已存在的LSA并且序号相同时,将丢弃这些信息如果信息相同但是序号更大,那么接收的信息和新序号被保存到数据库中,并且泛洪扩散该LSA序号(续)设网络172.22.4.0发生故障之后立即恢复正常:路由器A可能会发出序号为166的通告网络故障的LSA,接着再发送序号为167通告网络正常的LSA路由器C先后接收到沿路径A-B-C扩散过来的LSA,分别是关于网络发生故障和故障恢复的通告,接着C又收到沿路径A-D-E-F-C扩散过来的关于网络故障的LSA如果使用序号,路由器C的数据库可以显示来自路由器A的LSA的序列号为167,而后面到达的LSA序列号为166,因此该LSA被认为是过时的信息而被丢弃线性序号空间一种解决办法是使用一个非常大的线性序号空间,以至于根本不可能到达其上限例如,如果使用32位序号字段,那么从0开始将有232=4,294,967,296个可用序列号,即使路由器每10s产生一个新的状态数据包,也需要花1361年才能用尽所有序列号线性序号空间(续)如果一个链路状态路由选择进程用完了所有序列号,那么在重新使用最低序列号之前必须停止,并等待它所发出的LSA在所有数据库中都不再被使用
如果一个路由器故障重启,其邻居仍然在数据库中保留了该路由器最近的序号,那么越小的序列号也就是越旧的序列号,因而都会被忽略丢弃路由选择进程必须一直等到网络上所有陈旧的LSA都消失为止ExplainWhy?一个更好的解决方案如果一台重新启动的路由器向邻居发送LSA的序号比邻居保存的序列号还要老,那么邻居会发回自己保存的LSA和序号.该路由器从中知道启动前自己最近曾经使用过的序号,并作出相应的调整需要注意的是,最近使用过的序号不能接近上限,否则重新启动的路由器将不得不再次重新启动循环序号空间另一种方法是使用循环序号对于32位序号,当序号到达232–1(0xFFFFFFFF)时再返回0循环序号会形成一个奇怪的逻辑:
如果x是一个位于
1(含)与
4,294,967,295(含)的数,那么有:0<x<0循环序号空间(续)引入两条规则来确定一个序号比另一个序号更大或更小给定一个序号空间n
和两个序号a
与b,在满足下列两个条件之一时认为a比b更大:
a
>
b,
且
(a-
b)
<=
n/2
a
<
b,
且
(b
-
a)
>
n/2
6-Bit循环序号空间
n
=
26
=
64,so
n/2
=
32.
6-Bit循环序号空间(续)给定两个序号48和18,由规则1得:48比18更新
48
>
18
且
(48
-
18)
=
30
且
30
<
32.
给定两个序号3和48,由规则2得:3比48更新
3
<
48
且
(48
-
3)
=
45
且
45
>
32.
给定两个序号3和18,由规则1得:18比3更新
18
>
3
且
(18
-
3)
=
15
且
15
<
32.
6-Bit循环序号空间(续)假设一台工作不正常的路由器突然发送了3个相同的且序列号为44(101100)的LSA。它的一个邻居也发生了故障—丢掉了几位数据,假设丢失的数据位是第2个LSA和第3个LSA序号中的1位,然后该邻居路由器向外泛洪扩散了这3个LSA,结果造成了三个相同的LSA的序号各不相同:44(101100)40(101000)8(001000)
应用循环规则可得:44比40更新,40比8更新,而8又比44更新!
这个结论将使3个LSA都持续扩散下去,数据库也不断地被最新的LSA更新,直到数据库缓冲被塞满,CPU超载为止,最终使得整个网络崩溃棒棒糖形的序号空间由RadiaPerlman博士提出棒棒糖地址空间使用了有符号数,范围是-k<0<k。从-k到-1的负数计数形成了一根直棒,而从0到k的正数则形成了环形空间给定两个数a
和b
以及序号空间n,b比a更新当且仅当:a<0且a<b,或a>0,a<b,且(b-a)<n/2,或a>0,b>0,a>b,且(a-b)>n/2棒棒糖形的序号空间(续)注:-N(-231或0x80000000)和N-1(231-1或0x7FFFFFFF)未被使用棒棒糖形的序号空间(续)假设路由器发生重启,重启前最后一个被发送的LSA序号是0x00005de3路由器重启后,当它与邻居同步数据库时,发送的序号是0x80000001(-N+1)邻居检查自己的数据库后发现该路由器重启前的LSA序号为0x00005de3,邻居将把这个保存的LSA发送给重启的路由器重启路由器记录下这个序号为正数的ISA棒棒糖形的序号空间(续)原始OSPFv1(RFC1131)使用了棒棒糖形序号空间OSPFv2(由RFC1247定义)采纳了线性空间和棒棒糖形空间的最佳特性:开始时像棒棒糖形序号数一样使用了从0x80000001开始的有符号数空间当序号变为正数时,序号空间持续保持线性增长直至到达最大数0x7FFFFFFF为止在到达最大值时需要重启,在重启之前,0SPF进程必须从所有链路状态数据库中删除LSA老化
老化过程为泛洪扩散过程增加了另一层可靠性协议为网络定义了一个最大年龄差距(MaxAgeDiff)值路由器可能接收到一个LSA的多个副本,其中序号相同,但年龄不同:如果年龄差距小于MaxAgeDiff,那么认为是由于网络的正常时延造成了年龄的差异,因此数据库原有的LSA继续保存,新收到的LSA不被扩散而丢弃如果年龄差距超过MaxAgeDiff,那么认为网络发生了异常,因为新发送的LSA的序号没有增加。此时新的LSA被保存下来,并将被扩散出去用于OSPF的典型MaxAgeDiff值为15minMaxAge
和LSRefreshTime保存在数据库中的LSA的年龄会不断增加。如果链路状态记录的年龄增加到最大年龄值(MaxAge),那么一个带有MaxAge值的LSA将被泛洪扩散到所有邻居,邻居随即从数据库中删除相关记录链路状态刷新定时器(LSRefreshTime)用于定期确认LSA并且在LSA到达最大年龄之前将其年龄定时器复位。也就是说,一旦刷新定时器超时,路由器将向所有邻居泛洪扩散新的LSA,收到的邻居把有关LSA的年龄设置为新接收到的年龄OSPF定义MaxAge为1小时,LsRefreshTime为30min链路状态数据库
建立链路状态数据库是链路状态路由选择协议的另一个主要任务链路状态数据库把LSA作为一连串记录予以保存
对于路由器链路信息,使用三元组(路由器ID,邻居ID,代价)来通告路由器的邻接邻居,其中的代价是指连接该邻居的链路的费用对于末梢网络信息,使用三元组(路由器ID,网络ID,代价)来通告路由器直接连接的末梢网络(即没有邻居的网络)链路状态数据库(续)链路代价是按照接口的出站方向计算的;在同一条链路上的所有接口的代价没有必要完全相同拓扑或链路状态数据库的例子路由器ID邻居费用RARB2RARD4RARE4RBRA2RBRC1RBRE10RCRB5RCRF2RDRA4RDRE3RDRG5RERA5RERB2RERD3RERF2RERG1RERH8RFRC2RFRE2RFRH4RGRD5RGRE1RHRE8RHRF6SPF算法
Dijkstra算法的原始描述(来自其论文)构造一棵树,使每个节点之间的总长最小前提条件:分枝被分成3个集合:I:被明确分配给构造中的树的分枝II:从中选择下一个分枝被添加到集合IIII:剩余的分杖(抛弃的或不考虑)节点被分成2个集合:A.被集合I中的分枝连接的节点B.剩余的节点(集合II中有且仅有一个分枝将指向其中的每一个节点)SPF算法(续)
先选择任意一个节点作为集合A中仅有的成员,并将所有以该节点为端点的分枝放入集合II中。开始时集合I是空的,然后重复执行下面两步:步骤⒈集合II中最短的分枝被移出并加入集合I。结果是一个节点从集合B传送到集合A;步骤⒉考虑从该节点(刚才被传送到集合A中的那个节点)通向集合B中节点的每一个分枝,如果构建中的分枝长于集合II中相应的分枝,那么这个分枝被丢弃;否则用它替代集合II中相应的分枝,并且丢弃后者。接着我们回到第1步并重复此过程,直到集合II和集合B为空。集合I中的分枝形成所要求的树。SPF算法(续)
路由器采用的Dijkstra算法:步骤I:路由器初始化树数据库,将自己作为树的根。这表明路由器作为它自己的邻居,代价为0步骤2:在链路状态数据库中,所有描述通向根路由器邻居链路的三元组被添加到候选对象数据库中步骤3:计算从根到每条链路的代价,候选对象数据库中代价最小的链路被移到树数据库中。如果两个或以上的链路离根的最短代价相同,选择其中一条步骤4:检查添加到树数据库中的邻居ID。除了邻居ID已在树数据库中的三元组之外,链路状态数据库中描述路由器邻居的三元组被添加到候选对象数据库中步骤5:如果候选对象数据库中还有剩余的表项,则回到第3步;如果候选数据库为空,那么终止算法。在算法终止时,在树数据库中,每个单一的邻居ID表项将表示1台路由器,到此最短路径树构造完毕。运行SPF算法候选库到达根的费用树库说明
RA,RA,0路由器A把自己加入树库,作为根RA,RB,2RA,RD,4RA,RE,4244RA,RA,0把RA的链路到达的所有的邻居加入候选列表RA,RD,4RA,RE,4RB,RC,1RB,RE,1044312RA,RA,0RA,RB,2(RA,RB,2)是候选列表中费用最低的链路,因此将其加入树库。
将RB的所有未在树库的邻居加入候选列表。从(RA,RE,4)到达RE的链路费用比(RB,RE,10)更低,因此将后者从候选列表中删除运行SPF算法(续)RA,RD,4RA,RE,4RC,RF,2445RA,RA,0RA,RB,2RB,RC,1(RB,RC,1)是候选列表中费用最低的链路,因此将其加入树库。将RC的所有未在树库的邻居加入候选列表。RA,RE,4RC,RF,2RD,RE,3RD,RG,54579RA,RA,0RA,RB,2RB,RC,1RA,RD,4(RA,RD,4)与(RA,RE,4)从根RA开始的费用都是4;而(RC,RF,2)的费用是5。因此(RA,RD,4)被加入树库,并将RD的所有未在树库的邻居加入候选列表。从根RA到达RE的更高费用的路径被删除运行SPF算法(续)RC,RF,2RD,RG,5RE,RF,2RE,RG,1RE,RH,8596512RA,RA,0RA,RB,2RB,RC,1RA,RD,4RA,RE,4(RA,RE,4)被加入树库,而RE的未在树库的邻居被加入候选列表。到达RG的更高费用的路径被删除RE,RF,2RE,RG,1RE,RH,8RF,RH,465129RA,RA,0RA,RB,2RB,RC,1RA,RD,4RA,RE,4RC,RF,2(RC,RF,2)*被加入树库,而RF的未在树库的邻居被加入候选列表。到达RH的更高费用的路径被删除*注:当然也可以选择(RE,RG,1)因为它的从根RA开始的费用也是5。
运行SPF算法(续)RF,RH,49RA,RA,0RA,RB,2RB,RC,1RA,RD,4RA,RE,4RC,RF,2RE,RG,1(RE,RG,1)被加入树库,而RG没有未在树库的邻居,因此没有新的链路被加入候选列表中。(RE,RF,2)被丢弃,因为从根RA到达RF的路径RA-RE-RF的费用为6,而在树库中RA-RB-RC-RF的费用为5
RA,RA,0RA,RB,2RB,RC,1RA,RD,4RA,RE,4RC,RF,2RE,RG,1RF,RH,4(RF,RH,4)是候选列表中费用最低的链路,因此将其加入树库。此时候选列表已经为空,因此算法结束,最短路径树完成。区域一个区域是构成一个网络的路由器的一个子集。将网络划分为区域是针对链路状态协议的3个不利影响所采取的措施:必要的数据库要求内存的数量比距离矢量协议更多复杂的算法要求CPU时间比距离矢量协议更多
链路状态泛洪扩散数据包对可用带宽带来了不利的影响,特别是不稳定的网络使用区域减少系统LS需要的资源OSPFv2开放最短路径优先协议(OSPF)是由Internet工程任务组(IETF)开发的路由选择协议,用来替代存在问题的RIP协议OSPF协议是IETF建议使用的内部网关协议(IGP)OSPF协议是一个链路状态协议,使用Dijkstra的最短路径优先(SPF)算法,而且是开放的OSPFv1(RFC1131)只在实验平台使用;OSPFv2是目前IPv4协议仍然使用的版本,最初在RFC1247中说明的,最新是在RFC2328中说明OSPFv2协议的主要特点使用了区域的概念,这样可以有效地减少路由选择协议对路由器的CPU和内存的占用。划分区域还可以降低路由选择协议的通信量,这使构建一个层次化的网络拓扑成为可能完全无类别地处理地址,排除了不连续子网这样的有类别路由选择协议的问题支持无类别路由表查询、VLSM和用来进行有效地址管理的超网技术支持无大小限制的、任意的度量值支持使用多条路径的效率更高的等价负载均衡使用保留的组播地址来减小对运行0SPF的设备的影响支持更安全的路由选择认证使用可以跟踪外部路由的路由标记OSPFv2操作1.0SPF路由器从所有启动0SPF协议的接口上发出Hello数据包。如果共享一条公共链路的路由器能够相互成功协商某些参数,那么它们就成为了邻居2.建立邻接关系:邻接关系可以想象成为一条点到点的虚链路,是在一些邻居路由器之间构成的关系。邻接关系的建立是由交换Hello信息的路由器类型和交换Hello信息的网络类型确定的3.每个路由器都会在所有形成邻接关系的邻居之间发送链路状态通告LSA。LSA描述了路由器所有的链路、接口、邻居以及链路状态信息OSPF定义了许多LSA类型4.每个收到来自邻居的LSA的路由器把这些LSA记录在自己的链路状态数据库中,并将其扩散到自己的其他所有邻居5.通过LSA泛洪扩散到整个区域,所有的路由器将形成相同的链路状态数据库6.当所有路由器的数据库完全相同时,每个路由器都以自身为根,使用SPF算法来计算一个无环路的算法树7.每个路由器利用SPF算法树构建自己的路由表路由器ID(RouterID)路由器ID用于在0SPF区域内惟一标识一台路由器。一台0SPF路由器对其他0SPF路由器的跟踪也是利用路由器CISCO路由器使用下面的方法确定路由器ID:如果使用router-id命令手工配置RouterID,就使用该RouterID如果没有手工配置RouterID,路由器就选取它所有的回送(loopback)接口上数值最高的IP地址作为RID如果路由器没有配置IP地址的loopback接口,那么路由器将选取它所有的物理接口上数值最高的IP地址作为RIDHello协议Hello协议可用于下列几个目的:用于发现邻居路由器在两台路由器成为邻居之前,通告相互认可的几个参数邻居路由器之间担当Keep-alive的角色确保邻居路由器之间的双向通信用于在一个广播网络或非广播多路访问(NBMA)网络上选取指定路由器(DesignatedRouter,DR)和后备指定路由器(BackupDesignatedRouter,BDR)HelloIntervel和RouterDeadIntervel0SPF路由器周期性地从启动0SPF协议的每个接口上发送Hello数据包。该周期性的时间段称为Hello时间间隔(HelloIntervel),每个接口都有对应的Hello间隔时间在CISCO路由器上,对于广播型网络,缺省Hello时间间隔是10s;对于非广播型网络,缺省值是30s。可以通过命令:ip
ospfhello-interval来更改如果一台路由器在一个称为路由器无效时间间隔(RouterDeadIntervel)的时间段内还没有收到来自邻居的Hello数据包,那么将宣告它的邻居路由器无效在CISCO路由器中,路由器无效时间间隔的缺省值是Hello时间间隔的4倍,可以通过命令ip
ospfdead-interval修改Hello包的内容每个Hello数据包都包含以下信息:始发路由器的路由器始发路由器接口的区域ID始发路由器接口的地址掩码始发路由器接口的认证类型和认证信息始发路由器接口的Hello时间间隔始发路由器接口的路由器无效时间间隔路由器的优先级指定路由器(DR)和备份指定路由器(BDR)标识可选性能的5个标记位始发路由器的所有有效邻居的路由器ID,这个列表仅包含一些所谓有效的邻居路由器,即在最近的路由器无效时间间隔内,始发路由器接口可以从其接收到Hello数据包邻接关系建立的必要条件当一台路由器从它的邻居路由器收到一个Hello数据包时,将检验该Hello数据包携带的下列信息:区域ID认证信息网络掩码Hello间隔时间路由器无效时间间隔其它可选项如果这些数值都与接收接口上配置的对应值相匹配,那么就可以建立邻接关系;如果不匹配,那么该数据包将被丢弃,且邻接关系也无法建立双向通信关系如果Hello包的所有参数都匹配,那么这个包就是有效的。如果始发路由器的路由器ID已在接收该包的接口的邻居表中列出,那么路由器无效时间间隔定时器将被复位如果始发路由器的路由器ID没有在邻居表中列出,那么就把这个路由器ID加入到它的邻居表中路由器发送一个Hello包时,都会在这个包中列出传送该数据包的链路上出现并记录的邻居的路由器ID。如果一台路由器收到了一个有效的Hello包,并在这个包中发现了自己的路由器ID,那么它就认为是双向通信已经建立成功邻接关系的形成条件一旦双向通信成功建立,邻接关系也就可能建立了,但并不是所有的邻居路由器都会成为邻接对象邻接关系的形成与否是依赖于这两台互为邻居的路由器所连网络的类型;而且网络类型也影响0SPF数据包传送的方式网络类型OSPF协议定义了以下5种网络类型:(1)点到点网络(2)广播型网络(3)非广播多路访问(NBMA)网络(4)点到多点网络(5)虚链路网络类型(续)点到点网络:像T1、DS-3或SONET链路等,是连接单独一对路由器的。在点到点网络上的有效邻居总是可以形成邻接关系。在这些网络上的0SPF数据包的目的地址也总是保留的D类地址224.0.0.5,这个组播地址称为AllSPFRouters。网络类型(续)广播型网络:像以太网、令牌环网和FDDI等,都属于广播型多址网络,这种多址网络可以连接多于两台的设备,而且连接在这种网络上的所有设备都可以接收到某个传送的数据包。广播型网络上的0SPF路由器会选举一台指定路由器和一台后备指定路由器。Helllo数据包以组播方式发送到AllSPFRouters(224.0.0.5),MAC组播地址是0100.5E00.0005。其他所有的路由器都将以组播方式发送链路状态更新数据包和链路状态确认数据包保留的D类地址224.0.0.6,这个组播地址称为AllDRouters,对应的MAC组播地址是0100.5E00.0006网络类型(续)非广播多路访问(NBMA)网络:像X.25、帧中继和ATM等,可以连接两台以上的路由器,但它们没有广播数据包的能力。一台位于在NBMA网络上的路由器发送的数据包将不能被其他与之相连的路由器收到。因此在这些网络上的路由器必须增加另外的配置来获得它们的邻居。此外,在NBMA网络上的0SPF路由器需要选举DR和BDR,并且所有的0SPF数据包都是单播的。网络类型(续)点到多点网络:点到多点网络是NBMA网络的一个特殊配置,可以被看作是一群点到点链路的集合。在这些网络上的0SPF路由器不需要选举DR和BDR,0SPF数据包以单播方式发送给每一个已知的邻居网络类型(续)虚链路:可以被路由器认为是没有编号的点到点网络的一种特殊配置。在虚链路上0SPF数据包是以单播方式发送的另一种网络类型分类所有的网络也都可以分为下面两种更普通的网络类型之一:传送网络(TransitNetwork):与两台或两台以上的路由器相连的网络。这种网络中传输的数据包的始发网络和目的网络都不同于当前的传送网络末梢网络(StubNetwork):仅与一台路由器相连的网络。末梢网络上的数据包总是有一个源地址或者目的地址属于这个末梢网络。OSPF协议在末梢网络上通告主机路由(hostroute,就是网络掩码为255.255.255.255的路由)。loopback接口也可以认为是末梢网络,并当作主机路由来通告。OSPF在多址网络上泛洪扩散问题在多址网络上有关LSA的泛洪扩散存在两个问题:在构建相关路由器之间的邻接关系时,会创建很多不必要的LSA多址网络本身的泛洪扩散显得比较混乱。某一台路由器向与它存在邻接关系的所有邻居发出LSA,同样地,这些邻接的邻居路由器又向与它有邻接关系的邻居的邻居发出这个LSA,这样将会在同一个网络上创建很多个相同LSA的副本利用DR与BDR解决问题指定路由器(DR)的作用DR将完成以下工作:描述多路访问网络和0SPF区域内其余与其相连的路由器管理多路访问网络上的泛洪扩散过程伪节点(或虚拟路由器)当计算SPF树的时候,把广播链路看作一个伪节点(或者叫“虚拟路由器”),与该链路相连的路由器都连接到这个节点上从与伪节点相连的路由器到这个伪节点的代价就是该路由器与这个广播链路相连的接口的出站代价;从伪节点到任何与之相连的路由器的代价都为0伪节点的理解设置BDR的目的指定路由器具有非常重要的作用,如果一台指定路由器失效了,就必须选取一台新的指定路由器。同时,网络上的所有路由器也要重新建立新的邻接关系,并且网络上所有的路由器必须与新选出的指定路由器同步它们的链路状态数据库,但当所有上述的过程发生时,网络将无法有效地传送数据包--太长的延迟时间!为了避免这个问题,在网络上除了选取DR,再选取一台BDR。网络上所有的路由器将同时与DR和BDR形成邻接关系。DR和BDR之间也将互相形成邻接关系。此时,如果DR失效了,BDR将成为新的DR。由于网络上其余的路由器已经与BDR形成了邻接关系,因此网络可以将无法传送数据包的影响降低到最小的程度DR/BDR选取的前提条件能够实施选取过程一些前提条件:每台路由器的每个多点访问接口都有一个路由器的优先级,用一个8位的无符号整数来表示,范围是0~255(Cisco路由器上缺省的优先级是1,可以通过命令ip
ospfpriority来修改)。具有0优先级的路由器将不能成为DR或者BDRHello数据包包含了表示始发路由器指定的路由器优先级字段,也包含了表示路由器认为可能是DR和BDR的相关接口的IP地址的字段当一个接口在一个多址网络上刚开始有效时,将把它的DR和BDR的地址都设置为0.0.0.0,同时将等待定时器(waittimer)的值设置为路由器无效时间间隔(RouterDeadInterval)在多址网络上已经存在的接口将把DR和BDR的地址记录在接口数据结构表中DR和BDR的选取过程(1)在路由器和它的邻居路由器之间首先建立双向通信,接着检查每台邻居路由器发送的Hello包的优先级、DR和BDR字段。列出所有具有DR和BDR选取资格的路由器的列表,接着所有的路由器将宣称自己是DR路由器,所有的路由器也将宣称自己是BDR路由器(2)从具有选取资格的路由器列表中,创建一个还没有宣告为DR路由器的所有路由器的子集(宣告自己为DR的路由器不能被选为BDR)(3)如果这个子集中的一台或者多台邻居路由器在Hello包的BDR字段包含了它们自己的接口地址,那么具有最高优先级的邻居路由器将被宣告为BDR路由器。在优先级相同时具有最高路由器ID的邻居路由器将被选作BDR(4)如果子集中没有路由器宣称自己是BDR,那么具有最高优先级的邻居路由器将被宣告为BDR路由器。在优先级相同时具有最高路由器ID的邻居路由器将被选作BDR(5)如果一台或多台具有选取资格的路由器在Hello包的DR字段包含它们自己的接口地址,那么具有最高优先级的邻居路由器将被宣告为DR路由器。在优先级相同时具有最高路由器ID的邻居路由器将被选作DR(6)如果没有路由器宣称自己是DR,那么新选取的BDR将成为DR(7)如果正在执行计算的路由器是新选取的DR或BDR,或者它不再是DR或BDR了,那么将重复以上的2~6步骤DR/BDR与优先级的关系在一个多址网络上,最先初始化启动的两台具有DR选取资格的路由器将成为DR和BDR路由器路由器的优先级可以影响一个选取过程对于已经选出DR/BDR的网络,不能强制更换已经有效的DR或BDR路由器例如已经选取了DR和BDR路由器后,如果一台具有更高优先级的路由器变为有效,那么这台新的路由器将不会替换DR或BDR路由器的任何一台DR/BDR与其余路由器的关系一旦DR和BDR路由器选取成功,其他的路由器(称为DRothers)将只与DR及BDR路由器之间形成邻接关系所有路由器继续以组播方式发送Hello数据包到AllSPFRouters(组播地址是224.0.0.5),因此能够跟踪各自的邻居路由器DRothers路由器只以组播方式发送更新数据包到AllDRouters(组播地址是224.0.0.6)。只有DR和BDR路由器去侦听这个地址DR路由器使用组播地址224.0.0.5泛洪扩散更新数据包到DRothersOSPF接口及其数据结构DR和BDR的选取是通过接口状态机的方式触发的描述OSPF协议时可以不区分接口和链路这两个术语运行OSPF协议的路由器将为每个启动OSPF协议的接口维护一个数据结构OSPF接口数据结构AddressandMask(IP地址和掩码):路由器接口所配置的IP地址和掩码AreaID(区域ID):接口所在的区域ProcessID(进程ID):这是Cisco公司特有的属性,不是0SPF协议开放标准的一部分。用于区分同一台路由器中运行多个0SPF进程Router1D(路由器ID):路由器IDNetworkType(网络类型):与这个接口相连的网络类型:广播型、点到点类型、NBMA、点到多点类型或虚链路等Cost(代价):表示从该接口发送出去的数据包的出站接口代价接口数据结构的其它参数InfTransDelay:指LSA从路由器的接口发送后经历的时间,单位为秒,CISCO路由器上缺省值为1sState(状态):接口的功能状态RouterPriority(路由器优先级):用来选择DR和BDR的—个8位无符号整数DesignatedRouter(指定路由器)BackupDesignatedRouter(备份指定路由器)HelloIntervalRouterDeadIntervalWaitTimer(等待计时器):在开始选取DR和BDR之前,路由器等待邻居路由器的Hello包通告DR和BDR的时间RxmtInterval:是指在没有得到确认的情况下,路由器重传报文需要等待的时间,单位为秒HelloTimer(Hello定时器:初始值由HelloInterval值来设置NeighboringRouters(邻居路由器):是指与这个接口相连的网络上的有效邻居路由器
AuType:使用的认证类型AuthenticationKey(认证密钥):如果接口上启用的是简单认证方式,那么认证密钥就是—个64位的口令;如果启用的是加密认证方式,那么认证密钥就是一个消息摘要密钥OSPF接口状态机接口状态包括失效、点到点、等待、DR、BDR、DRother和Loopback等:失效(Down):初始化的接口状态点到点:仅适用于与点到点、点到多点以及虚电路等网络类型相连的接口,表示接口开始起作用等待(Waiting):仅适用于与广播型、NBMA等网络类型相连的接口。表示接口将开始发送和接收Hello包指定路由器(DR):该路由器是所连网络的指定路由器备份(Backup):该路由器是所连网络的后备指定路由器DRother:该路由器既不是所连网络上的DR,也不是BDRLoopback:路由器的接口是通过软件或硬件的方式成为回送(loopback)的。在该种状态下接口不能发送数据包,但接口的地址还是可以通过路由器LSA通告出去OSPF接口状态机输入事件及其描述IE1:底层协议指明该网络接口是可操作的IE2:底层协议指明该网络接口是不可操作的IE3:网络管理系统或底层协议指明该网络按口打环路后是有效的(loopedup)IE4:网络管理系统或底层协议指明该网络接口打环路后是无效的(loopeddown)IE5:收到Hello数据包,在Hello包中,要么始发邻居路由器把自身作为BDR列出,要么始发邻居路由器把自身作为DR列出而不指明BDRIE6:等待定时器超时IE7:路由器被所在的网络选取为DR路由器IE8:路由器被所在网络选取为BDR路由器IE9:路由器没有被所在网络选取为DR或者BDR路由器IE10:表示网络中一组有效的邻居路由器发生了变化(多种情况)OSPF邻居邻居之间建立关联关系的目的是为了形成邻接关系,最终可以顺利地传送路由选择信息要成功建立一个邻接关系,通常需要下面4个阶段:邻居路由器发现阶段双向通信阶段数据库同步阶段完全邻接阶段邻居数据结构每个路由器将维护一个邻居数据结构表,用来表示从其他路由器学习到的Hello包的信息使用命令showip
ospfneighbor可以观察路由器一个邻居的邻居数据结构的信息邻居数据结构的信息NeighborID(邻居路由器ID):邻居路由器的IDNeighborIPAddress(邻居IP地址):是指与网络相连的邻居路由器的接口IP地址AreaID(区域ID)Interface(接口):是指与邻居路由器所在网络相连的接口NeighborPriority(邻居优先级)State(状态):指的是从本地路由器角度看到的邻居路由器的功能状态DesignatedRouter(指定路由器):这个地址包含在邻居路由器发送的Hello包的DR字段中BackupDesignatedRouter(后备指定路由器):这个地址包含在邻居路由器发送的Hello包的BDR字段中PollInterval:只用于NBMA网络上相关的邻居路由器NeighborOptions(邻居路由器可选项):邻居路由器支持的可选项InactivityTimer(失效计时器):这是一个时长为RouterDeadInterval(该参数在接口数据结构中定义)的定时器邻居数据结构的信息(续)Master/Slave:在ExStart状态下,邻居之间协商的主/从关系将用来控制数据库的同步DDSequenceNumber(数据库描述序列号):指当前正在向邻居路由器发送的数据库描述的序号LastReceivedDatabaseDescriptionPacket(最后收到的数据库描述数据包)LinkStateRetransmissionList(链路状态重传列表):这是在邻接关系建立后,OSPF已经进行泛洪扩散,但还没有得到确认的LSA的列表DatabaseSummaryList(数据库摘要列表):是指在数据库同步期间,数据库描述报文中向邻居路由器发送的LSA列表LinkStateRequestList(链路状态请求列表):该列表记录了来自邻居路由器的数据库描述报文的LSA,当路由器通过链路状态更新数据包收到请求的LSA时,请求列表就会减小,直至变为空列表邻居状态机失效状态(Down):邻居会话的初始状态尝试状态(Attempt):仅适用于NBMA网络上的邻居,路由器将使用HelloInterval时间代替PollInterval时间来作为向邻居发送Hello包的时间间隔初始状态(Init):表示在最近的RouterDeadInterval时间内路由器收到了来自邻居路由器的Hello包,但是双向通信仍然没有建立双向通信状态(2-Way):本地路由器已经在来自邻居路由器的Hello包的邻居字段中看到了它自己的路由器ID信息交换初始状态(ExStart):本地路由器和它的邻居将建立起主/从关系,并确定数据库描述报文的序号,以便为数据库描述报文的信息交换做准备。其中具有最高路由器ID的邻居路由器将成为“主”路由器信息交换状态(Exchange):本地路由器将向它的邻居路由器发送可以描述它整个链路状态数据库信息的数据库描述数据包;也可以发送链路状态请求报文给它的邻居路由器,用来请求最新的LSA信息加载状态(Loading):本地路由器将会向它的邻居路由器发送链路状态请求数据包,用来请求最新的LSA通告。虽然在Exchange状态下已经发现了这些最新的LSA通告,但本地路由器还没有收到这些LSA通告完全邻接状态(Full):邻居路由器之间建立起完全邻接关系邻居状态机(续)邻居状态机(续)IEn:表示输入事件DPn:表示DecisionPoint判定点建立一个邻接关系在一个邻接关系的创建过程中,OSPF协议使用了以下3种报文类型:数据库描述报文(类型2)链路状态请求报文(类型3)链路状态更新报文(类型4)数据库描述报文中有3个标记位用来管理邻接关系的建立过程:I位(初始位):指明所发送的是第一个数据库描述报文M位(后继位,More):表示后面还有DD报文MS位(主/从位,Master/Slave):当DD报文始发于一个“主”路由器时,该位置1LSA确认方法显式确认:确认收到包含这个LSA头部的链路状态确认数据包隐式确认:确认收到包含这个LSA的相同实例(没有其它更加新的LSA)的更新数据包数据库同步过程当数据库同步过程完成后,可能出现下面两种状态之一:如果链路状态请求列表中仍然还有一些LSA条目,那么路由器将把邻居的状态转换到加载(Loading)状态如果链路状态请求列表为空,那么路由器将会把邻居的状态转换到完全邻接(Full)状态一个邻接关系的创建过程实例建立邻接关系实例的一点说明如果路由器的链路状态请求列表中还有LSA条目,它并不需要等待Loading状态才发送链路状态请求报文在邻居状态还处于Exchange状态时路由器就可以发送链路状态请求报文了,这样更加高效泛洪扩散(Flooding)泛洪扩散过程将会使用下面两种0SPF报文:链路状态更新报文(类型4)链路状态确认报文(类型5)OSPF采用可靠的泛洪扩散,每个单独传送的LSA都必须被确认确认可以是时延的(delayed)或直接(direct)的,直接的确认总是立即发送,且以单播方式发送序列号、校验和、老化时间当收到某条相同的LSA的多个实例时,路由器将通过下面的算法来确定哪个是最新的实例:1.比较LSA实例的序号,拥有最大的序号的LSA就是最新的LSA2.如果LSA实例的序号相同,那么比较它们的校验和。拥有最大的无符号校验和的LSA就是最新的LSA3.如果LSA实例的校验和也相同,那么再比较它们的老化时间。如果只有一条LSA拥有最大生存时间的老化时间(MaxAge),那么就认为这条LSA是最新的LSA4.如果这些LSA的老化时间之间的差别多于15min(即MaxAgeDiff),那么拥有较小的老化时间的LSA就是最新的LSA5.如果上述的条件都无法区分最新的LSA,那么这两个LSA就被认为是相同的通信量的类型定义了下面3种与区域相关的通信量的类型:域内通信量域间通信量外部通信量区域0(或者区域0.0.0.0)是为骨干域保留的区域ID号。其任务是汇总每一个区域的网络拓扑到其他所有的区域。所有的域间通信量都必须通过骨干区域,非骨干区域之间不能直接交换数据包路由器的类型路由器的类型内部路由器区域边界路由器(AreaBorderRouter,ABR)骨干路由器(BackboneRouter)自主系统边界路由器(AutonomousSystemBoundaryRouter,ASBR):是0SPF域外部的通信量进入OSPF域的网关路由器,用来把其他路由选择协议学习到的路由,通过路由选择重分配的方式注入到0SPF域的路由器。一台ASBR路由器可以是位于0SPF域的自主系统内部的任何路由器,可以是一台内部路由器、骨干路由器或者ABR路由器分段区域(partitionedarea)是指由于链路失效而使一个区域的一个部分与其他部分隔离开来的情形如果一个非骨干的区域变成分段区域,并且在这个分段区域的任何一段区域里的所有路由器当中都还能发现一台ABR路由器,那么这个分段区域将不会产生中断通信服务的情况,骨干区域仅仅会把这个分段区域看成两个单独的区域分段区域不是孤立区域(isolatedarea),孤立区域没有链路与主网络相连虚链路虚链路是指一条通过一个非骨干区域连接到骨干区域的链路虚链路主要应用于以下几种目的:(1)通过一个非骨干区域连接一个区域到骨干区域(2)通过一个非骨干区域连接一个分段的骨干区域两边的部分区域配置虚链路的几条规则:虚链路必须配置在两台ABR路由器之间配置了虚链路所经过的区域必须拥有全部的路由选择信息,这样的区域又被称为传送区域传送区域不能是一个末梢区域LSA的类型路由器LSA:每—台路由器都会产生路由器LSA通告,列出了路由器所有的链路或接口,并指明了它们的状态和沿每条链路方向出站的代价,以及该链路上所有已知的0SPF邻居网络LSA:每一个多路访问网络中的指定路由器(DR)将会产生网络LSA通告,列出所有与之相连的路由器,包括DR路由器本身网络汇总LSA:由ABR路由器始发的,发送到一个区域,用来通告该区域外部的目的地址ASBR汇总LSA:由ABR路由器始发的,通告的目的地是一台ASBR路由器AS外部LSA:始发于ASBR路由器的、用来通告到达0SPFAS外部的目的地或者0SPFAS外部的缺省路由组成员LSA:用于组播0SPF协议(MOSPF协议)NSSA外部LSA:是指在非纯末梢区域(Not-So-StubbyArea)内始发于ASBR路由器的LSA通告外部属性LSA:IOS软件不支持OpaqueLSA:用于对0SPF增加可变的扩展特性末梢(Stub)区域完全末梢区域:通过阻塞类型3(仅一个例外,即用来通告缺省路由的LSA)、类型4~5传播到一个区域的方法来节省内存,使用缺省路由到达0SPFAS外部的所有目的地址非纯末梢区域(NSSA):允许外部路由通告到0SPFAS内部,同时保留AS其余部分的末梢区域特征路由表的目的地类型网络路由器路径类型区域内路径区域间路径类型1的外部路径(Type1externalpath):指目的地在0SPFAS外部的路径类型2的外部路径(Type2externalpath):也是指目的地在0SPFAS外部的路径,但是在计算外部路由的度量时不再计入本地到达ASBR路由器的路径代价认证OSPF协议对邻居路由器之间交换的所有数据包都具有认证的能力认证可以是简单的口令认证或MD5加密校验和认证OSPF报文格式OSPF报文格式数据包头部有24字节版本(Version):版本号,0SPFv2的值是2类型(Type):有5种报文类型报文长度(PacketLength):包括数据包头部的长度路由器ID(RouterID):始发路由器的ID区域ID(AreaID):始发报文的路由器所在的区域校验和(Checksum):对整个报文(包括包头)的标准IP校验和认证类型(AuType):使用的认证模式认证(Authentication):报文认证的必要信息。如果AuType=0,将不检查这个认证字段;如果AuType=1,该字段将包含一个最长为64位的口令;如果AuTyp=2,该字段将包含一个KeyID、认证数据长度和一个不减小的加密序号。这个消息摘要附加在0SPF数据包的尾部,不作为0SPF报文本身的一部分。加密序号不会减小,用来防止重放攻击OSPF的5种报文类型Hello报文数据库描述(DD)报文链路状态请求(LSREQ)报文链路状态更新(LSUPD)报文链路状态确认(LAACK)报文Hello报文DatabaseDescription报文LinkStateRequest报文LinkStateUpdate报文LinkStateAcknowledgement报文LSA格式介绍CISCO支持的类型:类型1~5和类型7的LSALSA头部格式:LSA头部DD报文和LSACK报文直接使用了LSA的头部本身其中有3个字段可以惟一地识别每个LSA:类型:LSA的类型值链路状态ID:指定LSA所描述的部分0SPF域,这个字段的用法与LSA的类型有关通告路由器:始发LSA的路由器的RID还有其他3个字段可以惟一地识别一个LSA的最新实例:序列号校验和老化时间RouterLSA链路状态ID:指始发路由器的路由器IDV(VirtualLinkEndpoint)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论