概述:

区域内拓扑和路由时通过1类LSA和2类LSA计算完成的。

一类LSA:

每台OSPF路由器使用一条Router-LSA描述本区域内的链路状态信息。LSA头部的三个字段含义如下:

  1. Type:LSA类型,Router-LSA是一类LSA。
  2. LS id:链路状态ID。
  3. Adv rtr:产生此Router-LSA的路由器Router ID。

一条Router-LSA可以描述多条链接,每条链接描述信息由Link ID,Data,Link Type和Metric组成,其关键字段含义如下:

  1. Type:链接类型(并非OSPF定义的四种网络类型),Router LSA描述的链接类型主要有:
    Point-to-Point:描述一个从本路由器到邻居路由器之间的点到点链接,属于拓扑信息。
    TransNet:描述一个从本路由器到一个Transit网段(例如MA网段或者NBMA网段)的链接,属于拓扑信息。
    StubNet:描述一个从本路由器到一个Stub网段(例如Loopback接口)的链接,属于路由信息。
    Vlink:描述一个虚链路。
  2. Link ID:此链接的对端标识,不同链接类型的Link ID表示的意义也不同。
  3. Data:用于描述此链接的附加信息,不同的链接类型所描述的信息也不同。
  4. Metric:描述此链接的开销。

其中每个LSA中携带具体信息的区别:

ospf外部路由引入 实验 ospf引入路由的type_ospf外部路由引入 实验


例如,1.描述在P2P网络环境下的1类LSA:

ospf外部路由引入 实验 ospf引入路由的type_路由协议_02


2.描述在Broadcast网络环境下的1类LSA:

ospf外部路由引入 实验 ospf引入路由的type_链路_03


3.StubNet类型的1类LSA就是路由信息,可以附着在路由节点上。

4.Vlink在后续虚连接处补充。

2类LSA

作用:
LSA2是由MA网络上的DR路由器产生的用 DR接口IP地址作为 LSA2的Link State ID。相比于 LSA1是由实节点产生并描述实节点的周边的连接关系和网络, LSA2是由DR虚节点产生,描述虚节点周边的连接关系和网络信息。通过与一类LSA中TransNet的LSA结合使用,描述出一个MA网络;所以在P2P的环境中不需要2类LSA进行辅助描述。

其中的关键字段:

  1. Netmask:和Link State ID进行与运算得出 LSA2 所代表的网络号。
  2. Attached Router:连接到本网络的所有邻居路由器的RouterID。

举例:

ospf外部路由引入 实验 ospf引入路由的type_路由协议_04

SPF计算的三个步骤:

SPF概述: SPF算法将个网络信息分为两个部分,如图示:

ospf外部路由引入 实验 ospf引入路由的type_链路_05


一个部分是网络的节点(对应于网络中的路由器、共享网段)和边(路由器以及共享网段之间的链路)组成的网络拓扑;另一个部分是挂在节点上的叶子(网段路由、主机路由等)。执行路由计算的路由器为"树根。”

在一类LSA和二类LSA中,包括了拓扑信息和路由信息。SPF计算三个步骤:

  1. 路由器根据LSDB中的1类LSA画出拓扑图,包括点(网络节点和共享网络)和边(链路)。
  2. 路由器以自己为根,对拓扑图进行SPF计算,画出树根到每个节点的最短成本路径树。
  3. 在最短路径树的节点上添加叶子(网络信息),并且计算由树根到这些网络的成本和下一跳。

实验:

ospf外部路由引入 实验 ospf引入路由的type_OSPF_06


分析R1是怎么描绘出整个网络拓扑的:一、首先查看自己产生的1类LSA: dis ospf lsdb router 1.1.1.1(ls-id)

ospf外部路由引入 实验 ospf引入路由的type_网络通信_07


可以看到路由类型是router,也就是一类LSA,LS id就是在router lsa中为自己的RID,adv router为自己的RID,存在LSA相应的age,options字段为E,表示支持外部属性LSA,之后会详细描述各个字段的含义,然后有三条链路状态想信息并且都是描绘拓扑的信息:

描述的是一个传输的网络(TransNet),然后R1就知道自己连接了三个伪节点,并且通过Link ID知道了自己的相连接DR的接口为(link-id字段)10.1.13.3,10.1.14.1,10.1.12.1,自己与对应网络相连的IP地址为(data字段)10.1.13.1,10.1.14.1,10.1.12.1。

现在就可以查看二类LSA来描述对应的传输网络了。首先查看与R3相连的网段:

ospf外部路由引入 实验 ospf引入路由的type_OSPF_08


可以看到发送者是R3,DR的IP地址也是10.1.13.3,告诉了我们这个网络中有两个设备,一个是R3,一个是R1,现在我们就可以将双方用线连接起来了。并且mask为24位,所以我们就可以通过DR的IP地址和mask进行运算计算出对应的网络号。然后查看与R2相连的网段:同理,网段中有R1和R2,可以用线连起来,DR是10.1.12.1,mask为24位。

ospf外部路由引入 实验 ospf引入路由的type_OSPF_09


最后查看与R4相连的网段:同理,网络中有R1和R4,可以用线连起来,DR为10.1.14.1,mask为24位。

ospf外部路由引入 实验 ospf引入路由的type_网络通信_10

二、现在我们已经描绘出了直接与R1相连网络的信息了,再查看从R2学习到的1类LSA:

ospf外部路由引入 实验 ospf引入路由的type_ospf外部路由引入 实验_11


其中有两条拓扑信息,一条路由信息,我们可以看到R2连接的一个传输网络,并且DR就是10.1.12.1,也就是与R1的接口,这条线路我们之前已经分析完成。

然后在查看P-2-P的这个拓扑信息,可以看到对方的RID为5.5.5.5,自己与对方相连的接口为10.1.25.2,P2P链路上没有DR产生的2类LSA,我们可以通过描述将双方直接相连即可,metric值为48(通过10*8/链路带宽计算,小于1就取1,例如G口,就是小于1最后取1,大于1的话就取整数,例如1.9取1)。

三、R2相连的路由信息描绘完成后,现在我们来看R3发送过来的1类LSA:

ospf外部路由引入 实验 ospf引入路由的type_路由协议_12


这里可以看到2个拓扑信息,其中与1相连的我们已经知道了,还有一个与4相连的P2P信息,同R2上的方式,我们将R3与R4相连即可。四、再来看从R4上的得到的1类LSA:

ospf外部路由引入 实验 ospf引入路由的type_OSPF_13


也是有两条拓扑信息,我们将其与之前的进行对比,发现这两条链路是与R3和R1相连的链路,已经连接完成了。五、最后查看从R5上查看到的1类LSA:

ospf外部路由引入 实验 ospf引入路由的type_路由协议_14


R5上只有一条拓扑信息,与R2相连,P2P链路。这样的话我们在R1上就已经描绘出了整个区域内的拓扑。六、破除环路:

可以明显可以看出有环路,我们就需要通过med值的大小的累加来计算最优的路径(G口med为1,S口为48):现在对于R1来说很容易就计算出来的最终的无环路路径:

ospf外部路由引入 实验 ospf引入路由的type_路由协议_15


七、路由添加:

现在我们已经计算出了最短的路径树,只需要将相应的StubNet路由添加到每个节点上即可,然后根据最短路径树计算出路由需要的路由条目进行加表:

ospf外部路由引入 实验 ospf引入路由的type_链路_16

iSPF和PRC:

iSPF:
在路由计算方面,优化网络中的SPF计算过程,可降低计算负荷和收敛时间。iSPF其主要思想是"增量计算" 即只计算变化的拓扑部分,而不是全部计算。

网络拓扑变化的位置不同,受到影响的范围就不同,iSPF 计算所消耗的时间就不同,所以,iSPF计算所消耗的时间是不确定的,即使是在相同的网络结构中 。当然,如果发生变化的是根节点的边,那么受影响的范围就包括了整个拓扑,在这种情况下,iSPF当于进行了全部重新计算 Full SPF)。

目前的OSPFv2使用的就是iSPF算法,但是第一次计算拓扑的时候,运行的都是Full SPF计算,只有后续拓扑发送变动,才是iSPF计算。

PRC:
任何条路由都是网络节点上的"一片树叶"即叶子节点,从根节点看,只要到树中任何实(或虚)节点的最短路径确定了,到叶子节点的最短路径也就确定了,那么到节点发布的路由的最短路径也就确定了。因此,PRC就是在iSPF计算出的最短路径树基础上再来计算叶子节点代表的路由。当有路由信息改变, PRC直接判断在哪条链路上的节点的哪个叶子出现变化,之后直接进行路由的计算与更新,而不需要进行拓扑运算。

总结:

  1. 区域内的路由变化进行PRC,区域内地拓扑变化进行iSPF,区域间的路由变化进行PRC。
  2. 计算速度和资源消耗:SPF>iSPF>PRC。