一种SID获取方法和装置与流程

文档序号:14281519阅读:448来源:国知局
一种SID获取方法和装置与流程
本申请涉及段路由(segmentrouting,sr)技术,尤其涉及一种段标识(segmentidentifier,sid)获取方法和装置。
背景技术
:sr采用源路径选择机制,可以预先在源节点封装好路径所有经过节点的sid,当报文经过sr节点时,sr节点根据报文的sid对报文进行转发。通过sr指定路径转发功能,可以便捷地实现网络的负载均衡和流程工程,以及快速重路由等复杂网络功能。可以通过扩展的内部网关协议(interiorgatewayprotocol,igp)实现igp域内的sid通告和交互。但这种方式可能需要网络中的每个转发节点都运行扩展的igp以实现sid的通告,实现上比较复杂。技术实现要素:有鉴于此,本申请提供一种sid获取方法和装置,只在sdn控制器上运行sr协议,通过sdn控制器来实现sid的分配和通告,可以充分发挥sdn控制器集中控制的优点,实现上比较简单。具体地,本申请是通过如下技术方案实现的:本申请第一方面,提供了一种sid获取方法,所述方法应用于sdn控制器,所述方法包括:收集网络拓扑;获取所述网络拓扑中各转发节点的标签块;根据所述网络拓扑和各转发节点的标签块,为各转发节点分配对应的sid;将分配好的sid发送给对应的转发节点。本申请第二方面,提供了一种sdn控制器,具有实现上述方法中sdn控制器的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块或单元。一种可能的实现方式中,所述sdn控制器包括:收集模块,用于收集网络拓扑;获取模块,用于获取所述网络拓扑中各转发节点的标签块;分配模块,用于根据所述网络拓扑和各转发节点的标签块,为各转发节点分配对应的sid;发送模块,用于将分配好的sid发送给对应的转发节点。另一种可能的实现方式中,所述sdn控制器包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线系统相互连接;所述处理器通过读取所述存储器中存储的逻辑指令,执行本申请第一方面所述的sid获取方法。利用本申请提供的方案,通过sdn控制器来实现sid的分配和通告,只需在sdn控制器上运行sr协议,各转发节点上不需要运行sr协议,如此可以充分发挥sdn控制器集中控制的优点,在实现上比较简单。附图说明图1是本申请实施例提供的一种邻接段和前缀段的示意图;图2是本申请实施例提供的一种sid获取方法应用的系统架构的示意图;图3是本申请实施例提供的一种sid获取方法的交互过程图;图4是本申请一实施例的示意图;图5为本申请实施例提供的一种sdn控制器的结构示意图;图6为本申请实施例提供的另一种sdn控制器的结构示意图;图7为本申请实施例提供的一种转发节点的结构示意图;图8为本申请实施例提供的另一种转发节点的结构示意图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。以下,对本申请中的部分用语进行解释说明。本申请中,“转发节点”可以指网络设备,比如“网元”,可以是路由器、交换机、光传送网(opticaltransportnetwork,otn)设备、分组传送网(packettransportnetwork,ptn)设备、波分复用(wavelengthdivisionmultiplexing,wdm)设备或服务器。“sr”是一种由国际互联网工程任务组(theinternetengineeringtaskforce,ietf)推动的路由转发协议。sr的段类型有如下两种:邻接类型的段(adjacencysegment,可简称为邻接段)和前缀/节点类型的段(prefix/nodesegment,可简称为前缀段或节点段)。其中,邻接段表示当前节点通向其邻居节点的一跳路径。前缀段表示当前节点通向网络内相关联节点的一跳或多跳最短路径。例如,图1示出了一条从节点a到节点z的路径,该路径包含了三个段:节点a到节点c的前缀段,节点c到节点o的邻接段和节点o到节点z的前缀段。sr将标签(label)作为sid指导报文转发。与上述两种sr的段类型对应的,标签也可分为邻接标签和前缀标签(或节点标签)。以图1为例,若要让报文沿图1中箭头所示的路径从节点a转发到节点z,可以将该路径包含的上述三个段的标签依次压入报文的标签栈中,即依次压入节点o到节点z这一前缀段的前缀标签、节点c到节点o这一邻接段的邻接标签和节点a到节点c这一前缀段的前缀标签。特别的,最后压入的节点a到节点c的段的前缀标签,用于让这条路径的头节点a可以根据此前缀标签查询标签转发表项,根据查表结果,决定是弹出此前缀标签,还是将此前缀标签替换成表项对应的出标签。“标签块”,为[基值(即最小值),最大值]范围内取值连续的一段设备预留标签。每个转发节点可以为邻接标签和前缀标签分别预留一个标签块,即邻接标签块(srlocalblock,srlb)和全局标签块(srglobalblock,srgb)。这两个标签块可以是连续的一段,如srlb为[16,999],srgb为[1000,1999],或者srlb和srgb也可以是独立的两段,如srlb为[16,999],srgb为[5000,5999]。不同转发节点预留的srlb和srgb的范围可以相同,也可以不同。“标签转发表项”,即以多协议标签交换(mpls)标签为匹配域的转发表项,一般包括下一跳地址、标签操作和对应的标签信息,该标签操作包括弹出标签、压入标签和交换标签等。当带标签报文到达转发节点时,转发节点可以根据带标签报文的最外层标签查找标签转发表项。当带标签报文的最外层标签与某个标签转发表项的入标签匹配时,即可根据该匹配的标签转发表项对该带标签报文进行处理。比如,当标签转发表项指示的标签操作为交换标签时,可以将该带标签报文中的外层标签替换成标签转发表项指定的出标签,然后向标签转发表项指定的下一跳地址转发该带标签报文。“ip前缀”:ip地址段的表示方法可以有以下两种,一种是网络地址和掩码的表示方式,如10.1.1.0255.255.255;另一种是网络地址/掩码长度的表示方式,如10.1.1.0/24,其中ip前缀指的就是按后一种方式表示的一个ip地址段。一个转发节点可以有多个ip前缀。例如,一个转发节点上有3个本地环回(loopback)接口,每个loopback接口都有各自的ip地址,比如loopback0接口的ip地址为10.1.1.1/32,loopback1接口的ip地址为20.1.1.1/24,loopback2接口的ip地址为30.1.1.1/32,那么该转发节点上就有3个ip前缀,分别为10.1.1.1/32、20.1.1.0/24、30.1.1.1/32。下面结合说明书附图和各实施例对本申请技术方案进行说明。目前通过扩展的igp通告sid存在实现复杂的问题。为此,本申请实施例提出了一种sid获取方法和装置,通过软件定义网络(softwaredefinednetworking,sdn)控制器来实现sid的分配和通告,这种方式只需在sdn控制器上运行sr协议,各转发节点上不需要运行sr协议,如此可以充分发挥sdn控制器集中控制的优点,在实现上比较简单。本申请实施例提供的sid获取方法,可应用于图2所示的系统,该系统包括sdn控制器100和多个转发节点,如r1101、r2102、r3103、r4104和r5105。sdn控制器100,用于根据网络拓扑和转发节点的标签块,为网络域中的转发节点分配sid,包括为每个转发节点的邻接接口ip(internetprotocol,网际协议)地址分配邻接标签,为每个转发节点的ip前缀分配前缀标签;以及将分配好的sid发送给相应的转发节点。转发节点,用于转发报文。在本申请实施例中可以用于接收并维护sdn控制器100下发的sid。本申请实施例中各转发节点可以不运行sr协议,即转发节点不作sid的分配和通告,直接接收sdn控制器100发送的sid,然后根据接收的sid对本节点上的标签转发表项进行激活,根据激活的标签转发表项转发报文。如图3所示为本申请实施例提供的一种sid获取方法的交互过程图,所述方法包括:步骤301:sdn控制器收集网络拓扑。sdn控制器可以通过拓扑收集机制收集网络拓扑。例如,可以通过边界网关协议(bordergatewayprotocol,bgp)报文从网络域中一台支持bgp的转发节点上收集网络域的链路状态信息(linkstate),然后根据收集到的链路状态信息计算出网络域的网络拓扑。其中,转发节点返回给sdn控制器的链路状态信息可以携带在bgp更新(update)报文中。得到的网络拓扑可以包括网络域中的转发节点,转发节点上的ip前缀,转发节点连接的子网,转发节点之间的链路,以及链路两端的转发节点的接口地址等信息。步骤302:sdn控制器获取所述网络拓扑中各转发节点的标签块。sdn控制器可以通过网络配置(netconf)接口,向网络拓扑中各转发节点发送请求,然后接收网络拓扑中各转发节点返回的响应,转发节点返回的响应中携带了转发节点的标签块。各转发节点返回的标签块包括了本节点的srlb和sglb。当然,sdn控制器也可以通过其它方式获取各转发节点的标签块,如通过简单网络管理协议(simplenetworkmanagementprotocol,snmp)。步骤303:sdn控制器根据所述网络拓扑和各转发节点的标签块,为各转发节点分配对应的sid。本申请实施例中,sdn控制器分配的sid主要包括邻接标签和前缀标签两种。sdn控制器为每个转发节点分配sid时执行相同的步骤,以下以第一转发节点为例,介绍sdn控制器如何为转发节点分配邻接标签和前缀标签,其余转发节点可以按照第一转发节点进行处理。为第一转发节点的邻接接口ip地址分配邻接标签时,执行以下步骤:第一步,根据步骤301中获得的网络拓扑确定所述第一转发节点连接的邻接接口ip地址。例如,如果所述第一转发节点为图2中的r1,那么根据网络拓扑可以确定出r1的邻居节点有r2和r3,r2上与r1连接的接口的ip地址为a2,r3上与r1连接的接口的ip地址为a3,从而r1的邻接接口ip地址包括a2和a3。第二步,从所述第一转发节点的srlb中为确定的所述第一转发节点的每一邻接接口ip地址分配邻接标签,不同邻接接口ip地址分配不同的邻接标签。例如,如果图2中r1的srlb为[16,999],那么可以为r1的邻接接口ip地址a2和a3在[16,999]中分配不同的邻接标签,如为a2分配邻接标签16,为a3分配邻接标签17。为第一转发节点的ip前缀分配前缀标签时,执行以下步骤:第一步,为所述第一转发节点的每个ip前缀分配索引值,所述索引值在所述网络域内是全局唯一的。在网络域内,一个索引值被分配给一个ip前缀。第二步,针对所述第一转发节点的每一ip前缀,根据该ip前缀被分配的索引值和各个转发节点的srgb,计算该ip前缀在各个转发节点上的前缀标签。在一种可选的实现方式中,sdn控制器可以基于转发节点的srgb的基值和ip前缀的索引值,计算ip前缀分别在每个转发节点上的前缀标签。例如,在计算第一转发节点的第一ip前缀在第二转发节点上的前缀标签时,可以将所述第二转发节点的srgb的基值与所述第一ip前缀的索引值相加,将得到的和值作为所述第一ip前缀在所述第二转发节点上的前缀标签值,得到的前缀标签值应落在所述第二转发节点的srgb内。步骤304:sdn控制器将分配好的sid发送给对应的转发节点。sdn控制器可以通过netconf接口将分配好的sid下发给对应的转发节点。sid包括邻接标签和前缀标签。此处sid与转发节点的“对应”关系可以这样理解:为第一转发节点的邻接接口ip地址分配的邻接标签可以发送给所述第一转发节点;为第一转发节点的第一ip前缀分配的该第一ip前缀在第二转发节点上的前缀标签,可以发送给所述第二转发节点。例如,下述表1可以仅发送给r1,下述表2可以仅发送给r2,这样可以减少节点的负担,节省带宽。可选的,sdn控制器可以基于分配好的邻接标签生成第一转发信息,所述第一转发信息包括邻接标签以及与邻接标签对应的下一跳地址;以及sdn控制器可以基于分配好的前缀标签生成第二转发信息,所述第二转发信息包括前缀标签以及与前缀标签对应的下一跳地址和出标签。从而,sdn可以将所述第一转发信息和所述第二转发信息发送给对应的转发节点。例如,以图2中的r1为例,在下发邻接标签给r1时,sdn控制器可以将与该邻接标签相关的下一跳地址一同下发给r1,如表1所示。表1发送给r1的邻接标签和与之相关的下一跳地址又例如,仍以图2中的r1为例,在下发r1的ip前缀1在r2上的前缀标签时,sdn控制器可以将与该前缀标签相关的下一跳地址以及出标签一同下发给r2,如表2所示。表2r1的ip前缀1在r2上的前缀标签和与之相关的下一跳地址及出标签相应的,各转发节点上可以设置不同的应用程序编程接口(applicationprogramminginterface,api),分别用于接收邻接标签和前缀标签。例如,转发节点可以与sdn控制器事先约定,通过api0接收邻接标签,通过api1接收前缀标签。步骤305:转发节点根据接收的sid对本节点上的标签转发表项进行激活。可选的,所述标签转发表项可以由转发节点生成,也可以由sdn控制器生成再下发给转发节点。转发节点或sdn控制器可以根据如上表1和表2所示的邻接标签、前缀标签和相关的下一跳地址、出标签等信息,为网络拓扑中的各转发路径生成标签转发表项。其中,转发节点可以直接激活以接收到的邻接标签为入标签的标签转发表项。转发节点可以激活入标签为接收到的前缀标签且出标签不为空的标签转发表项,以及激活入标签为接收到的前缀标签且出标签为空的标签转发表项。可选的,如果入标签为前缀标签且出标签不为空的标签转发表项仅有一个,则转发节点可以直接激活这一个标签转发表项;如果入标签为前缀标签且出标签不为空的标签转发表项有多个,则转发节点可以仅激活其中对应的路由为最优路由的一个或多个标签转发表项。实际应用中,转发节点的表项管理模块或代理模块可以通过将标签转发表项安装到节点自身的软件层或硬件层,来实现对标签转发表项的激活。此处所说的最优路由可以是最短路径路由,也可以指按照其它原则匹配到的最佳匹配路由。以最优路由是最短路径路由为例,只激活最优路由所在的标签转发表项可以使得报文总是以最短路径转发,从而提高报文传输效率。步骤306:转发节点对与激活的标签转发表项匹配的报文进行处理。例如,转发节点可以将报文携带的标签与标签转发表项进行一一匹配。如果报文携带的标签与某个标签转发表项的入标签匹配,则按照该匹配表项所指示的标签操作,对报文的标签栈进行pop(去掉顶层标签)操作或swap(交换标签)操作,并将该报文转发到该匹配表项所指示的下一跳地址。为了更清楚地说明本申请的技术方案,下面通过一个实施例对上述技术方案做进一步的说明,需要说明的是,此实施例仅仅是本申请的一种实现方式,不构成对本申请的限定。一网络域内的转发节点路由器(router)a/b/c/d/e的连接关系参见图4所示,每台设备上都有一个loopback0接口,routera上额外有一个looback1接口。设备的路由器标识(routerid)设置为loopback0接口的ip地址。本实施例以每台设备的所有邻接接口ip地址对应的邻接标签和设备上的一个loopback接口的ip地址/子网掩码长度对应的ip前缀为例,说明邻接标签和前缀标签。表3所示为各转发节点的预配置信息。表3各转发节点的预配置信息1、控制器收集网络域的链路状态信息,计算出网络拓扑,得到的网络拓扑可以如表4所示。表4网络拓扑2、控制器通过netconf接口,向各转发节点获取该转发节点的两种类型的sr标签块:srlb和srgb。得到的sr标签块可以如表5所示。表5sr标签块routeridsrgbsrlb5.5.5.5[5000,5999][16,999]6.6.6.6[6000,6999][16,999]7.7.7.7[7000,7999][16,999]8.8.8.8[8000,8999][16,999]9.9.9.9[9000,9999][16,999]3、控制器根据表4所示的网络拓扑中转发节点上的ip前缀,为转发节点上的ip前缀分配全局唯一的index。index可以认为是相对于srgb基值的一个偏移值,可以从0开始按1递增分配。表6所示为控制器记录的一种ip前缀与index之间的对应关系。控制器可以持久化保存ip前缀与index之间的对应关系,从而使得控制器在发生故障并恢复正常后,在故障前后生成的标签转发表项可以保持一致,从而保证报文的正常转发。表6ip前缀与index之间的对应关系如果一个转发节点上有多个ip前缀,那么每个ip前缀也相应的分配一个全局唯一的index,比如,router5.5.5.5上有两个ip前缀,这两个ip前缀分别对应一个index。4、控制器根据网络拓扑、各ip前缀的索引值和各转发节点的srgb标签块,为每个ip前缀分别分配在不同转发节点上的前缀标签,标签值为转发节点的srgb的基值加上ip前缀的索引值得到的和值。参见表7-1和表7-2,本申请实施例仅列举出了两个ip前缀在各转发节点上的前缀标签,其余ip前缀在各转发节点上的前缀标签可依次类推,不再一一列出。表7-1routera(routerid5.5.5.5)上的ip前缀5.5.5.5/32(分配的index为0)在每个转发节点上的前缀标签和出标签表7-2routerb(routerid6.6.6.6)上的ip前缀6.6.6.6/32(分配的index为2)ip地址前缀在每个转发节点上的前缀标签和出标签。表7-1和表7-2中提及的到下一跳的出标签,为该下一跳节点为该ip前缀分配的前缀标签。当节点a将打有标签的报文转发到相邻的节点b时,节点a会为该报文打上到节点b的出标签,然后转发给下一跳节点b,该报文在节点a的出标签对应于该报文在节点b的入标签,节点b同样进行标签交换,为该报文打上到下一跳节点c的出标签。举例来说,表7-1中,ip前缀5.5.5.5/32在routera(routerid5.5.5.5)上的前缀标签为5000,ip前缀5.5.5.5/32在routerb(router6.6.6.6)上的前缀标签为6000。如果routerb收到的报文带有前缀标签6000,则表明该报文要到达或者经过ip前缀5.5.5.5/32所在的节点,即routera;routerb用标签5000替换掉该报文原先携带的标签6000,然后转发给其下一跳routera。特别的,如果每个转发节点的srgb均相同,那么同一个ip前缀在每个转发节点上分配的前缀标签也会相同,这是一种较为简单的情况。5、控制器根据网络拓扑和各转发节点的srlb标签块,为各转发节点的每个邻接接口ip地址分配邻接标签,分配好的邻接标签如表8所示。表8邻接标签6、sdn控制器将分配好的邻接标签以及与之相关的下一跳地址,分配好的前缀标签以及与之相关的下一跳地址和出标签,一起通过netconf接口发送给对应的转发节点。邻接标签和前缀标签以及相关信息可以只发送给所属的节点。如,表8中的每一行包括的邻接标签和对应的下一跳地址可以只发送给该行的第一列routerid对应的节点。以表8中的最后一行为例,为routere(routerid9.9.9.9)分配的邻接标签等信息可以只发送给routere,向routere发送的邻接标签和对应的下一跳地址可以如下表9所示。表9发送给routere(routerid9.9.9.9)的邻接标签和与之相关的下一跳地址in-labelnexthop1679.1.1.71789.1.1.8又如,表7-1和表7-2中的每一行包括的前缀标签和对应的下一跳地址及出标签可以只发送给该行的第一列routerid对应的节点。以表7-1中的第一行和第二行为例,ip前缀5.5.5.5/32在routera(routerid5.5.5.5)上的前缀标签等信息可以只发送给routera,向routera发送的前缀标签和对应的下一跳地址及出标签可以如下表10所示,而ip前缀5.5.5.5/32在routerb(routerid6.6.6.6)上的前缀标签等信息可以只发送给routerb,相应的前缀标签和对应的下一跳地址及出标签可以如下表11所示。表10ip前缀5.5.5.5/32在routera(routerid5.5.5.5)上的前缀标签和与之相关的下一跳地址及出标签in-labelout-labelnexthop5000空(null)null表11ip前缀5.5.5.5/32在routerb(routerid6.6.6.6)上的前缀标签和与之相关的下一跳地址及出标签in-labelout-labelnexthop6000500056.1.1.56000800068.1.1.87、转发节点收到对应的邻接标签和前缀标签等信息后,获取本节点的标签转发表项,并对标签转发表项进行激活。具体的,转发节点可以直接激活入标签为收到的邻接标签的所有标签转发表项;以及,激活入标签为收到的前缀标签且出标签不为空的标签转发表项;以及,激活入标签为收到的前缀标签且出标签为空(即null)的标签转发表项。较佳的,如果入标签为前缀标签且出标签不为空的标签转发表项仅有一个,则转发节点可以直接激活这一个标签转发表项;如果入标签为前缀标签且出标签不为空的标签转发表项有多个,则转发节点可以仅激活其中对应的路由为最优路由的一个或多个标签转发表项。例如,对于上述表11包括两个下一跳地址,表示报文从routerb转发到ip前缀5.5.5.5/32所在的转发节点routera(报文转发到routera后,可能终结转发,也可能还需要继续转发)可以有两条转发路径,但由于ip前缀5.5.5.5/32在routerb上的最优路由只有一个下一跳56.1.1.5,所以routerb可以只激活表11的第一行,即只激活出标签/下一跳:5000/56.1.1.5。也就是说,routerb对于ip地址5.5.5.5,激活的标签转发表项只有出标签/下一跳为5000/56.1.1.5的标签转发表项。8、转发路径建立。这一过程由sdn控制器向路径的头节点下发路径信息实现,路径信息是一个标签序列,标签序列中的每个标签代表路径经过的一个段,比如,图4中一条从routere到routera的路径可以包含以下两个段:routere到routerd的邻接段,和routerd到routera的前缀段。结合上述表8,sdk控制器可以根据routere的id(9.9.9.9)及routere与routerd的接口连接关系(89.1.1.9—89.1.1.8),查找到routere到routerd这一邻接段的邻接标签为17;结合上述表7-1,sdn控制器可以查找到routera上的ip前缀5.5.5.5/32在routerd(id为8.8.8.8)上分配的前缀标签为8000,即routerd到routera的前缀段的前缀标签为8000;从而sdn控制器向sr路径的头节点routere下发代表这两个段的标签序列[17,8000],即可完成这一转发路径的建立。9、转发节点按照激活的标签转发表项对带标签报文进行处理。例如,如果routere想通过在上述第8步的例子中建立的路径转发报文时(需要注意的是,该报文可以是到达routera就终结,也可以是经过routera后继续转发),只需要通过设置静态路由或者pbr(policybasedrouting,基于策略的路由等方式将报文引入路径,将标签序列[17,8000]封装进该报文的标签域中(先压入标签8000,再压入标签17),然后根据此时报文的外层标签17查询标签转发表项,根据查询结果将封装进该报文中的标签17弹出,然后将该报文发送给下一跳routerd。routerd收到该报文,匹配到该报文的外层标签为8000,根据激活的标签转发表项,可以用标签6000替换掉该报文携带的标签8000,然后将该报文转发给下一跳routerc,或者,routerd也可以用标签7000替换掉该报文携带的标签8000,然后将该报文转发给下一跳routerb。后续各节点对该报文的处理类似,此处不再赘述。最终,该报文到达routera时,routera匹配到该报文的外层标签为5000,通过查找标签转发表项,弹出标签5000,之后routera再根据该报文的ip封装或其它类型封装进行处理。例如,如果该报文弹出标签后露出的目的ip地址为routera的ip地址,则routera终结该报文的转发,如果该报文露出的目的ip地址不为routera的ip地址,则routera可以再结合路由转发表对该报文进行转发。综上所述,本申请提供的技术方案通过sdn控制器来实现sid的分配和通告,这种方式只需在sdn控制器上运行sr协议,如此可以充分发挥sdn控制器集中控制的优点,在实现上比较简单。以上对本申请提供的方法进行了描述。下面对本申请提供的装置进行描述:本申请提供一种sdn控制器,用于实现上述sid获取方法中sdn控制器的功能,如图5所示,sdn控制器包括收集模块501、获取模块502、分配模块503和发送模块504。所述收集模块501,用于收集网络拓扑。所述获取模块502,用于获取所述网络拓扑中各转发节点的标签块。所述分配模块503,用于根据所述网络拓扑和各转发节点的标签块,为各转发节点分配对应的sid。所述发送模块504,用于将分配好的sid发送给对应的转发节点。可选的,所述获取模块502可以具体用于:通过netconf接口向网络拓扑中各转发节点发送请求,接收网络拓扑中各转发节点返回的响应,转发节点返回的响应携带了转发节点的标签块。可选的,当所述标签块包括srlb时,所述分配模块503具体用于:针对每个转发节点,根据所述网络拓扑确定该转发节点连接的邻接接口ip地址,所述邻接接口ip地址处于该转发节点的邻居节点上;从所述该转发节点的srlb中为确定的每一邻接接口ip地址分配邻接标签,所述该转发节点的不同邻接接口ip地址分配不同的邻接标签。可选的,当所述标签块包括srgb时,所述分配模块503具体用于:为各个转发节点的ip前缀分配索引值;针对每一ip前缀,根据该ip前缀被分配的索引值和各个转发节点的srgb,计算该ip前缀在各个转发节点上的前缀标签。可选的,在将分配好的sid发送给对应的转发节点时,所述发送模块504具体用于:将分配好的邻接标签发送给对应的转发节点,以使转发节点激活入标签为所述邻接标签的标签转发表项,所述邻接标签为所述对应的转发节点所连接的邻接接口网际协议ip地址的邻接标签;以及,将分配好的前缀标签发送给对应的转发节点,以使转发节点激活入标签为所述前缀标签且出标签不为空的标签转发表项,以及激活入标签为所述前缀标签且出标签为空的标签转发表项,所述前缀标签为各ip前缀在所述对应的转发节点上的前缀标签。可选的,所述分配模块503还可以用于:基于分配好的邻接标签生成第一转发信息,所述第一转发信息包括邻接标签以及与邻接标签对应的下一跳地址;基于分配好的前缀标签生成第二转发信息,所述第二转发信息包括前缀标签以及与前缀标签对应的下一跳地址和出标签;相应的,在将分配好的sid发送给对应的转发节点时,所述发送模块504具体用于:将所述第一转发信息和第二转发信息发送给对应的转发节点。本实施例中未尽之细节可参考上述图3所示方法中sdn控制器的描述,在此不再赘述。需要说明的是,本发明实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。基于上述提供的sid获取方法,本申请还提供一种sdn控制器,如图6所示,sdn控制器包括通信接口601、处理器602、存储器603和总线604;其中,通信接口601、处理器602、存储器603通过总线604完成相互间的通信。其中,通信接口601,用于与网元通信,比如与转发节点通信。处理器602可以是一个中央处理器cpu,存储器603可以是非易失性存储器(non-volatilememory),并且存储器603中存储有逻辑指令,处理器602可以执行存储器603中存储的sid获取逻辑指令,以实现上述的sid获取方法中sdn控制器的功能,参见图3所示的流程。基于本申请上述提供的sid获取方法,本申请实施例提供一种转发节点,用于实现上述方法中转发节点的功能,如图7所示,所述转发节点包括接收模块701、激活模块702和处理模块703。所述接收模块701,用于接收sdn控制器下发的sid,所述sid是所述sdn控制器分配的。所述激活模块702,用于根据接收的sid对本节点上的标签转发表项进行激活。所述处理模块703,用于对与激活的标签转发表项匹配的报文进行处理。可选的,接收的sid包括本节点连接的邻接接口ip地址的邻接标签和各ip前缀在本节点上的前缀标签;所述激活模块702具体用于:激活入标签为所述邻接标签的标签转发表项;激活入标签为所述前缀标签且出标签不为空的标签转发表项,以及激活入标签为所述前缀标签且出标签为空的标签转发表项。需要说明的是,本发明实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。本实施例中未尽之细节可参考上述图3所示方法中转发节点的描述,在此不再赘述。基于上述提供的sid获取方法,本申请实施例还提供一种转发节点,如图8所示,转发节点包括通信接口801、处理器802、存储器803和总线804;其中,通信接口801、处理器802、存储器803通过总线804完成相互间的通信。其中,通信接口801,用于与网元通信,比如与sdn控制器通信。处理器802可以是一个中央处理器cpu,存储器803可以是非易失性存储器(non-volatilememory),并且存储器803中存储有逻辑指令,处理器802可以执行存储器803中存储的sid获取逻辑指令,以实现上述的sid获取方法中转发节点的功能,参见图3所示的流程。对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1