OSPF协议概述.docx
《OSPF协议概述.docx》由会员分享,可在线阅读,更多相关《OSPF协议概述.docx(54页珍藏版)》请在冰豆网上搜索。
![OSPF协议概述.docx](https://file1.bdocx.com/fileroot1/2022-10/28/c07de1bb-1e91-489c-b1ff-e4ad975e200c/c07de1bb-1e91-489c-b1ff-e4ad975e200c1.gif)
OSPF协议概述
OSPF内容概要
1.概述
OSPF是一个内部网关协议,用于在单一自治系统内决策路由。
它是基于链路状态的路由协议,链路状态是指路由器接口或链路的参数。
这些参数是接口的物理条件:
包括接口是Up还是Down、接口的IP地址、分配给接口的子网掩码、接口所连的网络,以及使用路由器的网络连接的相关费用。
OSPF与其他路由器交换交换信息,但所交换的不是路由,而是链路状态。
OSPF路由器不是告知其他路由器可以到达哪些网络及距离是多少,而是告知它的网络链路状态,这些接口所连的网络及使用这些接口的费用。
各个路由器都有其自身的链路状态,称为本地链路状态,这些本地链路状态在OSPF路由域内传播,直到所有的OSPF路由器都有完整而等同的链路状态数据库为止。
一旦每个路由器都接收到所有的链路状态,每个路由器可以构造一棵树,以它自己为根,而分支表示到AS中所有网络的最短的或费用最低的路由。
OSPF对于规模巨大的网络,通常将网络划分成多个OSPF区域,并只要求路由器与同一区域的路由器交换链路状态,而在区域边界路由器上交换区域内的汇总链路状态,这样可以减少传播的信息量,且使最短路径计算强度减少。
在区域划分时,必须要有一个骨干区域(即区域0),其它非0或非骨干区域与骨干区域必须要有物理或者逻辑连接。
当有物理连接时,必须有一个路由器,它的一个接口在骨干区,而另一个接口在非骨干区。
当非骨干区不可能与物理连接到骨干区时,必须定义一个逻辑的或虚拟链路,虚拟链路由两个端点和一个传输区来定义,其中一个端点是路由器接口,是骨干区域的一部分,另一端点也是一个路由器接口,但在与骨干区没有物理连接的非骨干区域中。
传输区是一个区域,介于骨干区域与非骨干区域之间。
2.术语
在OSPF中,经常要使用以下术语:
RouterID(路由器ID):
用于标识每个路由器的32位数。
通常,将最高的IP地址分配给路由器ID。
如果在路由器上使用了回送接口,则路由器ID是回送接口的最高IP地址,不管物理接口的IP地址。
Interface(接口):
路由器和具有唯一IP地址和子网掩码的网络之间的连接。
NeighborRouter(相邻路由器):
带有到公共网络的接口的路由器。
BroadcastNetWork(广播网络):
支持广播的网络。
Ethernet是一个广播网络。
NonBroadcastNetWork(广播网络):
支持多于两个连接路由器,但没有广播能力的网络,如帧中继和等网络。
在非广播网络中,有非广播多点访问网络NBMA(在同一个网络上,但不能通过广播访问到)和点到多点网络。
DesignatedRouteer(指定路由器DR):
在广播和NBMA网络中,指定路由器用于向公共网络传播链路状态信息。
BackupDesignatedRouteer(后援指定路由器DR):
在DR故障时,接替DR的路由器。
AreaBorderRouter(区域边界路由器ABR):
连接多个OSPF区域的路由器。
AutonomousSystemBorderRouter(自治系统边界路由器ASBR):
一个OSPF路由器,但它连接到另一个AS,或者在同一个AS的网络区域中,但运行不同于OSPF的IGP。
Adjacency(紧邻):
紧邻可以在点对点连接的两个路由器之间形成,也可在广播或NBMA网络的DR和非指定路由器之间形成,还可以在BDR和非指定路由器之间形成。
OSPF路由状态信息只能通过紧邻被传送和接收。
Flooding(洪泛):
在OSPF区域内,扩散某一链路状态,以分布和同步路由器之间的链路状态数据库。
Link-StateAdvertisement(链路状态宣告LSA):
描述路由器的本地链路状态,通过该通告向整个OSPF区域扩散。
ExternalRouting(外部路由):
从另一个AS或另一个路由协议得知的路由可以作为外部路由放到OSPF中。
有两种类型的外部路由,类型1的外部路由具有的费用包含OSPF的费用,加上从ASBR到网络的费用。
类型2的外部路由具有的费用仅是ASBR到网络的费用,而内部的OSPF费用可以忽略不计。
IntraareaRouting(区域内路由):
在相同OSPF区域的网络之间的路由,这些路由仅依据从区域内所接收的信息。
InterareaRouting(区域间路由):
在两个不同的OSPF区域之间的路由。
区域间的路径由三部分组成:
从区域到源区域的ABR的区域内路径,从源ABR到目标ABR的骨干路径,最后是从目标ABR到目标区域的路径。
RouteSummarization(路由汇总):
要通告的路由可能有一个区域内的路由、来自另一个AS的路由,以及从另一个路由协议得知的路由,所有这些路由可以由OSPF汇总成一个路由宣告。
汇总仅可以在ABR或ASBR上发生。
StubArea(存根区):
只有一个出口路径的区域。
3.协议包格式
IPHeader
(Protocol=89)
OSPF
PacketHeader
PacketType-
SpecificData
OSPFPacket
LSA
LSA
LSA
LSA
LSA
LSA
Header
LSAData
OSPFPacketData
OSPF包共有5种包类型,任意一种包都需要加上OSPF的报文头,最后封装在IP中传送,一个OSPF包的最大长度为1500字节。
其结构如下:
OSPF协议一共使用5种类型的路由协议包:
包类型
作用
1:
呼叫
发现和维护邻居
2:
数据库描述
紧邻间同步数据库内容
3:
链路状态请求
要求从邻居获取LSA
4:
链路状态更新
向邻居通告LSA
5:
链路状态确认
对所通告的LSA给出确认消息
无论何种类型的OSPF包都有以下一个公共的报文头:
版本号
包类型
包长度
路由器ID
区域ID
校验和
认证类型
身份验证
身份验证
版本号:
目前版本号为2。
不同版本号不能会话。
包类型:
包类型的标志,为5种包类型中的某种。
包长度:
以字节计算,包括OSPF包加上首部头的长度。
路由器ID:
产生OSPF传输包的路由器的标识,一般就是路由器的最高IP地址。
区域ID:
分配给路由器传输接口的区域的32位指示器。
如果包经过虚拟链路来发送,那么区域ID为骨干区域ID(ID=0),因为虚拟链路是骨干区域的一部分。
校验和:
整个OSPF报文包括OSPF头的校验和,使用补运算进行计算。
认证类型(AuType):
身份验证的方法,其后64位域包含使用的证明类型所要求的数据。
AuType=0表示无认证,AuType=1表示简单的口令认证,AuType=2表示MD5安全认证。
Hello包格式
Hello呼叫报文用于发现路由器所连网络上的邻居。
通过周期性地发出呼叫包,呼叫协议可用于确定邻居路由器接口是否仍然处于活动状态。
在广播网络和NBMA网络,呼叫协议可以用于选取指定路由器。
呼叫包被发送到Multicast多播地址AllSPFRouters。
在播发期间,有些协议包也将发送到该地址。
指定或后援指定路由器发送并接收到Multicast多播地址是AllDRRouters。
Hello报文是包类型为1的OSPF包,封装在OSPF报文头后面,其格式如下:
版本号=2
包类型=1
包长度
路由器ID
区域ID
校验和
认证类型
身份验证
身份验证
网络掩码
HelloInterval
选项
路由器优先级
RouterDeadInterval
指定路由器
后援指定路由器
邻居路由器
……
邻居路由器
网络掩码:
发送呼叫报文的接口的子网掩码。
如果这一掩码和呼叫报文接收接口的子网掩码不匹配,则该呼叫报文不能被接收。
这样可以确保共享同一网络的路由器才能成为邻居关系。
HelloInterval:
在接口上发送呼叫报文的时间间隔,以秒为单位。
如果两路由器不具有相同的呼叫周期,则不能成为邻居关系。
选项:
包含5个分配位,在RFC2178中对E位已经做了说明,它确定如何传播外部链路状态宣告。
在存根区,Hello报文要将该位设置为0,不能接收设置为1的Hello报文。
使邻居具有兼容性。
因兼容性问题,路由器可以放弃邻居关系。
路由器优先级:
该选项影响指定路由器DR的选取。
值0表示该路由器不能被选为DR。
如果是其它值,则具有最高优先级的路由器将成为DR。
缺省值为1,如果所有路由器都使用该缺省值年,则具有最高IP地址的路由器将被选为DR。
RouterDeadInterval:
该参数(以秒为单位)用于确定邻居是否还处于活动状态。
如果在由RouterDeadInterval指定的秒数内没有从已建立的邻居处收到呼叫报文,那么,邻居被宣布为故障状态。
如果Hello报文中的RouterDeadInterval与接收端口所设置的RouterDeadInterval值不相同,则丢弃该报文,确保两邻居路由器具有相同的参数。
指定路由器(后援指定路由器):
广播网络或NBMA网络上DR(BDR)接口的IP地址。
在DR(BDR)的选举过程中,这个值可能是关于DR(BDR)的起源路由器的设想,而不是最终的DR(BDR)。
如果因为DR(BDR)没有选举出来或者因为是对等网络,不存在DR(BDR)该值应该取值为。
邻居路由器:
路由器在这个网络上所拥有的邻居路由器的列表,用路由器ID表示。
如果在由RouterDeadInterval指定的时间内未能从某个邻居接收到Hello呼叫包,那么,这个邻居应该从此列表中除去。
数据库描述包
数据库描述包(DatabaseDescriptionpacket,DD)是2型OSPF包。
在形成紧邻过程中的路由器之间交换数据库描述包,且由它来描述链路状态数据库,达到邻居路由器间链路状态数据库的完全同步。
根据接口数和网络数,可能需要不止一个数据库描述包,来传输整个链路状态数据库。
在交换过程中,所涉及到的路由器要建立主从关系。
主路由器发送本路由器的数据库描述包,而从路由器通过使用主路由器发送来的数据库描述序列号认可所接收到的数据库描述包,并将本路由器的LSA头部列表发送给主路由器,从而在主从路由器间判断链路状态数据库是否完全匹配,若有不匹配的LSA头部,则应发送链路状态请求报文,并以更新报文格式给予响应,获得最新LSA的全部信息。
数据库描述包要封装在类型为2的OSPF报文头后面,其具体格式如下:
版本号=2
包类型=2
包长度
路由器ID
区域ID
校验和
认证类型
身份验证
身份验证
接口MTU
选项
00000
I
M
MS
数据库描述序列号
LSA首部
……
LSA首部
接口MTU:
指示通过该接口可发送的最大IP包长度。
当通过虚拟链路发送时,这个域设置为0。
选项:
显示路由器的能力,使路由器不向没有能力的邻居发送LSAs。
I位:
是Init位,要发送数据库序列中的第一个包,应设置为1。
随后的包要设置为0。
M位:
若设置为1,则表示序列中还有更多的数据库描述包将要发送出去。
若置为0,则表示数据库描述包已发送完毕。
MS位:
主从位,在数据库描述包交换期间,1表示路由器是主路由器,而0表示路由器是从路由器。
数据库描述序列号:
用于数据库的同步处理,确保所有的数据库描述包全部被接收到。
主路由器在发送第一个数据描述包时,应将数据库描述序列号设置为一个独特的初始值,随后序列号逐渐递增。
LSA首部:
这是一个LSA首部列表,由本路由器的链路状态数据库的LSAs的头部组成这个LSA首部列表。
这些头部有足够的信息来描述LSA和LSA的实例。
3.3链路状态请求包
链路状态请求包是3型OSPF包。
当两个路由