发明内容
本发明实施例提供一种LSA的传输方法和设备,以减小LSA的大小,并节省了网络带宽和系统资源。
为了达到上述目的,本发明实施例提供一种链路状态通告LSA的传输方法,应用于包括核心网络设备、上行网络设备和多个下行网络设备的开放最短路径优先OSPF网络中,各下行网络设备分别通过所述核心网络设备相连接,且所述核心网络设备与各下行网络设备的下行直连接口属于同一个主区域,该方法包括以下步骤:
所述核心网络设备为自身与各下行网络设备的下行直连接口分别建立各下行直连接口所对应的虚拟子区域;
所述核心网络设备在下行直连接口所对应的虚拟子区域内与所述下行直连接口所对应的下行网络设备建立OSPF邻居;
所述核心网络设备在所述下行直连接口所对应的虚拟子区域内生成LSA,向所述下行直连接口所对应的虚拟子区域内的OSPF邻居传输所述生成的LSA,并拒绝向其他下行直连接口所对应的虚拟子区域内的OSPF邻居传输所述生成的LSA;以及,所述核心网络设备接收来自所述下行直连接口所对应的虚拟子区域内的OSPF邻居的LSA,并拒绝向其他下行直连接口所对应的虚拟子区域内的OSPF邻居传输所述接收的LSA。
所述核心网络设备为自身与各下行网络设备的下行直连接口分别建立各下行直连接口所对应的虚拟子区域,具体包括:
当所述核心网络设备与下行网络设备的下行直连接口对应有虚拟子区域创建标记时,所述核心网络设备根据所述下行直连接口对应的主区域以及所述下行直连接口的接口索引为所述下行直连接口建立对应的虚拟子区域;其中,所述虚拟子区域创建标记用于标识需要对相应下行直连接口建立虚拟子区域;所述下行直连接口对应的虚拟子区域具有所述主区域的所有属性,且所述下行直连接口对应的虚拟子区域通过所述主区域以及所述下行直连接口的接口索引值来标识。
所述核心网络设备在下行直连接口所对应的虚拟子区域内与所述下行直连接口所对应的下行网络设备建立OSPF邻居,具体包括:
所述核心网络设备从下行直连接口接收来自下行网络设备的第一Hello报文,并利用所述第一Hello报文在所述下行直连接口所对应的虚拟子区域内与所述下行网络设备建立OSPF邻居;以及,所述核心网络设备通过所述下行直连接口向所述下行网络设备发送第二Hello报文,由所述下行网络设备利用所述第二Hello报文与所述核心网络设备建立OSPF邻居;其中,所述第二Hello报文中携带的区域信息为所述下行直连接口对应的主区域的信息。
所述核心网络设备接收来自所述下行直连接口所对应的虚拟子区域内的OSPF邻居的LSA,之后还包括:
所述核心网络设备向自身与上行网络设备建立的OSPF邻居传输所述接收的LSA。
所述核心网络设备在所述下行直连接口所对应的虚拟子区域内所生成的LSA,LSA头部至少包含有:连接状态类型、连接状态标识、宣告路由器信息、所述虚拟子区域内的下行直连接口的描述信息、描述默认网段链路类型的信息。
所述核心网络设备在下行直连接口所对应的虚拟子区域内与所述下行直连接口所对应的下行网络设备建立OSPF邻居,之后还包括:
所述核心网络设备在所述主区域内生成LSA,向自身与上行网络设备建立的OSPF邻居传输所述主区域内生成的LSA,并拒绝向各下行直连接口所对应的虚拟子区域内的OSPF邻居传输所述主区域内生成的LSA。
本发明实施例提供一种链路状态通告LSA的传输设备,作为核心网络设备应用于包括所述核心网络设备、上行网络设备和多个下行网络设备的开放最短路径优先OSPF网络中,各下行网络设备分别通过所述核心网络设备相连接,且所述核心网络设备与各下行网络设备的下行直连接口属于同一个主区域,所述核心网络设备包括:
第一建立模块,用于为所述核心网络设备与各下行网络设备的下行直连接口分别建立各下行直连接口所对应的虚拟子区域;
第二建立模块,用于在下行直连接口所对应的虚拟子区域内与所述下行直连接口所对应的下行网络设备建立OSPF邻居;
传输模块,用于在所述下行直连接口所对应的虚拟子区域内生成LSA,向所述下行直连接口所对应的虚拟子区域内的OSPF邻居传输所述生成的LSA,并拒绝向其他下行直连接口所对应的虚拟子区域内的OSPF邻居传输所述生成的LSA;以及,接收来自所述下行直连接口所对应的虚拟子区域内的OSPF邻居的LSA,并拒绝向其他下行直连接口所对应的虚拟子区域内的OSPF邻居传输接收的LSA。
所述第一建立模块,具体用于当所述核心网络设备与下行网络设备的下行直连接口对应有虚拟子区域创建标记时,根据所述下行直连接口对应的主区域以及所述下行直连接口的接口索引为所述下行直连接口建立对应的虚拟子区域;其中,所述虚拟子区域创建标记用于标识需要对相应下行直连接口建立虚拟子区域;所述下行直连接口对应的虚拟子区域具有所述主区域的所有属性,且所述下行直连接口对应的虚拟子区域通过所述主区域以及所述下行直连接口的接口索引值来标识。
所述第二建立模块,具体用于从下行直连接口接收来自下行网络设备的第一Hello报文,并利用所述第一Hello报文在所述下行直连接口所对应的虚拟子区域内与所述下行网络设备建立OSPF邻居;以及,通过所述下行直连接口向所述下行网络设备发送第二Hello报文,由所述下行网络设备利用所述第二Hello报文与所述核心网络设备建立OSPF邻居;其中,所述第二Hello报文中携带的区域信息为所述下行直连接口对应的主区域的信息。
所述传输模块,还用于向所述核心网络设备与上行网络设备建立的OSPF邻居传输所述接收的LSA。
在所述下行直连接口所对应的虚拟子区域内所生成的LSA,LSA头部至少包含有:连接状态类型、连接状态标识、宣告路由器信息、所述虚拟子区域内的下行直连接口的描述信息、描述默认网段链路类型的信息。
所述传输模块,还用于在主区域内生成LSA,向所述核心网络设备与上行网络设备建立的OSPF邻居传输所述主区域内生成的LSA,并拒绝向各下行直连接口所对应的虚拟子区域内的OSPF邻居传输所述主区域内生成的LSA。
与现有技术相比,本发明实施例至少具有以下优点:本发明实施例中,通过建立各个下行直连接口所对应的虚拟子区域以及在下行直连接口所对应的虚拟子区域内建立OSPF邻居,从而可以减小LSA的大小;并且在OSPF邻居发生变化或者有新的下行直连接口加入到网络时,并不影响其他下行链路的LSA以及核心网络设备的路由计算量,节省了网络带宽和系统资源。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
本发明实施例提出一种LSA的传输方法,该方法适用于大量链路汇聚的组网场景中,且该组网中多个下行直连接口属于同一个区域,且需要建立大量的OSPF邻居;例如,该方法适用于金融、银行等行业的大量链路汇聚的组网场景,且其每个下行直连接口只建立一个OSPF邻居。
具体的,以图2为本发明实施例的应用场景示意图,该方法应用于包括核心网络设备、上行网络设备和多个下行网络设备的OSPF网络中,各下行网络设备之间没有链路相连,且各下行网络设备分别通过核心网络设备相连接(即各下行网络设备之间的交互需要通过核心网络设备),且核心网络设备与各下行网络设备建立OSPF邻居的接口为下行直连接口,核心网络设备与各下行网络设备的下行直连接口属于同一个区域(以主区域为例进行后续说明)。
在图2中,核心网络设备与下行网络设备1之间为下行直连接口1,核心网络设备与下行网络设备2之间为下行直连接口2,核心网络设备与下行网络设备3之间为下行直连接口3,且下行直连接口1、下行直连接口2以及下行直连接口3属于同一个主区域(如area0);基于此应用场景,需要在核心网络设备上配置主区域,并将下行直连接口1、下行直连接口2以及下行直连接口3加入到对应的主区域中。
如图3所示,该LSA的传输方法包括以下步骤:
步骤301,核心网络设备为自身与各下行网络设备的下行直连接口分别建立各下行直连接口所对应的虚拟子区域;本应用场景下,核心网络设备需要为下行直连接口1建立对应的虚拟子区域,需要为下行直连接口2建立对应的虚拟子区域,且需要为下行直连接口3建立对应的虚拟子区域。
本发明实施例中,可以设置虚拟子区域创建标记,该虚拟子区域创建标记用于标识需要对相应下行直连接口建立虚拟子区域,且该虚拟子区域创建标记存储在对应的下行直连接口下;当核心网络设备与下行网络设备的下行直连接口对应有虚拟子区域创建标记时,则说明需要为该下行直连接口建立对应的虚拟子区域;否则,说明不需要为该下行直连接口建立对应的虚拟子区域;在实际应用中,该虚拟子区域创建标记可以通过用户手工方式进行设定,且可以为核心网络设备与每个下行网络设备的下行直连接口设置虚拟子区域创建标记。
本发明实施例中,虚拟子区域具体为从主区域中虚拟出来的区域,该虚拟子区域具有主区域的所有属性(如stub、nssa等属性),但是不增加新的属性,且不会由于增加多个虚拟子区域而使对应的核心网络设备作为ABR(Area Border Router,区域边界路由器)。进一步的,虚拟子区域通过主区域以及下行直连接口的接口索引值(index)来标识,该虚拟子区域只在该下行直连接口本地生效;且该虚拟子区域用于存储虚拟子区域内本地生成的LSA以及本虚拟子区域中下行OSPF邻居发送过来的虚拟子区域内的LSA。
基于上述虚拟子区域创建标记以及虚拟子区域的定义,核心网络设备为自身与各下行网络设备的下行直连接口分别建立各下行直连接口所对应的虚拟子区域,包括:当核心网络设备与下行网络设备的下行直连接口对应有虚拟子区域创建标记时,根据该下行直连接口对应的主区域以及该下行直连接口的接口索引为该下行直连接口建立对应的虚拟子区域(建立虚拟子区域的流程可以复用主区域的建立流程);当核心网络设备与下行网络设备的下行直连接口没有对应虚拟子区域创建标记时,则不需要为该下行直连接口建立对应的虚拟子区域。
如表1所示,为根据下行直连接口对应的主区域以及该下行直连接口的接口索引为该下行直连接口建立对应的虚拟子区域的结构。在表1中,接口索引为下行直连接口的接口索引值,主区域为下行直连接口对应的主区域,虚拟子区域为下行直连接口对应的虚拟子区域,其为主区域+接口索引值。
表1 虚拟子区域的结构
接口索引 |
主区域 |
虚拟子区域 |
1 |
0.0.0.0 |
0.0.0.0:1 |
本发明实施例中,核心网络设备在为自身与各下行网络设备的下行直连接口分别建立各下行直连接口所对应的虚拟子区域之后,相应的下行直连接口将加入到对应的虚拟子区域中,且由于核心网络设备上各下行直连接口的接口索引值不同,因此不同的下行直连接口会加入到不同的虚拟子区域中,从而相互隔离。
步骤302,核心网络设备在下行直连接口所对应的虚拟子区域内与下行直连接口所对应的下行网络设备建立OSPF邻居;本应用场景下,核心网络设备需要在下行直连接口1所对应的虚拟子区域内与下行网络设备1建立OSPF邻居,需要在下行直连接口2所对应的虚拟子区域内与下行网络设备2建立OSPF邻居,需要在下行直连接口3所对应的虚拟子区域内与下行网络设备3建立OSPF邻居。
本发明实施例中,在OSPF邻居的建立过程中:
(1)当核心网络设备从下行直连接口接收到来自下行网络设备的第一Hello报文时,需要利用该第一Hello报文在下行直连接口所对应的虚拟子区域内与下行网络设备建立OSPF邻居;其中,该第一Hello中携带了下行直连接口所对应的主区域的信息,且利用该下行直连接口对应的主区域以及该下行直连接口的接口索引,可以确定出该下行直连接口所对应的虚拟子区域,并可以在该下行直连接口所对应的虚拟子区域内与下行网络设备建立OSPF邻居。
例如,当核心网络设备从下行直连接口1接收到第一Hello报文时,由于该第一Hello报文中携带了下行直连接口1所对应的主区域的信息,因此该核心网络设备可以直接利用下行直连接口1所对应的主区域以及该下行直连接口1的接口索引确定出下行直连接口1对应的虚拟子区域,并可以在该下行直连接口1所对应的虚拟子区域内与下行网络设备1建立OSPF邻居。
(2)核心网络设备通过下行直连接口向下行网络设备发送第二Hello报文,由下行网络设备利用该第二Hello报文与核心网络设备建立OSPF邻居;其中,该第二Hello报文中携带的区域信息为下行直连接口对应的主区域的信息(即主区域的区域号,而不是虚拟子区域的区域号)。
本发明实施例中,在OSPF邻居的建立过程中还需要发送虚拟子区域下的LSA,且在OSPF邻居建立之后还需要计算虚拟子区域下的路由。其中,对于虚拟子区域下的LSA,可以为在虚拟子区域内产生的Router LSA,且在下行直连接口为DR(Designated Router,指定路由器)接口时,还可以为虚拟子区域内产生的Network LSA。
基于上述建立的各下行直连接口对应的虚拟子区域以及OSPF邻居,则LSA的传输过程包括但不限于以下过程:
(1)核心网络设备在下行直连接口所对应的虚拟子区域内生成LSA,并需要向下行直连接口所对应的虚拟子区域内的OSPF邻居传输该生成的LSA,并拒绝向其他下行直连接口所对应的虚拟子区域内的OSPF邻居传输该生成的LSA;例如,对于在下行直连接口1所对应的虚拟子区域内生成的LSA,需要向下行直连接口1所对应的虚拟子区域内的OSPF邻居传输该生成的LSA,并拒绝向下行直连接口2、下行直连接口3所对应的虚拟子区域内的OSPF邻居传输该生成的LSA。
(2)核心网络设备在主区域内生成LSA,并向核心网络设备与上行网络设备建立的OSPF邻居传输该主区域内生成的LSA,以及拒绝向各下行直连接口所对应的虚拟子区域内的OSPF邻居传输该主区域内生成的LSA。
其中,对于在主区域内生成的LSA,可以为与虚拟子区域内生成的LSA无关的LSA,和/或,复制的虚拟子区域内生成的LSA;其可以包含主区域使能的所有接口,该LSA只用于泛洪到核心网络设备与上行网络设备建立的OSPF邻居,而不能泛洪到各下行直连接口所对应的虚拟子区域内的OSPF邻居;当某个下行直连接口发生状态变化时,虽然会影响该LSA发生变化,但由于该LSA只用于泛洪到核心网络设备与上行网络设备建立的OSPF邻居,因此不影响各下行直连接口所对应的虚拟子区域内的LSA泛洪过程,继而可以有效降低其他链路上的流量,并降低了其他下行OSPF邻居设备的负担。
(3)核心网络设备在接收到来自下行直连接口所对应的虚拟子区域内的OSPF邻居的LSA之后,当需要将该LSA传输给该下行直连接口所对应的虚拟子区域内的OSPF邻居时,则该核心网络设备需要向该下行直连接口所对应的虚拟子区域内的OSPF邻居传输该接收的LSA,并拒绝向其他下行直连接口所对应的虚拟子区域内的OSPF邻居传输接收的LSA。其中,当该下行直连接口为DR接口或者为P2MP(Point 2 Multiple Point,点对多点)接口时,则该核心网设备需要将该LSA传输给该下行直连接口所对应的虚拟子区域内的OSPF邻居。
例如,对于来自下行直连接口1所对应的虚拟子区域内的OSPF邻居的LSA,核心网络设备需要向下行直连接口1所对应的虚拟子区域内的OSPF邻居传输该接收的LSA,并拒绝向下行直连接口2、下行直连接口3所对应的虚拟子区域内的OSPF邻居传输该接收的LSA。
(4)核心网络设备在接收到来自下行直连接口所对应的虚拟子区域内的OSPF邻居的LSA之后,向核心网络设备与上行网络设备建立的OSPF邻居传输该接收的LSA,并拒绝向其他下行直连接口所对应的虚拟子区域内的OSPF邻居传输接收的LSA;例如,对于来自下行直连接口1所对应的虚拟子区域内的OSPF邻居的LSA,如果接收的LSA为需要在下行直连接口对应的主区域内传输的LSA或者为需要在AS(自治系统)域内传输的LSA,则需要向下行直连接口1所对应的虚拟子区域内的OSPF邻居传输该接收的LSA,向核心网络设备与上行网络设备建立的OSPF邻居传输该接收的LSA,并拒绝向下行直连接口2、下行直连接口3所对应的虚拟子区域内的OSPF邻居传输该接收的LSA。
需要说明的是,在实际应用中,对于核心网络设备自身产生的LSA(不是虚拟子区域内的LSA),在缺省情况下不会向各虚拟子区域内的OSPF邻居传输该产生的LSA,但是可以通过用户配置等方式,来允许核心网络设备向某个虚拟子区域内的OSPF邻居传输该产生的LSA,在此不再赘述。
基于上述LSA的传输方式,当虚拟子区域内的OSPF邻居的LSA发生变化时,由于LSA对应于虚拟子区域,因此只会触发本虚拟子区域内的LSA的传输过程,以及在本虚拟子区域内进行路由计算即可,不需要触发整个OSPF的计算过程,从而有效减小了核心网络设备的路由计算压力。
进一步的,对于核心网络设备在下行直连接口所对应的虚拟子区域内所生成的LSA(如Router LSA),由于虚拟子区域只包含一个下行直连接口,因此LSA头部可以至少包含有:连接状态类型/LS类型、连接状态标识/LS标识、宣告路由器信息、Options(选项)字段、虚拟子区域内的下行直连接口的描述信息、描述默认网段链路类型的信息(即Link Type为stubnet的link的信息)等。其中,上述连接状态类型/LS类型、连接状态标识/LS标识、宣告路由器信息、Options字段等均与主区域相同;而虚拟子区域内的下行直连接口的描述信息中只包含了本虚拟子区域内的下行直连接口的描述信息。
基于上述方式生成的Router LSA,由于虚拟子区域只包含一个下行直连接口,因此可以有效缩短Router LSA的大小,同时不需要其他LSA就可以保证下行OSPF邻居可以将默认路由计算出来。
此外,在主区域中新增一个下行直连接口或者其中某个下行直连接口链路震荡的情况下,只会影响该下行直连接口所属的虚拟子区域中的LSA变化,对于其他虚拟子区域中的LSA,由于不包含该下行直连接口的信息,所以不会引起LSA的泛洪,从而有效减少其他链路上的流量,降低其他下行OSPF邻居设备的负担。
基于与上述方法同样的发明构思,本发明还提出了一种链路状态通告LSA的传输设备,作为核心网络设备应用于包括所述核心网络设备、上行网络设备和多个下行网络设备的开放最短路径优先OSPF网络中,各下行网络设备分别通过所述核心网络设备相连接,且所述核心网络设备与各下行网络设备的下行直连接口属于同一个主区域,如图4所示,所述核心网络设备包括:
第一建立模块11,用于为所述核心网络设备与各下行网络设备的下行直连接口分别建立各下行直连接口所对应的虚拟子区域;
第二建立模块12,用于在下行直连接口所对应的虚拟子区域内与所述下行直连接口所对应的下行网络设备建立OSPF邻居;
传输模块13,用于在所述下行直连接口所对应的虚拟子区域内生成LSA,向所述下行直连接口所对应的虚拟子区域内的OSPF邻居传输所述生成的LSA,并拒绝向其他下行直连接口所对应的虚拟子区域内的OSPF邻居传输所述生成的LSA;以及,接收来自所述下行直连接口所对应的虚拟子区域内的OSPF邻居的LSA,并拒绝向其他下行直连接口所对应的虚拟子区域内的OSPF邻居传输接收的LSA。
所述第一建立模块11,具体用于当所述核心网络设备与下行网络设备的下行直连接口对应有虚拟子区域创建标记时,根据所述下行直连接口对应的主区域以及所述下行直连接口的接口索引为所述下行直连接口建立对应的虚拟子区域;其中,所述虚拟子区域创建标记用于标识需要对相应下行直连接口建立虚拟子区域;所述下行直连接口对应的虚拟子区域具有所述主区域的所有属性,且所述下行直连接口对应的虚拟子区域通过所述主区域以及所述下行直连接口的接口索引值来标识。
所述第二建立模块12,具体用于从下行直连接口接收来自下行网络设备的第一Hello报文,并利用所述第一Hello报文在所述下行直连接口所对应的虚拟子区域内与所述下行网络设备建立OSPF邻居;以及,通过所述下行直连接口向所述下行网络设备发送第二Hello报文,由所述下行网络设备利用所述第二Hello报文与所述核心网络设备建立OSPF邻居;其中,所述第二Hello报文中携带的区域信息为所述下行直连接口对应的主区域的信息。
所述传输模块13,还用于向所述核心网络设备与上行网络设备建立的OSPF邻居传输所述接收的LSA。
本发明实施例中,在所述下行直连接口所对应的虚拟子区域内所生成的LSA,LSA头部至少包含有:连接状态类型、连接状态标识、宣告路由器信息、所述虚拟子区域内的下行直连接口的描述信息、描述默认网段链路类型的信息。
所述传输模块13,还用于在主区域内生成LSA,向所述核心网络设备与上行网络设备建立的OSPF邻居传输所述主区域内生成的LSA,并拒绝向各下行直连接口所对应的虚拟子区域内的OSPF邻居传输所述主区域内生成的LSA。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。