一种段标识确定方法及装置转让专利

申请号 : CN202111108022.6

文献号 : CN113691451B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 林长望陈梦骁李昊

申请人 : 新华三技术有限公司

摘要 :

本申请实施例提供了一种段标识确定方法及装置。方案如下:接收第二设备发送的第一路由信息和第二路由信息;其中,第一路由信息包括第一Block标识、第一Block对应的第一地址空间的边界地址以及第一偏移量;第二路由信息包括第二Block标识以及第一索引值;若第一Block标识与第二Block标识均表征相同Block,则根据第一地址空间的边界地址、第一偏移量以及第一索引值,确定第一SID。应用本申请实施例提供的技术方案,降低了SID发布过程中报文的开销,从而保证了设备性能和报文传输协议的稳定性。

权利要求 :

1.一种段标识确定方法,其特征在于,应用于SRv6网络中的第一设备,所述SRv6网络还包括第二设备,所述第一设备与所述第二设备互为邻居设备,所述第二设备存储了第一段标识SID,所述方法包括:接收所述第二设备发送的第一路由信息和第二路由信息;其中,所述第一路由信息包括第一块Block标识、所述第一Block对应的第一地址空间的边界地址以及第一偏移量;所述第二路由信息包括第二Block标识以及第一索引值;

若所述第一Block标识与所述第二Block标识均表征相同Block,则根据所述第一地址空间的边界地址、所述第一偏移量以及所述第一索引值,确定所述第一SID。

2.根据权利要求1所述的方法,其特征在于,所述第一地址空间的边界地址为所述第一地址空间的起始地址;

所述根据所述第一地址空间的边界地址、所述第一偏移量以及所述第一索引值,确定所述第一SID的步骤,包括:按照SID的地址规则,将所述第一索引值偏移所述第一偏移量,得到第一偏移地址;

根据所述起始地址与所述第一偏移地址,确定所述第一SID。

3.根据权利要求2所述的方法,其特征在于,所述根据所述起始地址与所述第一偏移地址,确定所述第一SID的步骤,包括:计算所述起始地址与所述第一偏移地址的和值;

若所述和值对应的SID在所述第一地址空间内,则将所述和值对应的SID确定为所述第一SID。

4.根据权利要求1所述的方法,其特征在于,所述第一地址空间的边界地址为所述第一地址空间的末端地址;

所述根据所述第一地址空间的边界地址、所述第一偏移量以及所述第一索引值,确定所述第一SID的步骤,包括:按照SID的地址规则,将所述第一索引值偏移所述第一偏移量,得到第二偏移地址;

根据所述末端地址与所述第二偏移地址,确定所述第一SID。

5.根据权利要求4所述的方法,其特征在于,所述根据所述末端地址与所述第二偏移地址,确定所述第一SID的步骤,包括:计算所述末端地址与所述第二偏移地址的差值;

若所述差值对应的SID在所述第一地址空间内,则将所述差值对应的SID确定为所述第一SID。

6.根据权利要求1所述的方法,其特征在于,所述第一设备存储了第二SID;

所述方法还包括:

获取存储的第二SID;

根据预先划分的每一Block与地址空间之间的对应关系,确定所述第二SID所属的目标Block;

根据第二地址空间中每一地址的属性特征,确定所述第二地址空间的边界地址的第二偏移量;

根据所述目标Block对应的第二地址空间中每一SID与索引值的对应关系,确定所述第二SID对应的第二索引值;

向每一邻居设备发送第三路由信息和第四路由信息,所述第三路由信息包括所述目标Block的第三Block标识、所述第二偏移量以及所述第二地址空间的边界地址,所述第四路由信息包括所述第三Block标识以及所述第二索引值。

7.一种段标识确定装置,其特征在于,应用于SRv6网络中的第一设备,所述SRv6网络还包括第二设备,所述第一设备与所述第二设备互为邻居设备,所述第二设备存储了第一段标识SID,所述装置包括:接收模块,用于接收所述第二设备发送的第一路由信息和第二路由信息;其中,所述第一路由信息包括第一块Block标识、所述第一Block对应的第一地址空间的边界地址以及第一偏移量;所述第二路由信息包括第二Block标识以及第一索引值;

第一确定模块,用于若所述第一Block标识与所述第二Block标识均表征相同Block,则根据所述第一地址空间的边界地址、所述第一偏移量以及所述第一索引值,确定所述第一SID。

8.根据权利要求7所述的装置,其特征在于,第一地址空间的边界地址为所述第一地址空间的起始地址;

所述第一确定模块,具体用于按照SID的地址规则,将所述第一索引值偏移所述第一偏移量,得到第一偏移地址;根据所述起始地址与所述第一偏移地址,确定所述第一SID。

9.根据权利要求8所述的装置,其特征在于,所述第一确定模块,具体用于计算所述起始地址与所述第一偏移地址的和值;若所述和值对应的SID在所述第一地址空间内,则将所述和值对应的SID确定为所述第一SID。

10.根据权利要求7所述的装置,其特征在于,所述第一地址空间的边界地址为所述第一地址空间的末端地址;

所述第一确定模块,具体用于按照SID的地址规则,将所述第一索引值偏移所述第一偏移量,得到第二偏移地址;根据所述末端地址与所述第二偏移地址,确定所述第一SID。

11.根据权利要求10所述的装置,其特征在于,所述第一确定模块,具体用于计算所述末端地址与所述第二偏移地址的差值;若所述差值对应的SID在所述第一地址空间内,则将所述差值对应的SID确定为所述第一SID。

12.根据权利要求7所述的装置,其特征在于,所述第一设备存储了第二SID;

所述装置还包括:

获取模块,用于获取存储的第二SID;

第二确定模块,用于根据预先划分的每一Block与地址空间之间的对应关系,确定所述第二SID所属的目标Block;

第三确定模块,用于根据第二地址空间中每一地址的属性特征,确定所述第二地址空间的边界地址的第二偏移量;

第四确定模块,用于根据所述目标Block对应的第二地址空间中每一SID与索引值的对应关系,确定所述第二SID对应的第二索引值;

发送模块,用于向每一邻居设备发送第三路由信息和第四路由信息,所述第三路由信息包括所述目标Block的第三Block标识、所述第二偏移量以及所述第二地址空间的边界地址,所述第四路由信息包括所述第三Block标识以及所述第二索引值。

说明书 :

一种段标识确定方法及装置

技术领域

[0001] 本申请涉及通信领域,特别是涉及一种段标识确定方法及装置。

背景技术

[0002] 在互联网协议第6版段路由(Segment Routing Internet Protocol Version 6,SRv6)网络中,设备需要在SRv6网络中发布段标识(Segment Identity,SID),以实现后续数据报文的转发。
[0003] 针对SRv6网络中的每一设备,该设备向其对应的每一邻居设备发送链路状态报文,该链路状态报文中包括完整的一个或多个SID。该设备的邻居设备在接收到该链路状态报文后,可以确定该设备所发布的SID。
[0004] 但是,在SRv6网络中,设备的数量非常庞大,并且一个SID的长度达到128比特(bits),这使得SID发布过程中,各设备间发送的链路状态报文的数量较多,并且每一链路状态报文包含较多的数据量,这导致进行SID发布时报文开销较大,严重影响设备的性能和报文传输协议的稳定性。

发明内容

[0005] 本申请实施例的目的在于提供一种段标识确定方法及装置,以降低SID发布过程中报文的开销,从而保证设备性能和报文传输协议的稳定性。具体技术方案如下:
[0006] 本申请实施例提供了一种段标识确定方法,应用于SRv6网络中的第一设备,所述SRv6网络还包括第二设备,所述第一设备与所述第二设备互为邻居设备,所述第二设备存储了第一SID,所述方法包括:
[0007] 接收所述第二设备发送的第一路由信息和第二路由信息;其中,所述第一路由信息包括第一块(Block)标识、所述第一Block对应的第一地址空间的边界地址以及第一偏移量;所述第二路由信息包括第二Block标识以及第一索引值;
[0008] 若所述第一Block标识与所述第二Block标识均表征相同Block,则根据所述第一地址空间的边界地址、所述第一偏移量以及所述第一索引值,确定所述第一SID。
[0009] 可选的,第一地址空间的边界地址为所述第一地址空间的起始地址;
[0010] 所述根据所述第一地址空间的边界地址、所述第一偏移量以及所述第一索引值,确定所述第一SID的步骤,包括:
[0011] 按照SID的地址规则,将所述第一索引值偏移所述第一偏移量,得到第一偏移地址;
[0012] 根据所述起始地址与所述第一偏移地址,确定所述第一SID。
[0013] 可选的,所述根据所述起始地址与所述第一偏移地址,确定所述第一SID的步骤,包括:
[0014] 计算所述起始地址与所述第一偏移地址的和值;
[0015] 若所述和值对应的SID在所述第一地址空间内,则将所述和值对应的SID确定为所述第一SID。
[0016] 可选的,所述第一地址空间的边界地址为所述第一地址空间的末端地址;
[0017] 所述根据所述第一地址空间的边界地址、所述第一偏移量以及所述第一索引值,确定所述第一SID的步骤,包括:
[0018] 按照SID的地址规则,将所述第一索引值偏移所述第一偏移量,得到第二偏移地址;
[0019] 根据所述末端地址与所述第二偏移地址,确定所述第一SID。
[0020] 可选的,所述根据所述末端地址与所述第二偏移地址,确定所述第一SID的步骤,包括:
[0021] 计算所述末端地址与所述第二偏移地址的差值;
[0022] 若所述差值对应的SID在所述第一地址空间内,则将所述差值对应的SID确定为所述第一SID。
[0023] 可选的,所述第一设备存储了第二SID;
[0024] 所述方法还包括:
[0025] 获取存储的第二SID;
[0026] 根据预先划分的每一Block与地址空间之间的对应关系,确定所述第二SID所属的目标Block;
[0027] 根据所述第二地址空间中每一地址的属性特征,确定所述第二地址空间的边界地址的第二偏移量;
[0028] 根据所述目标Block对应的第二地址空间中每一SID与索引值的对应关系,确定所述第二SID对应的第二索引值;
[0029] 向每一邻居设备发送第三路由信息和第四路由信息,所述第三路由信息包括所述目标Block的第三Block标识、所述第二偏移量以及所述第二地址空间的边界地址,所述第四路由信息包括所述第三Block标识以及所述第二索引值。
[0030] 本申请实施例还提供了一种段标识确定装置,应用于SRv6网络中的第一设备,所述SRv6网络还包括第二设备,所述第一设备与所述第二设备互为邻居设备,所述第二设备存储了第一SID,所述装置包括:
[0031] 接收模块,用于接收所述第二设备发送的第一路由信息和第二路由信息;其中,所述第一路由信息包括第一Block标识、所述第一Block对应的第一地址空间的边界地址以及第一偏移量;所述第二路由信息包括第二Block标识以及第一索引值;
[0032] 第一确定模块,用于若所述第一Block标识与所述第二Block标识均表征相同Block,则根据所述第一地址空间的边界地址、所述第一偏移量以及所述第一索引值,确定所述第一SID。
[0033] 可选的,第一地址空间的边界地址为所述第一地址空间的起始地址;
[0034] 所述第一确定模块,具体用于按照SID的地址规则,将所述第一索引值偏移所述第一偏移量,得到第一偏移地址;根据所述起始地址与所述第一偏移地址,确定所述第一SID。
[0035] 可选的,所述第一确定模块,具体用于计算所述起始地址与所述第一偏移地址的和值;若所述和值对应的SID在所述第一地址空间内,则将所述和值对应的SID确定为所述第一SID。
[0036] 可选的,所述第一地址空间的边界地址为所述第一地址空间的末端地址;
[0037] 所述第一确定模块,具体用于按照SID的地址规则,将所述第一索引值偏移所述第一偏移量,得到第二偏移地址;根据所述末端地址与所述第二偏移地址,确定所述第一SID。
[0038] 可选的,所述第一确定模块,具体用于计算所述末端地址与所述第二偏移地址的差值;若所述差值对应的SID在所述第一地址空间内,则将所述差值对应的SID确定为所述第一SID。
[0039] 可选的,所述第一设备存储了第二SID;
[0040] 所述装置还包括:
[0041] 获取模块,用于获取存储的第二SID;
[0042] 第二确定模块,用于根据预先划分的每一Block与地址空间之间的对应关系,确定所述第二SID所属的目标Block;
[0043] 第三确定模块,用于根据所述第二地址空间中每一地址的属性特征,确定所述第二地址空间的边界地址的第二偏移量;
[0044] 第四确定模块,用于根据所述目标Block对应的第二地址空间中每一SID与索引值的对应关系,确定所述第二SID对应的第二索引值;
[0045] 发送模块,用于向每一邻居设备发送第三路由信息和第四路由信息,所述第三路由信息包括所述目标Block的第三Block标识、所述第二偏移量以及所述第二地址空间的边界地址,所述第四路由信息包括所述第三Block标识以及所述第二索引值。
[0046] 本申请实施例还提供了一种设备,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现上述任一所述的段标识确定方法步骤。
[0047] 本申请实施例还提供了一种机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现上述任一所述的段标识确定方法步骤。
[0048] 本申请实施例提供的技术方案中,第一设备在接收到的第二设备发送的第一路由信息和第二路由信息后,若第一路由信息中包括的第一Block标识与第二路由信息包括的第二Block标识相同,则根据第一路由信息中的第一地址空间的边界地址和第一偏移量,以及第二路由信息中包括的第一索引值,确定第二设备所发布的第一SID。
[0049] 相比于相关技术的SID发布过程需要携带完整的SID,在本申请实施例中第二设备向第一设备发送的第一路由信息和第二路由信息中并没有包括第二设备中存储的第一SID,而是将其存储的SID所属Block的Block标识,该Block的第一地址空间的边界地址,偏移量,以及该SID所对应的索引值发送给第一设备。因此,当SRv6网络中包括较多设备时,各设备通过向其邻居设备发送第一路由信息和第二路由信息的方式,可以使得其邻居设备根据第一路由信息和第二路由信息所包括的信息,准确确定出该设备所发布的SID,并且,第一路由信息所包括的Block标识和偏移量,以及第二路由信息所包括的Block标识和索引值所对应的数据量明显小于完整SID所对应的数据量,因此,当SRv6网络中存在大量需要发布的SID时,采用本申请实施例提供的方法,可以明显降低报文所需携带信息的数据量,从而减少所需发送的报文的数量,这有效的降低了SID发布过程中报文的开销,从而保证了设备性能和报文传输协议的稳定性。
[0050] 当然,实施本申请的任一产品或方法必不一定需要同时达到以上所述的所有优点。

附图说明

[0051] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0052] 图1‑a为SRv6 End SID sub‑TLV的一种示意图;
[0053] 图1‑b为SRv6 End.X SID sub‑TLV的一种示意图;
[0054] 图1‑c为SRv6 LAN End.X SID sub‑TLV的一种示意图;
[0055] 图2为本申请实施例提供的段标识确定方法的第一种流程示意图;
[0056] 图3为本申请实施例提供的SRv6网络的一种结构示意图;
[0057] 图4为本申请实施例提供的段标识确定方法的第二种流程示意图;
[0058] 图5为SID的一种示意图;
[0059] 图6为本申请实施例提供的段标识确定方法的第三种流程示意图;
[0060] 图7为本申请实施例提供的段标识确定方法的第四种流程示意图;
[0061] 图8为本申请实施例提供的段标识确定方法的第五种流程示意图;
[0062] 图9为本申请实施例提供的段标识确定方法的第六种流程示意图;
[0063] 图10‑a为本申请实施例提供的SRv6 Local Block sub‑TLV的一种示意图;
[0064] 图10‑b为本申请实施例提供的SRv6 End.X Index Sub‑TLV的一种示意图;
[0065] 图10‑c为本申请实施例提供的SRv6 LAN End.X Index Sub‑TLV的一种示意图;
[0066] 图10‑d为本申请实施例提供的SRv6 End Index Sub‑TLV的一种示意图;
[0067] 图11‑a为本申请实施例提供的段标识装置的第一种结构示意图;
[0068] 图11‑b为本申请实施例提供的段标识装置的第二种结构示意图;
[0069] 图12为本申请实施例提供的设备的一种结构示意图。

具体实施方式

[0070] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0071] 在SRv6网络中,相邻两个设备间可以通过中间系统到中间系统(Intermediate System‑to‑Intermediate System,IS‑IS)协议或开放最短路径优先协议版本3(Open Shortest Path First Version 3,OSPFv3)发布SID信息。为便于理解,以基于IS‑IS协议,对SRv6网络中的设备1向设备2发送SID为例进行说明。其中,设备1和设备2互为邻居设备。
[0072] 在SRv6网络中,设备1在进行SID发布时,会向其对应的所有邻居设备发送链路状态报文,该包括中包括完整的SID。该SID可以为设备1的设备SID(记为End SID)。该SID也可以为设备1与邻居设备间的链路SID(记为End.X SID)。其中,链路SID为报文传输过程中出接口所对应的SID。也就是报文传输过程中经过链路所对应的SID。
[0073] 当上述SID为设备SID时,设备1可以向设备2发送链路状态报文(为便于区分,记为第一链路状态报文)。该第一链路状态报文中携带有SRv6 End SID sub‑TLV。其中,SRv6 End SID sub‑TLV用于发布设备SID。具体如图1‑a所示,图1‑a为SRv6 End SID sub‑TLV的一种示意图。
[0074] 在图1‑a所示的SRv6 End SID sub‑TLV中,除了包括常用的字段,如类型(Type)、长度(Length)、标志位(Flags)、端点行为(Endpoint Behavior)等字段以外,还包括SID字段,该字段用于填充设备所对应的设备SID。例如,图1‑a中SID字段中的128比特的数值。
[0075] 当上述SID为设备间的链路SID时,设备1可以向设备2发送链路状态报文(为便于区分,记为第二链路状态报文)。该第二链路状态报文中携带有SRv6End.X SID sub‑TLV,或者携带有SRv6 LAN End.X SID sub‑TLV。其中,SRv6End.X SID sub‑TLV用于发布点对点(Peer‑to‑Peer,P2P)邻接类型的链路SID,SRv6 LAN End.X SID sub‑TLV用于发布局域网(Local Area Network,LAN)邻接类型的链路SID。具体如图1‑b和图1‑c所示,图1‑b为SRv6 End.X SID sub‑TLV的一种示意图,图1‑c为SRv6 LAN End.X SID sub‑TLV的一种示意图。
[0076] 在图1‑b所示的SRv6 End.X SID sub‑TLV和图1‑c所示的SRv6 LAN End.XSID sub‑TLV中,除了包括常用的字段,如类型、长度、标志位、算法(Algorithm)、权重(Weight)等字段以外,还包括SID字段,该字段用于填充设备间的链路SID。例如,图1‑b中SID字段中的128比特的数值,或者图1‑c中SID字段中的128比特的数值。
[0077] 上述设备1在向设备2发送携带链路SID的第二链路状态报文时,可以根据设备1与设备2间邻居建立的方式,确定第二链路状态报文中携带SRv6End.X SID sub‑TLV,还是携带SRv6 LAN End.X SID sub‑TLV。例如,当设备1与设备2为P2P邻居时,设备1向设备2发送携带SRv6 End.X SID sub‑TLV的第二链路状态报文。再例如,当设备1与设备2为LAN邻居时,设备1向设备2发送携带SRv6 LAN End.X SID sub‑TLV的第二链路状态报文。
[0078] 基于OSPFv3进行SID发布时,也是通过发送携带SRv6 End SID sub‑TLV、SRv6 End.X SID sub‑TLV或SRv6 LAN End.X SID sub‑TLV的链路状态报文的方式实现的,所不同的地方在于:两种协议所发送的链路状态报文中SRv6 End SID sub‑TLV、SRv6 End.X SID sub‑TLV或SRv6 LAN End.X SID sub‑TLV所对应的常用字段存在一定的差异。例如,基于IS‑IS协议发送的携带SRv6 End SID sub‑TLV的链路状态报文中的类型字段占8比特,而基于OSPFv3发送的携带SRv6 End SID sub‑TLV的链路状态报文中的类型字段占16比特。关于基于OSPFv3发布SID的过程可参照基于IS‑IS协议发布SID的过程,在此不作具体说明。为便于理解,下面仅以基于IS‑IS协议的SID发布过程为例进行说明。
[0079] 在相关技术的SID发布过程中,无论是基于IS‑IS协议还是基于OSPFv3,链路状态报文中必须携带完整的SID,即128比特的SID,此时,链路状态报文数据量较大,并且SRv6网络中每个设备的SID以及每两个邻居设备间的链路SID的数量可以为多个,这将导致了进行SID发布时所需发送的链路状态报文的数量较多,每一链路状态报文的数据量较大,从而导致SID发布过程报文开销较大,影响设备的性能,以及IS‑IS协议或OSPFv3的稳定性。
[0080] 为了解决相关技术中的问题,本申请实施例提供了一种段标识确定方法。如图2所示,图2为本申请实施例提供的段标识确定方法的第一种流程示意图。该方法应用于SRv6网络中的第一设备,该SRv6网络还包括第二设备,其中,第一设备与第二设备互为邻居设备,第二设备中存储了第一SID。该方法具体包括以下步骤。
[0081] 步骤S201,接收第二设备发送的第一路由信息和第二路由信息;其中,第一路由信息包括第一Block标识、第一Block对应的第一地址空间的边界地址以及第一偏移量;第二路由信息包括第二Block标识以及第一索引值。
[0082] 步骤S202,若第一Block标识与第二Block标识均表征相同Block,则根据第一地址空间的边界地址、第一偏移量以及第一索引值,确定第一SID。
[0083] 上述SRv6网络中可以包括多个设备。上述第一设备可以为SRv6网络中的任一设备。该第一设备可以存在一个或多个邻居设备。上述第二设备为第一设备的邻居设备中的任一设备。在此,对上述第一设备和第二设备不作具体限定。为便于理解,下面仅以SRv6网络中的第一设备和第二设备为例进行说明。
[0084] 通过图2所示的方法,第一设备在接收到的第二设备发送的第一路由信息和第二路由信息后,若第一路由信息中包括的第一Block标识与第二路由信息包括的第二Block标识相同,则根据第一路由信息中的第一地址空间的边界地址和第一偏移量,以及第二路由信息中包括的第一索引值,确定第二设备所发布的第一SID。
[0085] 相比于相关技术的SID发布过程需要携带完整的SID,在本申请实施例中第二设备向第一设备发送的第一路由信息和第二路由信息中并没有包括第二设备中存储的第一SID,而是将其存储的SID所属Block的Block标识,该Block的第一地址空间的边界地址,偏移量,以及该SID所对应的索引值发送给第一设备。因此,当SRv6网络中包括较多设备时,各设备通过向其邻居设备发送第一路由信息和第二路由信息的方式,可以使得其邻居设备根据第一路由信息和第二路由信息所包括的信息,准确确定出该设备所发布的SID,并且,第一路由信息所包括的Block标识和偏移量,以及第二路由信息所包括的Block标识和索引值所对应的数据量明显小于完整SID所对应的数据量,因此,当SRv6网络中存在大量需要发布的SID时,采用本申请实施例提供的方法,可以明显降低报文所需携带信息的数据量,从而减少所需发送的报文的数量,这有效的降低了SID发布过程中报文的开销,从而保证了设备性能和报文传输协议的稳定性。
[0086] 下面通过具体的实施例,对申请实施例进行说明。
[0087] 针对上述步骤S201,即接收第二设备发送的第一路由信息和第二路由信息;其中,第一路由信息包括第一Block标识、第一Block对应的第一地址空间的边界地址以及第一偏移量;第二路由信息包括第二Block标识以及第一索引值。
[0088] 在本步骤中,第二设备中存储有第一SID。第二设备在进行SID发布时,可以向其邻居设备发送第一路由信息和第二路由信息。第二设备的邻居设备均可以接收到的该第一路由信息和第二路由信息。也就是第一设备可以接收到第二设备发送的第一路由信息和第二路由信息。
[0089] 上述第一路由信息可以包括在链路状态报文(为便于区分,记为第三链路状态报文)的SRv6 Local Block sub‑TLV中。其中,SRv6 Local Block sub‑TLV为SRv6 Locator TLV的子类型‑长度‑数值(Type‑Length‑Value,TLV)。也就是SRv6 Locator TLV的子TLV中包括SRv6 Local Block sub‑TLV。SRv6 Local Block sub‑TLV用于发布SID所属Block的相关信息。
[0090] 上述第二路由信息可以包括在链路状态报文(为便于区分,记为第四链路状态报文)SRv6 End.X Index Sub‑TLV、SRv6 LAN End.X Index Sub‑TLV或SRv6 End Index Sub‑TLV中。其中,SRv6 End.X Index Sub‑TLV用于发布P2P邻接类型的链路SID所对应的相关信息,SRv6 LAN End.X Index Sub‑TLV用于发布LAN邻接类型的链路SID所对应的相关信息,SRv6 End Index Sub‑TLV用于发布设备SID所对应的相关信息。
[0091] 在上述第四链路状态报文中,SRv6 End.X Index Sub‑TLV和SRv6 LAN End.X Index Sub‑TLV的上级TLV包括但不限于Extended IS Reachability TLV(也称为TLV‑22)、IS Neighbor Attribute TLV(也称为TLV‑23)、L2 Bundle Member Attributes TLV(也称为TLV‑25)、inter‑AS reachability information TLV(也称为TLV‑141)、MT‑ISN TLV(也称为TLV‑222)、MT IS Neighbor Attribute TLV(也称为TLV‑223)。SRv6 End Index Sub‑TLV的上级TLV为SRv6 Locator TLV。
[0092] 第一设备在接收到上述第三链路状态报文和第四链路状态报文后,可以通过根据第三链路状态报文中SRv6 Local Block sub‑TLV,以及第四链路状态报文中SRv6 End.X Index Sub‑TLV、SRv6 LAN End.X Index Sub‑TLV或SRv6 End Index Sub‑TLV所对应的上级TLV中包括的信息,确定通过第一路由信息和第二路由信息发布的SID所对应的设备。
[0093] 为便于理解,以两个邻居设备,即设备1和设备2为例进行说明。当设备1向设备2发送设备1与另一邻居设备(如设备3)的链路SID所对应的第一路由信息和第二路由信息时,设备2将接收到设备1发送的携带SRv6 Local Block sub‑TLV的第三链路状态报文,以及携带SRv6 LAN End.X Index Sub‑TLV的第四链路状态报文。此时,设备2可以根据接收到的第三链路状态报文中SRv6 Local Block sub‑TLV所对应的上级TLV(即上述SRv6 Locator TLV)中的信息,以及第四链路状态报文中SRv6 LAN End.X Index Sub‑TLV所对应的上级TLV(如上述TLV‑22)中的信息,确定设备1所发送的第一路由信息和第二路由信息所对应的设备,即设备1和设备3。
[0094] 关于上述SRv6 Local Block sub‑TLV、SRv6 End.X Index Sub‑TLV、SRv6 LAN End.X Index Sub‑TLV和SRv6 End Index Sub‑TLV可参见下文描述,在此不作具体说明。
[0095] 在本申请实施例中,上述第二设备中存储的第一SID的数量可以为一个,也可以为多个。当第二设备中存储的第一SID的数量为多个时,该第一SID可以包括第二设备的设备SID,第二设备与其邻居设备间的链路SID,该邻居设备至少包括上述第一设备,除此以外,还可以包括其他邻居设备。在此,对第二设备的邻居设备不作具体限定。
[0096] 为便于理解,以图3为例进行说明。图3为本申请实施例提供的SRv6网络的一种结构示意图。
[0097] 现假设上述第二设备为图3中的设备2,第一设备为图3中的设备3。在设备2中存储有第一SID。该第一SID可以包括设备SID和链路SID。其中,设备SID为设备2的设备SID;链路SID可以包括设备1和设备2间的链路SID,以及设备2和设备3间的链路SID。
[0098] 在本申请实施例中,SRv6网络中的每一设备可以存在一个或多个设备SID,每两个相邻设备间可以存在一个或多个链路SID。在此,对上述第一SID中包括的SID的类别以及第一SID的数量不作具体限定。为便于理解,下面仅以一个第一SID的发布为例进行说明,并不起任何限定作用。
[0099] 一个可选的实施例中,当上述第二设备存储的第一SID包括设备SID时,上述第三链路状态报文中的SRv6 Local Block sub‑TLV携带有该设备SID所对应的第一路由信息。上述第四链路状态信息中的SRv6 End Index Sub‑TLV携带有该设备SID所对应的第二路由信息。
[0100] 另一个可选的实施例中,当上述第二设备存储的第一SID包括链路SID时,上述第三链路状态报文中的SRv6 Local Block sub‑TLV携带有该链路SID所对应的第一路由信息。上述第四链路状态信息中的SRv6 End.X Index Sub‑TLV或SRv6 LAN End.X Index Sub‑TLV携带该链路SID所对应的第二路由信息。
[0101] 针对上述第四链路状态报文,当上述第二设备存储的第一SID为链路SID时,若第二设备与第一设备间为P2P邻居,则第四链路状态报文中携带有SRv6 End.X Index Sub‑TLV;若第二设备与第一设备间为LAN邻居,则第四链路状态报文中携带有SRv6 LAN End.X Index Sub‑TLV。
[0102] 在本申请实施例中,根据第一SID所对应的类别的不同,以及第一设备与第二设备间邻接类型的不同,上述第四链路状态报文中携带第二路由信息的TLV有所不同。在此,对上述第四链路状态报文中携带第二路由信息的TLV不作具体限定。
[0103] 在本申请实施例中,上述第三链路状态报文和第四链路状态报文可以为同一链路状态报文,也可以为不同的链路状态报文。在此,对上述第三链路状态报文和第四链路状态报文不作具体限定。
[0104] 在本申请实施例中,上述第一路由信息中包括第一SID所属第一Block的第一Block标识,该第一Block对应的第一地址空间的边界地址,以及第一偏移量。上述第二路由信息包括第二Block的第二Block标识,以及第一SID对应的第一索引值。
[0105] 由于上述第一SID可以为设备SID,也可以为链路SID,因此,上述第一路由信息中包括的第一Block标识与第二路由信息中包括的第二Block标识可能相同,与可能并不相同。
[0106] 上述第一Block对应的第一地址空间可以表示为第一Block所对应的SID取值范围。上述Block可以根据预设规则划分得到,具体划分方式可参见下文描述,在此不作具体说明。
[0107] 针对上述步骤S202,即若第一Block标识与第二Block标识均表征相同Block,则根据第一地址空间的边界地址、第一偏移量以及第一索引值,确定第一SID。
[0108] 在本申请实施例中,第一设备在接收到第二设备发送的第一路由信息和第二路由信息后,可以判断第一路由信息中包括的第一Block标识和第二路由信息中包括的第二Block标识是否表征相同的Block,也就是判断第一路由信息中包括的第一Block标识与第二路由信息中包括的第二Block标识是否相同,从而确定第一路由信息所对应的SID与第二路由信息所对应的SID是否为同一SID。
[0109] 一个可选的实施例中,当上述第一路由信息包括的第一Block标识与第二路由信息包括的第二Block标识相同时,也就是第一Block标识和第二Block标识表征相同的Block,第一设备可以确定第一Block标识和第二Block标识所对应的SID为同一SID,即上述第一SID。此时,第一设备可以执行上述步骤S202,也就是第一设备可以根据第一路由信息所包括的第一偏移量和第一地址空间中的边界地址,以及第二路由信息所包括的第一索引值,确定出该SID,即第一SID。关于上述第一SID的具体确定方法可参见下文描述,在此不作具体说明。
[0110] 在本申请实施例中,SID表示为128bits的互联网协议第6版(Internet Protocol Version 6,IPv6)地址。上述第一Block所属的第一地址空间具体表示为:第一Block所对应的SID取值范围(即IPv6地址取值范围)。上述第一地址空间的边界地址可以为第一地址空间所对应的SID取值范围中的起始SID和末端SID。例如,第一地址空间边界地址中的起始地址可以为第一地址空间所对应的SID取值范围中的起始SID(即Start SID)。再例如,第一地址空间的边界地址可以为第一地址空间所对应的SID取值范围中的末端SID(即End SID)。
[0111] 另一个可选的实施例中,针对第一设备所接收到的某一第一路由信息/第二路由信息,在未查找到Block标识与该第一路由信息/第二路由信息中的Block标识相同的第二路由信息/第一路由信息时,也就是缺失SID计算所需的第一索引值,或者缺失SID计算所需的第一偏移量和第一地址空间的边界地址时,第一设备将丢弃该第一路由信息或第二路由信息。
[0112] 一个可选的实施例中,考虑到网络环境对第一设备与第二设备间链路状态报文的影响,第一设备在未查找到Block标识相同的第一路由信息或第二路由信息时,可以等待预设时长,若预设时长后仍未查找与Block标识相同的第一路由信息和第二路由信息,则第一设备可以丢弃接收到的第二路由信息或第一路由信息。
[0113] 一个可选的实施例中,上述第一设备在接收到上述第一路由信息和第二路由信息后,也就是接收到的上述第三链路状态报文和第四链路状态报文后,可以对接收到的第一路由信息和第二路由信息(即第三链路状态报文和第四链路状态报文)进行转发。第一设备的邻居节点可以根据接收到的第一路由信息和第二路由信息,确定出第二设备所发布的第一SID。
[0114] 一个可选的实施例中,当上述第一地址空间的边界地址为第一地址空间的起始地址时,根据图2所示的方法,本申请实施例还提供了一种段标识确定方法。如图4所示,图4为本申请实施例提供的段标识确定方法的第二种流程示意图。该方法包括以下步骤。
[0115] 步骤S401,接收第二设备发送的第一路由信息和第二路由信息;其中,第一路由信息包括第一Block标识、第一Block对应的第一地址空间的边界地址以及第一偏移量;第二路由信息包括第二Block标识以及第一索引值。
[0116] 上述步骤S401与上述步骤S201相同。
[0117] 步骤S402,若第一Block标识与第二Block标识均表征相同Block,则按照SID的地址规则,将第一索引值偏移第一偏移量,得到第一偏移地址。
[0118] 在本步骤中,当上述第一路由信息包括的第一Block标识与第二路由信息包括的第二Block标识均表征相同的Block时,第一设备可以基于第一路由信息包括的第一偏移量,按照SID的地址规则,对第二路由信息中包括的第一索引值进行偏移处理,得到第一偏移地址。也就是将第一索引值偏移第一偏移量,得到第一偏移地址。
[0119] 在SRv6网络中,设备SID或链路SID由位置标识(Locator)、功能(Function)和参数(Arguments)组成,具体如图5所示,图5为SID的一种示意图。
[0120] 其中,Locator用于标识SID所属的网段。Locator在分段路由(Segment Routing,SR)域内唯一。Function用于标识与SID绑定的本地操作指令,SR域内指定节点收到流量后,根据SID的Function字段执行相关操作。Arguments用于定义报文的流和服务等信息。
[0121] 例如,上述第一索引值为1,第一偏移量为16,此时,上述按照SID的地址规则,将第一索引值偏移第一偏移量,可以表示为:将第一索引值左移16个比特位后所得到的地址,即地址0::1:0。也就是上述第一偏移地址为0::1:0。
[0122] 在本申请实施例中,上述SID的地址规则可以根据SID中包括的Locator、Function、Arguments所对应的比特数确定。
[0123] 步骤S403,根据起始地址与第一偏移地址,确定第一SID。
[0124] 在本步骤中,第一设备可以根据偏移处理得到的第一偏移地址,以及第一路由信息中包括第一地址空间的边界地址(即上述第一地址空间的起始地址),确定第一路由信息和第二路由信息所对应的第一SID。关于第一SID的确定方法可参见下文描述,在此不作具体说明。
[0125] 上述步骤S402‑步骤S403是对上述步骤S202的细化。
[0126] 通过上述步骤S402‑步骤S403,在大量SID发布过程中,设备利用上述第一偏移量对第一索引值进行偏移处理得到第一偏移地址,根据第一偏移地址和第一地址空间的边界地址,可以准确确定出其所接收到的第一路由信息和第二路由信息所对应的SID,也就是第二设备在SRv6网络中发布的SID,在实现SID的发布与确定的同时,降低了链路状态报文所包括的数据量,保证了确定出的SID的准确性,从而保证发布的SID的准确性。
[0127] 一个可选的实施例中,根据上述图4所示的方法,本申请实施例还提供了一种段标识确定方法。如图6所示,图6为本申请实施例提供的段标识确定方法的第三种流程示意图。该方法包括以下步骤。
[0128] 步骤S601,接收第二设备发送的第一路由信息和第二路由信息;其中,第一路由信息包括第一Block标识、第一Block对应的第一地址空间的边界地址以及第一偏移量;第二路由信息包括第二Block标识以及第一索引值。
[0129] 步骤S602,若第一Block标识与第二Block标识均表征相同Block,则按照SID的地址规则,将第一索引值偏移第一偏移量,得到第一偏移地址。
[0130] 上述步骤S601‑步骤S602与上述步骤S401‑步骤S402相同。
[0131] 步骤S603,计算起始地址与第一偏移地址的和值。
[0132] 在本步骤中,第一设备可以对第一地址空间的边界地址(即第一地址空间的起始地址)和第一偏移地址进行求和计算,得到起始地址与第一偏移地址的和值。
[0133] 一个可选的实施例中,第一设备在计算得到起始地址与第一偏移地址的和值后,可以将该和值确定为第一路由信息和第二路由信息所对应的SID,即上述第一SID。
[0134] 另一个可选的实施例中,考虑到上述第三链路状态报文和第四链路状态报文在传输过程中可能出现传输错误,为了保证确定出的第一SID的准确性,第一设备可以判断计算出的起始地址与第一偏移地址的和值所对应的SID是否在上述第一地址空间内。也就是判断计算出的起始地址与第一偏移地址的和值所对应的SID是否在第一地址空间所对应的SID取值范围内。若在第一地址空间内,则执行步骤S604。若不在第一地址空间内,则执行步骤S605。
[0135] 一个可选的实施例中,上述在确定起始地址与第一偏移地址的和值所对应的SID是否在第一地址空间内,具体可以表示为:判断起始地址与第一偏移地址的和值是否大于等于第一地址空间的起始地址,且小于等于第一地址空间的末端地址。当起始地址与第一偏移地址的和值大于等于第一地址空间的起始地址,且小于等于第一地址空间的末端地址时,确定该和值所对应的SID在第一地址空间内。当起始地址与第一偏移地址的和值小于第一地址空间的起始地址,或大于第一地址空间的末端地址时,则确定该和值所对应的SID不在第一地址空间内。
[0136] 在本申请实施例中,上述起始地址与第一偏移地址的和值表示为一IPv6地址,该IPv6所对应的SID表示为该和值本身。
[0137] 步骤S604,若和值对应的SID在第一地址空间内,则将和值对应的SID确定为第一SID。
[0138] 上述步骤S603‑步骤S604是对上述步骤S403的细化。
[0139] 步骤S605,若和值对应的SID不在第一地址空间内,则拒绝确定第一SID。
[0140] 在本步骤中,当计算出的起始地址与第一偏移地址的和值所对应的SID不在第一地址空间内,第一设备可以确定计算出的和值出现错误。此时,第一设备可以拒绝将该和值对应的SID确定为第一SID。
[0141] 通过判断起始地址与第一偏移地址的和值所对应的SID是否在第一地址空间,可以有效检测出计算出的和值是否出现错误,从而避免将错误的和值所对应的SID确定为第一SID,保证了确定出的第一SID的准确性,从而为后期基于SID的报文转发过程提供保障。
[0142] 一个可选的实施例中,当第一地址空间的边界地址为第一地址空间的末端地址时,根据图2所示的方法,本申请实施例还提供了一种段标识确定方法。如图7所示,图7为本申请实施例提供的段标识确定方法的第四种流程示意图。该方法包括以下步骤。
[0143] 步骤S701,接收第二设备发送的第一路由信息和第二路由信息;其中,第一路由信息包括第一Block标识、第一Block对应的第一地址空间的边界地址以及第一偏移量;第二路由信息包括第二Block标识以及第一索引值。
[0144] 上述步骤S701与上述步骤S201相同。
[0145] 步骤S702,若第一Block标识与第二Block标识均表征相同Block则按照SID的地址规则,将第一索引值偏移第一偏移量,得到第二偏移地址。
[0146] 上述第二偏移地址的获取方式可参照上述第一偏移地址的获取方式,在此不作具体说明。
[0147] 步骤S703,根据末端地址与第二偏移地址,确定第一SID。
[0148] 在本步骤中,第一设备可以根据偏移处理得到的第二偏移地址,以及第一路由信息中包括第一地址空间的边界地址(即上述第一地址空间的末端地址),确定第一路由信息和第二路由信息所对应的第一SID。关于第一SID的确定方法可参见下文描述,在此不作具体说明。
[0149] 上述步骤S702‑步骤S703是对上述步骤S202的细化。
[0150] 一个可选的实施例中,根据图7所示的方法,本申请实施例还提供了一种段标识确定方法。如图8所示,图8为本申请实施例提供的段标识确定方法的第五种流程示意图。该方法包括以下步骤。
[0151] 步骤S801,接收第二设备发送的第一路由信息和第二路由信息;其中,第一路由信息包括第一Block标识、第一Block对应的第一地址空间的边界地址以及第一偏移量;第二路由信息包括第二Block标识以及第一索引值。
[0152] 步骤S802,若第一Block标识与第二Block标识均表征相同Block,则按照SID的地址规则,将第一索引值偏移第一偏移量,得到第二偏移地址。
[0153] 上述步骤S801‑步骤S802与上述步骤S701‑步骤S702相同。
[0154] 步骤S803,计算末端地址与第二偏移地址的差值。
[0155] 在本步骤中,第一设备可以对第一地址空间的末端地址和第二偏移地址进行差值计算,得到末端地址与第二偏移地址的差值。
[0156] 一个可选的实施例中,第一设备在计算得到末端地址与第二偏移地址的差值后,可以将该差值确定为第一路由信息和第二路由信息所对应的SID,即上述第一SID。
[0157] 另一个可选的实施例中,考虑到上述第三链路状态报文和第四链路状态报文在传输过程中可能出现传输错误,为了保证确定出的第一SID的准确性,第一设备可以判断计算出的末端地址与第二偏移地址的差值所对应的SID是否在上述第一地址空间内。也就是判断计算出的末端地址与第二偏移地址的差值所对应的SID是否在第一地址空间所对应的SID取值范围内。若在第一地址空间内,则执行步骤S804。若不在第一地址空间内,则执行步骤S805。
[0158] 上述确定末端地址与第二偏移地址间的差值所对应的SID是否在第一地址空间内的方式可参照上述确定起始地址与第一偏移地址的和值所对应的SID是否在第一地址空间内的方法,在此不作具体说明。
[0159] 步骤S804,若差值对应的SID在第一地址空间内,则将差值对应的SID确定为第一SID。
[0160] 上述步骤S803‑步骤S804是对上述步骤S703的细化。
[0161] 步骤S805,若差值对应的SID不在第一地址空间内,则拒绝确定第一SID。
[0162] 在本步骤中,当计算出的末端地址与第二偏移地址的差值所对应的SID不在第一地址空间内,第一设备可以确定计算出的差值出现错误。此时,第一设备可以拒绝将该差值对应的SID确定为第一SID。
[0163] 通过判断末端地址与第二偏移地址的差值所对应的SID是否在第一地址空间,可以有效检测出计算出的差值是否出现错误,从而避免将错误的差值所对应的SID确定为第一SID,保证了确定出的第一SID的准确性,从而为后期基于SID的报文转发过程提供保障。
[0164] 在上述图4、图6‑图8的实施例中,仅以第一地址空间中的起始地址和末端地址为例,对第一SID的确定方法进行说明。除此以外,第一设备还可以根据第一地址空间中除起始地址和末端地址以外的任一地址,确定第二设备发布的第一SID。
[0165] 为便于理解,以第一地址空间中除起始地址和末端地址以外的任一地址为地址A,对第一SID的确定方法进行说明。此时,上述第一偏移量中可以包括指示正负的符号位,如,符号位数值为0表示正数,符号位数值为1表示负数。第一设备在按照SID的地址规则将索引值偏移上述第一偏移量得到偏移地址之后,可以根据第一偏移量的符号位,对地址A和偏移地址进行和值或差值计算,从而确定第一SID。例如,当第一偏移量的符号位表示正数时,第一设备可以计算地址A与偏移地址的和值,从而确定第一SID;当第一偏移量的符号位表示负数时,第一设备可以计算地址A与偏移地址的差值,从而确定第一SID。
[0166] 在本申请实施例中,对上述第一SID确定过程中所利用的第一地址空间中的地址不作具体限定。
[0167] 一个可选的实施例中,上述第一设备存储了第二SID,根据上述图2所示的方法,本申请实施例还提供了一种段标识确定方法,如图9所示,图9为本申请实施例提供的段标识确定方法的第六种流程示意图。该方法包括以下步骤。
[0168] 步骤S901,接收第二设备发送的第一路由信息和第二路由信息;其中,第一路由信息包括第一Block标识、第一Block对应的第一地址空间的边界地址以及第一偏移量;第二路由信息包括第二Block标识以及第一索引值。
[0169] 步骤S902,若第一Block标识与第二Block标识均表征相同Block,则根据第一地址空间的边界地址、第一偏移量以及第一索引值,确定第一SID。
[0170] 上述步骤S901‑步骤S902与上述步骤S201‑步骤S202相同。
[0171] 步骤S903,获取存储的第二SID。
[0172] 上述第二SID可以包括第一设备的设备SID,第一设备与其邻居节点间的链路SID中的一种或多种。在此,对上述第二SID不作具体限定。
[0173] 步骤S904,根据预先划分的每一Block与地址空间之间的对应关系,确定第二SID所属的目标Block。
[0174] 一个可选的实施例中,针对SRv6网络中的每一设备,该设备可以按照预设的地址空间划分规则,划分出多个SID取值范围,每一SID取值范围为一个Block。此时,上述预设规则为该预设的地址空间划分规则。
[0175] 为便于理解,以地址空间0::100:0至0::300:0为例进行说明。设备可以按照预设规则,将该地址空间划分出两个Block,例如,Block 1所对应的地址空间可以为:0::100:0至0::200:0,Block 2所对应的地址空间可以为:0::201:0至0::300:0。
[0176] 另一个可选的实施例中,针对SRv6网络中的每一设备,该设备可以按照预设的比特位划分规则,划分出多个SID取值范围,每一SID取值范围为一个Block。此时,上述预设规则为该预设的比特位划分规则。
[0177] 为便于理解,以4个比特位的划分为例进行说明。地址空间的取值范围为:0000至1111。设备可以基于这4个比特位划分出两个SID取值范围,即划分得到两个Block。
[0178] 例如,Block A所对应的地址存储空间可以为:0000至0011,也就是第三比特位和第四比特位置0。Block B所对应的地址存储空间为:0100‑1111。也就是第三比特位和第四比特位置中的至少一个比特为置1。
[0179] 上述Block可以根据预设的地址空间划分规则划分得到,也可以根据预设的比特位划分规则划分得到。在此,对上述Block的划分方式不作具体限定。
[0180] 在本申请实施例中,上述SRv6网络中每一设备按照预设规则划分得到Block的数量可以相同,也可以不同;并且,每一Block所对应的地址空间的取值范围可以相同,也可以不同。在此,SRv6网络中每一设备所对应的Block的数量以及地址空间不作具体限定。
[0181] 一个可选的实施例中,根据已知的通信协议标准可知,在上述SID中Arguments字段为0。因此,上述在按照预设规则划分Block时,可以根据SID中包括的Arguments字段的比特数,确定需要划分的地址空间。也就是选取Arguments字段为0的地址空间进行划分,得到一个或多个Block。
[0182] 一个可选的实施例中,上述SRv6网络中的每一设备在划分得到一个或多个Block后,可以存储为每一Block分配对应的Block标识,即Block ID。
[0183] 上述第一设备在获取到上述第二SID后,可以根据其预先划分的每一Block与地址空间的对应关系,确定第二SID所在的地址空间(记为第二地址空间),并将第二SID所在的第二地址空间所对应的Block确定为第二SID所属的Block,得到目标Block。
[0184] 在上述实施例中,上述步骤S904是在步骤S903之后执行的。除此以外,上述步骤S904和上述步骤S901可以同时执行,还可以在上述步骤S901之前执行。在此,对上述步骤S901与步骤S904的执行顺序不作具体限定。
[0185] 步骤S905,根据第二地址空间中每一地址的属性特征,确定第二地址空间的边界地址的第二偏移量。
[0186] 一个可选的实施例中,由于已知的通信协议标准中,上述SID包括Arguments字段,Arguments字段设置在SID的低地址位上。并且,Arguments字段所对应的每一比特位为0,因此,第一设备可以将Arguments字段所对应的全部比特数,确定为第二地址空间的边界地址的第二偏移量。
[0187] 在本申请实施例中,上述第二地址空间中每一地址的属性特征可以表示为:每一地址低地址位上数值为0的比特位的数量。
[0188] 上述第二地址空间的边界地址可以为第二地址空间中的起始地址或末端地址等。
[0189] 在本申请实施例中,第一设备还可以根据用户实际需求确定第二偏移量。在一个例子中,第一设备从低地址位起,选择第一数量个地址位作为第二偏移量。其中,第一数量的值可为10个、20个、30个等等。
[0190] 可以理解的是,在该示例中,并不严格依据现有SID包括的字段确定第二偏移量,而是根据用户实际需求,选择部分地址位作为第二偏移量。并且,选择出的每个地址位对应的值可为0,也可为1,在本申请实施例中,并不限定每个地址位对应的值。
[0191] 在本申请实施例中,对上述第二偏移量的确定方法不作具体限定。
[0192] 步骤S906,根据目标Block对应的第二地址空间中每一SID与索引值的对应关系,确定第二SID对应的第二索引值。
[0193] 在本申请实施例中,上述目标Block对应的第二地址空间中每一SID存在对应的索引值。第一设备在确定第二SID所属目标Block对应的第二地址空间后,可以根据该第二地址空间中每一SID与索引值间的对应关系,确定第二SID对应的索引值,作为第二索引值。
[0194] 在本申请实施例中,上述第二地址空间中每一SID所对应的索引值可以基于第二地址空间的边界地址确定。
[0195] 例如,上述第二地址空间所对应的SID取值范围为:0::100:0至0::200:0,该第二地址空间的起始地址为:0::100:0,则0::100:0所对应的索引值可以为0,0::101:0所对应的索引值可以为1,0::102:0所对应的索引值可以为2,以此类推,0::200:0所对应的索引值2 2
可以为256=2*16‑16。
[0196] 再例如,上述第二地址空间所对应的SID取值范围仍为:0::100:0至0::200:0,该第二地址空间的末端地址为:0::200:0,则0::200:0所对应的索引值可以为0,0::1FF:0所对应的索引值可以为1,0::1FE:0所对应的索引值可以为2,以此类推,0::100:0所对应的索引值可以为256。
[0197] 在本申请实施例中,对上述第二地址空间中每一SID所对应的索引值的确定方法不作具体限定。
[0198] 步骤S907,向每一邻居设备发送第三路由信息和第四路由信息,第三路由信息包括目标Block的第三Block标识、第二偏移量以及第二地址空间的边界地址,第四路由信息包括第三Block标识以及第二索引值。
[0199] 在本步骤中,第一设备可以向其每一邻居设备发送第三路由信息和第四路由信息。第一设备所对应的每一邻居设备在接收到该第三路由信息和第四路由信息后,可以根据该第三路由信息和第四路由信息,确定上述第二SID。关于第二SID的确定方法可参照上述第一SID的确定方法,在此不作具体说明。
[0200] 在本申请实施例中,上述第三路由信息可以包括在链路状态报文(为便于区分,记为第五链路状态报文)的SRv6 Local Block sub‑TLV中;上述第四路由信息可以包括在链路状态报文(为便于区分,记为第六链路状态报文)SRv6 End.X Index Sub‑TLV、SRv6 LAN End.X Index Sub‑TLV或SRv6 End Index Sub‑TLV中。
[0201] 一个可选的实施例中,上述第一设备在向其邻居节点发送上述第三路由信息和第四路由信息的同时,还可以发送上述第一路由信息和第二路由信息。在此,对第一设备发送的路由信息不作具体限定。
[0202] 为便于理解,结合图10‑a至图10‑d为例进行说明。
[0203] 图10‑a为本申请实施例提供的SRv6 Local Block sub‑TLV的一种示意图。在该SRv6 Local Block sub‑TLV中包括上述第三路由信息中的第三Block标识(即图10‑a所示的块标识),第二偏移量(即图10‑a所示的偏移量),以及第二地址空间的边界地址(即图10‑a所示的起始SID和末端SID)。
[0204] 图10‑b为本申请实施例提供的SRv6 End.X Index Sub‑TLV的一种示意图;
[0205] 图10‑c为本申请实施例提供的SRv6 LAN End.X Index Sub‑TLV的一种示意图。在SRv6 End.X Index Sub‑TLV和SRv6 LAN End.X Index Sub‑TLV中包括上述第四路由信息中的第三Block标识(即图10‑b和图10‑c中的块标识),以及第二索引值(即图10‑b和图10‑c中的索引0至索引数量‑1)。在图10‑b和图10‑c中第三Block标识为链路SID所对应的标识。
[0206] 图10‑d为本申请实施例提供的SRv6 End Index Sub‑TLV的一种示意图。在SRv6 End Index Sub‑TLV中包括上述第四路由信息中的第三Block标识(即图10‑d中的块标识),以及第二索引值(即图10‑d中的索引0至索引数量‑1)。在图10‑d中第三Block标识为设备SID所对应的标识。
[0207] 上述图10‑a至图10‑d为基于IS‑IS协议所发送的链路状态报文中的TLV。关于基于OSPFv3发送的链路状态报文中的TLV,与基于IS‑IS协议所发送的链路状态报文中的TLV基本相似,在此,对基于OSPFv3发送的链路状态报文中的TLV的结构不作具体说明。
[0208] 为便于理解,以两个相邻设备,即设备1和设备2为例,对设备1中存储的SID的发布过程进行说明。
[0209] 现假设设备1中存储了两个设备SID,分别表示为:1::101:0和1::102:0。设备1分配的Block的数量为1,该Block的Block标识为1,地址空间为1::100:0至1::200:0。
[0210] 设备1的上Block中分配中SID所对应的索引信息表示为:Index 1:1::101:0,和Index 2:1::102:0。也就是SID 1::101:0所对应的索引为Index 1,SID 1::102:0所对应的索引为Index 2。
[0211] 某一时刻,设备1向邻居设备,即设备2发送携带有SRv6 Local Block sub‑TLV的链路状态报文1和携带有SRv6 End Index Sub‑TLV的链路状态报文2。在SRv6 Local Block sub‑TLV中,块标识(即Block‑ID)字段为1,起始SID字段为1::100:0,末端SID字段为1::200:0,偏移量(即offset)字段为16。在SRv6 End Index Sub‑TLV中,段标识字段为1,索引数量(即Index Num)字段为2,索引长度(即Index Length)字段为1,Index 0字段占1个字节,值为1(即索引值为1),Index 1字段占1个字节,值为2(即索引值为2)。
[0212] 设备2在接收到设备1发送的链路状态报文1和链路状态报文2后,针对SRv6 End Index Sub‑TLV中的Index 0,可以按照偏移量字段中的偏移量(即16),对其索引值(即1)进行偏移处理,也就是将索引值1向左偏移16个比特位,得到偏移地址0::1:0,此时,设备2可以将偏移地址0::1:0与起始SID(即1::100:0)相加,得到SID 1::101:0。
[0213] 针对SRv6 End Index Sub‑TLV中的Index 1,可以按照偏移量字段中的偏移量(即16),对其索引值(即2)进行偏移处理,也就是将索引值2向左偏移16个比特位,得到偏移地址0::2:0,此时,设备2可以将偏移地址0::2:0与起始SID(即1::100:0)相加,得到SID 1::
102:0。
[0214] 此时,设备2可以确定设备1所发布的SID为1::101:0和1::102:0。
[0215] 基于同一种发明构思,根据上述本申请实施例提供的段标识确定方法,本申请实施例还提供了一种段标识确定装置。如图11‑a所示,图11‑a为本申请实施例提供的段标识装置的第一种结构示意图。该装置应用于上述第一设备,具体包括以下模块。
[0216] 接收模块1101,用于接收第二设备发送的第一路由信息和第二路由信息;其中,第一路由信息包括第一Block标识、第一Block对应的第一地址空间的边界地址以及第一偏移量;第二路由信息包括第二Block标识以及第一索引值;
[0217] 第一确定模块1102,用于若第一Block标识与第二Block标识均表征相同Block,则根据第一地址空间的边界地址、第一偏移量以及第一索引值,确定第一SID。
[0218] 可选的,上述第一地址空间的边界地址为第一地址空间的起始地址;
[0219] 上述第一确定模块1102,具体可以用于按照SID的地址规则,将第一索引值偏移第一偏移量,得到第一偏移地址;根据起始地址与第一偏移地址,确定第一SID。
[0220] 可选的,上述第一确定模块1102,具体可以用于计算起始地址与第一偏移地址的和值;若和值对应的SID在第一地址空间内,则将和值对应的SID确定为第一SID。
[0221] 可选的上述第一地址空间的边界地址为第一地址空间的末端地址。
[0222] 上述第一确定模块1102,具体可以用于按照SID的地址规则,将第一索引值偏移第一偏移量,得到第二偏移地址;根据末端地址与第二偏移地址,确定第一SID。
[0223] 可选的,上述第一确定模块1102,具体可以用于计算末端地址与第二偏移地址的差值;若差值对应的SID在第一地址空间内,则将差值对应的SID确定为第一SID。
[0224] 可选的,上述第一设备存储了第二SID;
[0225] 如图11‑b所示,上述段标识确定装置还可以包括:
[0226] 获取模块1103,用于获取存储的第二SID;
[0227] 第二确定模块1104,用于根据预先划分的每一Block与地址空间之间的对应关系,确定第二SID所属的目标Block;
[0228] 第三确定模块1105,用于根据第二地址空间中每一地址的属性特征,确定第二地址空间的边界地址的第二偏移量;
[0229] 第四确定模块1106,用于根据目标Block对应的第二地址空间中每一SID与索引值的对应关系,确定第二SID对应的第二索引值;
[0230] 发送模块1107,用于向每一邻居设备发送第三路由信息和第四路由信息,第三路由信息包括目标Block的第三Block标识、第二偏移量以及第二地址空间的边界地址,第四路由信息包括第三Block标识以及第二索引值。
[0231] 通过本申请实施例提供的装置,第一设备在接收到的第二设备发送的第一路由信息和第二路由信息后,若第一路由信息中包括的第一Block标识与第二路由信息包括的第二Block标识相同,则根据第一路由信息中的第一地址空间的边界地址和第一偏移量,以及第二路由信息中包括的第一索引值,确定第二设备所发布的第一SID。
[0232] 相比于相关技术的SID发布过程需要携带完整的SID,在本申请实施例中第二设备向第一设备发送的第一路由信息和第二路由信息中并没有包括第二设备中存储的第一SID,而是将其存储的SID所属Block的Block标识,该Block的第一地址空间的边界地址,偏移量,以及该SID所对应的索引值发送给第一设备。因此,当SRv6网络中包括较多设备时,各设备通过向其邻居设备发送第一路由信息和第二路由信息的方式,可以使得其邻居设备根据第一路由信息和第二路由信息所包括的信息,准确确定出该设备所发布的SID,并且,第一路由信息所包括的Block标识和偏移量,以及第二路由信息所包括的Block标识和索引值所对应的数据量明显小于完整SID所对应的数据量,因此,当SRv6网络中存在大量需要发布的SID时,采用本申请实施例提供的方法,可以明显降低报文所需携带信息的数据量,从而减少所需发送的报文的数量,这有效的降低了SID发布过程中报文的开销,从而保证了设备性能和报文传输协议的稳定性。
[0233] 基于同一种发明构思,根据上述本申请实施例提供的段标识确定方法,本申请实施例还提供了一种设备,如图12所示,包括处理器1201和机器可读存储介质1202,机器可读存储介质1202存储有能够被处理器1201执行的机器可执行指令。处理器1201被机器可执行指令促使实现上述图2、图4、图6‑图9所示的任一步骤。
[0234] 一个可选的实施例中,如图12所示,设备还可以包括:通信接口1203和通信总线1204;其中,处理器1201、机器可读存储介质1202、通信接口1203通过通信总线1204完成相互间的通信,通信接口1203用于上述设备与其他设备之间的通信。
[0235] 基于同一种发明构思,根据上述本申请实施例提供的段标识确定方法,本申请实施例还提供了一种机器可读存储介质,机器可读存储介质存储有能够被处理器执行的机器可执行指令。处理器被机器可执行指令促使实现上述图2、图4、图6‑图9所示的任一步骤。
[0236] 上述通信总线可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(Extended Industry Standard Architecture,扩展工业标准结构)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。
[0237] 上述机器可读存储介质可以包括RAM(Random Access Memory,随机存取存储器),也可以包括NVM(Non‑Volatile Memory,非易失性存储器),例如至少一个磁盘存储器。另外,机器可读存储介质还可以是至少一个位于远离前述处理器的存储装置。
[0238] 上述处理器可以是通用处理器,包括CPU(Central Processing Unit,中央处理器)、NP(Network Processor,网络处理器)等;还可以是DSP(Digital Signal Processing,数字信号处理器)、ASIC(Application Specific Integrated Circuit,专用集成电路)、FPGA(Field‑Programmable Gate Array,现场可编程门阵列)或其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0239] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0240] 本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于段标识确定装置、设备及机器可读存储介质。机器可读存储介质实施例而言,由于其基本相似于段标识确定方法实施例,所以描述的比较简单,相关之处参见段标识确定方法实施例的部分说明即可。
[0241] 以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。