免费邮箱 |加入收藏 | 会员中心 | 我要投稿 | RSS
您当前的位置:首页 > 服务器 > 路由技术 > 网络协议

动态路由协议OSPF的原理和特性

时间:2011-05-19 09:09:42  来源:站内  作者:潘春会


在OSPF协议中,分别对以上四种链路状态类型作了描述:

对于抽象模型Model 1(以太网链路),使用Link ID(连接的网段)、Data(掩码)、Type(类型)和Metric(代价)来描述。此时的Link ID即为路由器R1接口所在网段,Data为所用掩码,Type为3(Stubnet),Metric为代价值。

对于抽象模型Model 2(点对点链路),先使用Link ID(连接的网段)、Data(掩码)、Type(类型)和Metric(代价)来描述接口路由,以上各参数与Model 1相似。接下来描述对端路由器R2,四个参数名不变,但其含义有所不同。此时Link ID为路由器R2的Router ID,Data为路由器R2的接口地址,Type为1(Router),Metric仍为代价值。

对于抽象模型Model 3(点对多点链路,不全连通),先使用Link ID(连接的网段)、Data(掩码)、Type(类型)和Metric(代价)来描述接口路由,以上各参数与Model 1相似。接下来分别描述对端路由器R3、R4的方法,与在Model 2中描述R2类似。

对于抽象模型Model 4(点对多点链路,全连通),先使用Link ID(网段中DR的接口地址)、Data(本接口的地址)、Type(类型)和Metric(代价)来描述接口路由。此时Type值为2(Transnet),然后是本网段中DR(指定路由器)描述的连接通告。

路由器在通报其获知的链路状态(即上面所述的参数)前,加上LSA头(Link State Advertisement Head),从而生成LSA(链路状态广播)。到此,路由器通过LSA完成周边网络的拓扑结构描述,并发送给网络中的其他路由器。

计算路由

路由器完成周边网络的拓扑结构的描述(生成LSA)后,发送给网络中的其他路由器,每台路由器生成链路状态数据库(LSDB)。路由器开始执行SPF(最短路径优先)算法计算路由,路由器以自己为根节点,把LSDB中的条目与LSA进行对比,经过若干次的递归和回溯,直至路由器把所有LSA中包含的网段都找到路径(把该路由填入路由表中),此时意味着所到达的该段链路的类型标识为3(Stubnet)。

确保LSA在路由器间传送的可靠性

从上文可以知道,作为链路状态协议的OSPF的工作机制,与RIP等距离向量的路由协议是不一样的。距离向量路由协议是通过周期性地发送整张路由表,来使网络中的路由器的路由信息保持一致。这种机制存在着上文提到的一些弊病。而OSPF协议将包含路由信息的部分与只包含路由器间邻接关系的部分分开,它使用一种被称作Hello的数据包来确认邻接关系,这个数据包非常小,它仅被用来发现和维持邻接关系。

在路由器R1初始化完成后,它将向路由器R2发送Hello数据包。此时R1并不知道R2的存在,因此在数据包中不包含R2的信息(参数seen=0)。而R2在接收到该数据包后,将向R1发送Hello包。此时,Hello包中将表明它已知道存在R1这个邻居。R1收到这个回应包后就会知道邻居R2的存在,并且邻居R2也知道了自己的存在(参数seen=R1)。此时在路由器R1和R2之间就建立了邻接关系,它们就可以把LSA发送给对方,如图3所示。当然,在发送时OSPF考虑到要尽量减少占用的带宽,它采用了一些技巧,我们将在下一节简单介绍这些内容。

 


图1 邻接路由器



众所周知,IP协议是一种不可靠的、面向无连接的协议,它本身没有确认和错误重传机制。那么,在这种协议基础之上,要做到数据包丢失或出错后进行重传,上层协议必须本身具备这种可靠的机制。OSPF采取了与TCP类似的确认和超时重传机制。在机制中,R1和R2将进行一种被称作链路状态数据库描述(DD)的数据包的互传。首先进行协商,从而确定两者之间的主从关系(根据路由器ID号,ID号大的将作为Master)。链路状态数据库描述(DD)数据包中包含了一些参数,序列号(seq)、报文号(I)、结尾标识(M)及主从标志(MS)。从属路由器将使用主路由器发出的DD包中的序列号(seq),作为自己的第一个DD包的序列号。当主路由器收到从属路由器的DD包时,就能确认邻接路由器已收到自己的数据包(如果没有收到或收到的DD包的序列号不是自己一个DD包的序列号,主路由器将重传上一个DD包),主路由器将序列号加1(只有主路由器才有权改变序列号,而从属路由器没有),并发送下一个DD包,该过程的重复保证了在OSPF协议中数据包传输的准确性,从而为OSPF协议成为一个准确的路由协议打下了基础。

高效率地进行LSA的交换

在RIP等距离向量路由协议中,路由信息的交互是通过周期性地传送整张路由表的机制来完成的,该机制使距离向量路由协议无法高效地进行路由信息的交换。在OSPF协议中,为了提高传输效率,在进行链路状态通告(LSA)数据包传输时,使用包含LSA头(Head)的链路状态数据库描述数据包进行传输,因为每个LSA头中不包含具体的链路状态信息,它只含有各LSA的标识(该标识唯一代表一个LSA),所以,该报文非常小。邻接路由器间使用这种字节数很小的数据包,首先确认在相互之间哪些LSA是对方没有的,而哪些LSA在对方路由器中也存在,邻接路由器间只会传输对方没有的LSA。对于自己没有的LSA,路由器会发送一个LS Request报文给邻接路由器来请求对方发送该LSA,邻接路由器在收到LS Request报文后,回应一个LS Update报文(包含该整条LSA信息),在得到对方确认后(接收到对方发出的LS ACK报文),这两台路由器完成了本条LSA信息的同步。

由此可见,OSPF协议采用增量传输的方法来使邻接路由器保持一致的链路状态数据库(LSDB)。

小结

综上所述,我们可以归纳出在OSPF协议中使用到的五种协议报文,并简单介绍了它们的作用,我们作个简单的小结:

◆ Hello报文,通过周期性地发送来发现和维护邻接关系;

◆ DD(链路状态数据库描述)报文,描述本地路由器保存的LSDB(链路状态数据库);

◆ LSR(LS Request)报文,向邻居请求本地没有的LSA;

◆ LSU(LS Update)报文,向邻居发送其请求或更新的LSA;

◆ LSAck(LS ACK)报文,收到邻居发送的LSA后发送的确认报文。

来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
如何找出DHCP地址池里未使用的IP地址
如何找出DHCP地址池里
国内常用的DNS列表
国内常用的DNS列表
Linux邮件服务器软件比较
Linux邮件服务器软件比
学用纯CSS打造可折叠树状菜单
学用纯CSS打造可折叠树
相关文章
栏目更新
栏目热门