H3CSE OSPF协议详解

  • 格式:docx
  • 大小:23.08 KB
  • 文档页数:6

OSPF 一、 OSPF工作机理 OSPF协议的工作过程主要可分为四部分,即:邻居发现、路由交换、路由计算和路由维护。 1. 邻居发现 运行OSPF的路由器以组播方式(目的地址224.0.0.5)发送Hello报文来发现邻居。 1) 初始情况下,邻居关系处于Down的状态,之后RTA开始发送Hello报文,由于当前没有发现任何邻居,因此它的邻居表项是空的,并且DR字段设置为0.0.0.0。 2) RTB接收到RTA的Hello报文后,将RTA添加到自己的邻居表中,同时将RTA的邻居状态设置为Init。与RTA比较Router ID,由于RTB的Router ID较大,所以在发送的Hello报文中,将DR字段设置为自己的Router ID。 3) RTA收到RTB发来的Hello报文,在邻居列表里发现了自己的Router ID,因而在邻居表中添加RTB,并将邻居状态设置为2-Way。RTA发送Hello报文,其中邻居列表添加RTB的Router ID,将DR字段设置为RTB的Router ID。 4) RTB收到RTA的Hello报文,发现自己的Router ID,从而将邻居表中RTA的状态也修改为2-Way。 2. 路由交换 5) RTA将邻居表中RTB的邻居状态修改为ExStart,并发送一个不包含LSA摘要的DD报文,开始主从关系的协商。这个DD报文的序列号由RTA决定,设置为X;I位被设置为1,表明这是RTA发起的初始化报文;M位被设置为1,表明这不是最后一个DD报文;MS位被设置为1,表明RTA认为自己是Master路由器。 6) RTB收到RTA的DD报文后,将邻居表中RTA的状态设置为ExStart,由于RTB的Router ID大于RTA,因此RTB认为自己应该作为Master路由器。所以RTB发送的DD报文中同样将MS位设置为1,采用序列号Y,同时将I位与MS位置为1。 7) RTA同意RTB作为Master路由器,因此将MS位置为0,表明自己是Slave路由器,并采用RTB的序列号Y开始发送DD报文,这时DD报文中包含LSA摘要,RTA将邻居表中RTB的状态设置为Exchange。 8) RTB收到RTA发来的DD报文,将邻居表中RTA的状态修改为Exchange,接下来采用Y+1的序列号和RTA交换LSA摘要信息。 9) RTA与RTB对于DD报文中包含的LSA摘要信息与自己的LSDB做比较,如果所有的LSA信息在自己的LSDB中都存在,则邻接直接进入Full状态,否则将邻接关系设置为Loading,同时向对方发送LSR报文,请求自己缺少的LSA,LSR报文中也仅仅包含LSA摘要。 10) 路由器收到LSR报文后,将请求的LSA全部内容以一条或者多条LSU报文发送给对方。 11) 路由器接收到LSA更新后放入自己的LSDB,直到所有请求的LSA都获得之后,它将邻居表中的邻居状态设置为Full。 3.路由计算 OSPF路由的生成过程具体如下: 1) 生成LSA描述自己的接口状态 每台运行OSPF的路由器都根据自己周围的网络拓扑结构生成LSA(链路状态通告)。LSA中包含了接口状态(UP或DOWN)、链路开销、IP地址和掩码信息。 2) 同步OSPF区域内每台路由器的LSDB OSPF路由器通过交换LSA实现LSDB的同步。 3) 使用SPF计算出路由 OSPF路由器用SPF算法以自己为根计算出一棵最短路径树。在这棵树上,由根到各节点的累计开销最小,即由根到各节点的路径在整个网络中都是最优的,这样也就获得了由根去往各节点的路由。计算完成后,路由器将计算出的路由加入到OSPF路由表中,如果SPF计算出有两条到达某节点的COST相同,则将这两条路由都加入到OSPF路由表中,形成等价路由。 4. 邻居维护 OSPF邻居关系建立后,邻居之间通过周期性地发送Hello报文(广播网络和P2P网络默认为10秒,NBMA和P2MP网络默认为40秒),以确认邻居是否工作正常。在一定的时间间隔内,只要能够从邻居收到Hello报文,就可以认为邻居工作正常,继续维持邻居关系。如果在一定的时间内(默认为三倍的Hello间隔,广播网络和P2P网络为40秒,NBMA与P2MP网络为120秒)收不到邻居发来的Hello报文,就认为邻居已经失效,从邻居表中删除。

二、 OSPF协议报文类型 OSPF报文是直接封装在IP报文中的,其IP报文头的协议号为89,共有五种类型的协议报文: 1. Hello报文 周期性地发送,用来发现和维持OSPF邻居关系。内容包括一些定时器的数值、DR、BDR以及自己已知的邻居。 2. DD(Database Description,数据库描述)报文 描述了本地LSDB中每一条LSA的摘要信息,用于两台路由器进行数据库同步。 3. LSR(Link State Request,链路状态请求)报文 向对方请求所需的LSA。两台路由器互相交换DD报文后,得知对端的路由器有哪些LSA是本地的LSDB所缺少的,这时需要发送LSR报文向对方请求所需的LSA。内容包括所需要的LSA的摘要。 4. LSU(Link State Update,链路状态更新)报文 路由器发现链路状态发生变化,或者收到LSR报文时,向对方或者DR/BDR发送的LSA。 5. LSAck(Link State Acknowledgment,链路状态确认)报文 用来对接收到的LSA进行确认。内容是需要确认的LSA的Header(一个报文可对多个LSA进行确认) 三、 LSA类型 OSPF规定了LSA共有11种类型。通常情况下使用较多的LSA类型主要有以下六种: 1. 第一类LSA Type1 LSA称为Router LSA。它由区域内的每台路由器产生,用来描述与路由器直接的网段的链路状态信息,这一类LSA仅在区域内泛洪传播。 2. 第二类LSA Type2 LSA称为Network LSA。它由DR产生,也就是说只有广播网络或者NBMA网络会有这一类LSA,P2P网络不会产生。它描述了一个广播网段内的子网以及掩码信息和所有的路由器Router ID等信息,这一类LSA也仅在区域内泛洪传播。 3. 第三类LSA Type3 LSA称为Summary LSA。它由ABR产生,将所连接区域内部的链路信息以子网的形式传播到其他区域。Summary LSA实际上就是将区域内部的Type 1和Type 2的LSA收集起来以路由子网的形式进行传播。ABR在收到其他区域ABR的Summary LSA后重新生成新的Summary LSA(Advertising Router改为自己)后继续在整个OSPF自治系统内传播。一般情况下,Summary LSA的传播范围是除了生成这条LSA的区域外的其他区域。由于Type 3直接传递的是路由信息而不是链路状态,因此路由在处理Type3 LSA的时候,并不是运用SPF算法进行计算,而是经过修改链路开俏后直接加入到路由表中。在某些情况下,Type3用来生成缺省路由或者过滤明细路由。 4. 第四类LSA Type4 LSA称为ASBR Summary LSA。它也是由ABR产生,用于向区域内部路由器宣告一条到达ASBR的路由。Type4不会主动产生,触发条件为ABR收到ASBR发布的Type5的LSA。Type4 LSA也会在除始发区域外的整个自治系统内泛洪传播。 5. 第五类LSA Type5 LSA称为AS External LSA。它由ASBR产生,用以宣告自治系统外部路由信息。AS外部路由的来源一般是通过路由引入的方式,将外部路由在OSPF区域内发布。这类LSA会在整个OSPF系统内泛洪。Type5和Type3类似,传递的也是路由信息,而不是链路状态。路由器处理Type5的方法也不会运用SPF运算,而是修改路径开销后加入路由表中。 6. 第七类LSA Type7 LSA比较特殊,它由NSSA(Not-So-Stubby-Area)的ABR或者位于NSSA区域中的ASBR产生,目的是向NSSA区域宣告外部路由。因为NSSA区域不允许第三类、第四类和第五类LSA在区域内传播。因此NSSA区域的ABR会向区域内宣告一条0.0.0.0/0.0.0.0的默认路由,以便NSSA区域访问外部网络。还有位于NSSA区域内的ASBR要向区域内发布外部路由时,都使用Type7类的LSA。Type7 LSA仅在NSSA区域内传播,当NSSA的ABR收到Type7的LSA时会转换为Type5后向其他区域传播。

四、 OSPF特殊区域 1. 骨干区域 随着网络规模日益扩大,当一个大型网络的路由器都运行OSPF协议时,路由器数量的增多会导致LSDB非常庞大,占用大量的存储空间,并使得运行SPF算法的复杂度增加,导致CPU负担很重。在网络规模增大之后,拓扑结构发生变化的概率也增大,网络会经常处于不稳定状态之中,造成网络中有大量的OSPF报文在传递,降低了网络带宽的利用率。更为严重的是,每一次变化都会导致网络中所有的路由器重新进行路由计算。 OSPF协议通过将自治系统划分为不同的区域来解决上述问题。区域是从逻辑上将路由器划分不同的组,每个组用区域号(Area ID)来识别。区域的边界是路由器,而不是链路。一个网段只能属于一个区域,或者说每个运行OSPF的接口必须属于某个特定的区域。 在划分的所有区域中,Area ID为0的区域称为骨干区域。它负责传递非骨干区域之间的路由信息。OSPF协议规定:所有的非骨干区域必须与骨干区域连通,非骨干区域之间不能直接交换路由信息。所有非骨干区域必须与骨干区域直接相连,如果非骨干区域不能与骨干区域直接相连,则要配置虚连接使它们直接相连。