掌桥专利:专业的专利平台
掌桥专利
首页

业务链的故障保护方法、装置、设备、系统及存储介质

文献发布时间:2023-06-19 11:44:10


业务链的故障保护方法、装置、设备、系统及存储介质

技术领域

本申请涉及通信技术领域,特别涉及一种业务链的故障保护方法、装置、设备、系统及存储介质。

背景技术

业务链(英文:service function chain,简称:SFC,也称业务功能链)是一种为应用层提供有序服务的技术。SFC会在报文中携带业务链路径信息,通过业务链路径信息,指明报文待经过的路径,以使报文按照指定的路径依次经过各个设备。如此,可以将各个设备提供的服务在逻辑层面上联接起来,从而形成一个有序的服务组合。

SFC的架构包括流分类器(英文:classifier,简称:CF)、业务功能(英文:servicefunction,简称:SF)、SFC代理(英文:SFC Proxy)、业务功能转发设备(英文:Servicefunction Forwarder,简称:SFF)等节点。其中,SFF用于根据报文中携带的业务链路径信息,将从网络中收到的报文转发到SFF关联的若干个SF上。SF用于从SFF接收报文,对报文进行业务功能处理,将处理后的报文返回给同一个SFF。在逻辑上,SFC代理位于SFF及其关联的若干个不感知业务链路径信息的SF之间,SFC代理可以代表SF接收来自SFF的报文,删除业务链路径信息,转发给SF。在物理上,SFF和SFC代理通常集成在同一设备上。

时下,随着分段路由(英文:segment routing,简称:SR)的不断演进,SFC技术中的业务链路径信息通常基于SR技术中的段标识(Segment ID,SID)实现。具体地,使用SR技术传输SFC中的报文时,报文中会包括段列表(segment list),该段列表包括有序排列的SID,通过SID可以指明报文要经过的节点或链路,通过SID的排列顺序可以指明业务链的路径顺序。其中,在使用互联网协议第6版(英文:internet protocol version 6,简称:IPv6)作为SR的转发面时,段列表中的每个SID的形式为IPv6地址,段列表通过报文中的分段路由头(英文:segment routing header,简称:SRH)携带;在使用多协议标签交换(英文:Multi-Protocol Label Switching,简称:MPLS)作为SR的转发面时,段列表为MPLS中的标签栈。

在很多场景下,业务链中的SF是不支持SR(SR-unaware)的设备,即,SF本身可能无法识别段列表。考虑到这种情况,若SFF接收到待发往SF的报文,SFF可以发挥SFC代理的功能,为SF执行代理操作。具体的,SFF会从接收到的报文中删除段列表,在缓存(cache)中缓存短列表,再通过SFF与SF之间的链路,将不包含段列表的报文转发给SF。而SF接收到报文时,即使SF是SR-unaware的设备,由于SF接收到的报文已经不包含SRH,因此也可以识别报文并进行业务功能处理。

在目前的业务链技术中,当SFF接收到待发往SF的报文时,若SFF与SF之间的链路发生故障,那么报文就会无法到达SF,导致流量中断。

发明内容

本申请实施例提供了一种业务链的故障保护方法、装置、设备、系统及存储介质,能够避免业务流量由于故障而中断,提升业务链的可靠性。所述技术方案如下:

第一方面,提供了一种业务链的故障保护方法,在该方法中,业务链中的第一业务功能转发设备SFF接收第一报文,所述第一报文的报文头的目的地址字段包括所述业务链中第一业务功能SF网元对应的代理段标识SID,所述第一SFF是所述第一SF网元接入的SFF;若所述第一SFF与所述第一SF网元之间的链路发生故障,所述第一SFF更新所述第一报文的所述目的地址字段,得到第二报文,所述第二报文的目的地址字段包括第一从属SID,所述第一从属SID为所述业务链中的第二SFF本地的SID,所述第二SFF为保护组中所述第一SFF之外的其他SFF,所述保护组包括所述第一SF网元接入的多个SFF,所述第二报文包括所述第一报文的载荷;所述第一SFF发送所述第二报文。

通过该方法,在SRV6静态业务链场景下,当SF网元与接入的一个SFF之间的链路故障时,通过引入secondary SID(从属SID),将报文的报文头的目的地址字段更新为secondary SID,使得报文通过secondary SID,被引流至该SF网元接入的其他SFF,从而实现SFF与SF网元之间的链路故障保护,避免流量由于单点链路故障导致中断,提升了业务链的可靠性。

可选地,所述第一从属SID的类型为端点End类型。

通过选择End类型的SID作为第一secondary SID,相对于选择End.X类型的SID作为第一secondary SID的方式而言,可以避免配置End.X SID时指定下一跳和出接口的操作,从而避免由于End.X SID由于兼具引流和指定出接口的功能,替代了原有的代理SID(proxy SID)的角色,导致要在第一SFF上配置大量的secondary SID,而不是全局唯一的secondary SID的情况。另外,也由于第一secondary SID为End类型的SID,避免后续对backup SID的规划造成较大约束。

可选地,所述方法还包括:所述第一SFF将所述第一报文中的所述代理SID替换为备份SID,所述备份SID用于指示所述第二SFF不将所述第二报文的目的地址字段更新为第二从属SID,所述第二从属SID为所述第一SFF本地的SID。

通过这种可选方式,在SRV6静态业务链场景下,即使SF网元与双归接入的两个SFF之间的链路均故障,通过引入backup SID(备份SID),将报文原本包含的proxy SID替换为backup SID,使得报文既可以通过secondary SID(从属SID),被引流至该SF网元接入的其他SFF,又可以通过backup SID,指示其他SFF作指向SF网元的转发,而不再进入secondarySID流程,因此避免了其他SFF进入secondary SID流程后造成的流量环路。因此,通过backup SID机制,可以防止双点故障引起的流量环路。

可选地,所述保护组为任播组,所述任播组中不同SFF发布的代理SID为任播SID。

第二方面,提供了一种业务链的故障保护方法,在该方法中,业务链中的第二SFF接收第二报文,所述第二报文的报文头的目的地址字段包括第一从属SID,所述第一从属SID为所述第二SFF本地的SID;所述第二SFF根据所述第一从属SID,对所述第二报文进行本地转发处理,得到第三报文;所述第二SFF根据所述第三报文得到第四报文,所述第四报文包括所述第三报文的载荷且不包括段列表;所述第二SFF向所述业务链中的第一SF网元发送所述第四报文。

通过该方法,在SRV6静态业务链场景下,当SF网元与接入的一个SFF之间的链路故障时,通过引入secondary SID(从属SID),将报文的报文头的目的地址字段更新为secondary SID,使得报文通过secondary SID,被引流至该SF网元接入的其他SFF,从而实现SFF与SF网元之间的链路故障保护,避免流量由于单点链路故障导致中断,提升了业务链的可靠性。

可选地,所述第一从属SID的类型为端点End类型。

通过选择End类型的SID作为第一secondary SID,相对于选择End.X类型的SID作为第一secondary SID的方式而言,可以避免配置End.X SID时指定下一跳和出接口的操作,从而避免由于End.X SID由于兼具引流和指定出接口的功能,替代了原有的proxy SID的角色,导致要在第一SFF上配置大量的secondary SID,而不是全局唯一的secondary SID的情况。另外,也由于第一secondary SID为End类型的SID,避免后续对backup SID(备份SID)的规划造成较大约束。

可选地,所述第三报文的报文头的所述目的地址字段包括所述第一SF网元对应的代理SID,所述第二SFF向所述第一SF网元发送所述第四报文,包括:所述第二SFF通过所述代理SID对应的出接口,向所述第一SF网元发送所述第四报文。

可选地,所述第三报文的报文头的目的地址字段包括备份SID,所述备份SID用于指示所述第二SFF不将所述第二报文的目的地址字段更新为第二从属SID,所述第二从属SID为所述第一SFF本地的SID,所述第二SFF向所述第一SF网元发送所述第四报文,包括:

所述第二SFF通过所述备份SID对应的出接口,向所述第一SF网元发送所述第四报文。

通过这种可选方式,在SRV6静态业务链场景下,即使SF网元与双归接入的两个SFF之间的链路均故障,通过引入backup SID(备份SID),将报文原本包含的proxy SID替换为backup SID,使得报文既可以通过secondary SID(从属SID),被引流至该SF网元接入的其他SFF,又可以通过backup SID,指示其他SFF作指向SF网元的转发,而不再进入secondarySID流程,因此避免了其他SFF进入secondary SID流程后造成的流量环路。因此,通过backup SID机制,可以防止双点故障引起的流量环路。

可选地,所述第二从属SID的类型为End类型。

可选地,所述第三报文的报文头的目的地址字段包括备份SID,所述方法还包括:若所述备份SID对应的出接口故障,所述第二SFF更新所述第三报文的所述目的地址字段,得到第八报文,所述第八报文的报文头的目的地址字段包括引流SID,所述引流SID为第三SFF本地的SID;所述第二SFF发送所述第八报文。

通过这种可选方式,在SRV6静态业务链场景下,当SF网元发生故障时,通过引入bypass SID(引流SID),将报文的报文头的目的地址字段更新为bypass SID,使得报文通过bypass SID,被引流至其他SF网元,比如原有路径外的备份SF网元或被引流至原有路径内的下一个SF网元,从而通过其他网元进行业务保护,实现业务流量的正常转发,避免流量由于单个节点故障而导致中断,提升了业务链的可靠性。

可选地,所述方法还包括:若所述备份SID对应的出接口故障,且所述第二SFF的本地SID表中没有所述引流SID,所述第二SFF丢弃所述第三报文。

第三方面,提供了一种业务链的故障保护方法,在该方法中,业务链中的第四业务功能转发设备SFF接收第五报文,所述第五报文的报文头的目的地址包括所述业务链中的第二SF网元对应的代理段标识SID,所述第四SFF是所述第二SF接入的SFF;若所述第二SF网元处于故障状态,所述第四SFF更新所述第五报文的所述目的地址字段,得到第六报文,所述第六报文的报文头的所述目的地址包括引流SID,所述引流SID为第五SFF本地的SID,所述第五SFF为第三SF网元接入的SFF,所述第三SF网元为所述第二SF网元之外的其他SF网元,所述第六报文包括所述第五报文的载荷;所述第四SFF发送所述第六报文。

在SRV6静态业务链场景下,当SF网元发生故障时,通过引入bypass SID,将报文的报文头的目的地址字段更新为bypass SID(引流SID),使得报文通过bypass SID,被引流至其他SF网元,比如原有路径外的备份SF网元或被引流至原有路径内的下一个SF网元,从而通过其他网元进行业务保护,实现业务流量的正常转发,避免流量由于单个节点故障而导致中断,提升了业务链的可靠性。

可选地,所述引流SID为End类型的SID;或者,所述引流SID为所述第三SF网元对应的代理SID。

可选地,所述方法还包括:若代理SID对应的出接口处于开启状态,且所述第二SF网元所在的每个虚拟机均不可达,所述第四SFF检测到所述第二SF网元处于故障状态,所述代理SID用于指示为所述第二SF网元执行代理操作;或,若备份SID对应的出接口或代理SID对应的出接口中的至少一项发生链路故障,所述第四SFF检测到所述第二SF网元处于故障状态,所述备份SID用于指示所述第四SFF不将所述第二报文的目的地址字段更新为第三从属SID,所述第三从属SID为第五SFF本地的SID,所述第五SFF为保护组中所述第四SFF之外的其他SFF,所述保护组包括所述第二SF网元接入的多个SFF。

可选地,所述第三从属SID为End类型的SID;

可选地,所述第三SF网元为所述第二SF网元的备份SF网元;或,所述第三SF网元为所述业务链中所述第二SF网元的下一个SF网元。

第四方面,提供了一种业务链的故障保护方法,在该方法中,业务链中的第五业务功能转发设备SFF接收第六报文,所述第六报文的报文头的目的地址字段包括引流SID,所述引流SID为第五SFF本地的SID,所述第五SFF是第三业务功能SF网元接入的SFF;所述第五SFF根据所述第六报文得到第七报文,所述第七报文包括所述第六报文的载荷且不包括段列表;所述第五SFF向所述第三SF网元发送所述第七报文。

在SRV6静态业务链场景下,当SF网元发生故障时,通过引入bypass SID,将报文的报文头的目的地址字段更新为bypass SID(引流SID),使得报文通过bypass SID,被引流至其他SF网元,比如原有路径外的备份SF网元或被引流至原有路径内的下一个SF网元,从而通过其他网元进行业务保护,实现业务流量的正常转发,避免流量由于单个节点故障而导致中断,提升了业务链的可靠性。

可选地,引流SID为End类型的SID;或,引流SID为所述第三SF网元对应的代理SID。

可选地,所述第五SFF根据所述第六报文得到第七报文,包括:所述第五SFF根据所述bypass SID,对所述第六报文进行本地转发处理,得到第八报文,所述第八报文的报文头的目的地址字段包括所述第三SF网元对应的代理SID,所述第八报文包括所述第六报文的载荷;所述第五SFF根据所述第八报文得到所述第七报文。

可选地,所述第三SF网元为第二SF网元的备份SF网元,所述第二SF网元为处于故障状态的SF网元;或,所述第三SF网元为所述业务链中所述第二SF网元的下一个SF网元。

第五方面,提供了一种SFF,该SFF具有实现上述第一方面或第一方面任一种可选方式中业务链的故障保护的功能。该SFF包括至少一个模块,至少一个模块用于实现上述第一方面或第一方面任一种可选方式所提供的业务链的故障保护方法。

可选地,所述第一从属SID的类型为端点End类型。

可选地,所述保护组为任播组,所述任播组中不同SFF发布的代理SID为任播SID。

第五方面提供的SFF的具体细节可参见上述第一方面或第一方面任一种可选方式,此处不再赘述。

第六方面,提供了一种SFF,该SFF具有实现上述第二方面或第二方面任一种可选方式中业务链的故障保护的功能。该SFF包括至少一个模块,至少一个模块用于实现上述第二方面或第二方面任一种可选方式所提供的业务链的故障保护方法。

可选地,所述第一从属SID的类型为End类型。

可选地,所述SFF还包括:丢弃模块,用于若所述备份SID对应的出接口故障,且本地SID表中没有所述引流SID,丢弃所述第三报文。

第六方面提供的SFF的具体细节可参见上述第二方面或第二方面任一种可选方式,此处不再赘述。

第七方面,提供了一种SFF,该SFF具有实现上述第三方面或第三方面任一种可选方式中业务链的故障保护的功能。该SFF包括至少一个模块,至少一个模块用于实现上述第三方面或第三方面任一种可选方式所提供的业务链的故障保护方法。

可选地,所述引流SID为端点End类型的SID;或者,

所述引流SID为所述第三SF网元对应的代理SID。

可选地,所述第三SF网元为所述第二SF网元的备份SF网元;或,

所述第三SF网元为所述业务链中所述第二SF网元的下一个SF网元。

第七方面提供的SFF的具体细节可参见上述第三方面或第三方面任一种可选方式,此处不再赘述。

第八方面,提供了一种SFF,该SFF具有实现上述第四方面或第四方面任一种可选方式中业务链的故障保护的功能。该SFF包括至少一个模块,至少一个模块用于实现上述第四方面或第四方面任一种可选方式所提供的业务链的故障保护方法。

可选地,所述引流SID为端点End类型的SID;或者,

所述引流SID为所述第三SF网元对应的代理SID。

可选地,所述第三SF网元为第二SF网元的备份SF网元,所述第二SF网元为处于故障状态的SF网元;或,所述第三SF网元为所述业务链中所述第二SF网元的下一个SF网元。

第八方面提供的SFF的具体细节可参见上述第四方面或第四方面任一种可选方式,此处不再赘述。

第九方面,提供了一种SFF,该SFF包括处理器,该处理器用于执行指令,使得该SFF执行上述第一方面或第一方面任一种可选方式所提供的业务链的故障保护方法。第九方面提供的SFF的具体细节可参见上述第一方面或第一方面任一种可选方式,此处不再赘述。

第十方面,提供了一种SFF,该SFF包括处理器,该处理器用于执行指令,使得该SFF执行上述第二方面或第二方面任一种可选方式所提供的业务链的故障保护方法。第十方面提供的SFF的具体细节可参见上述第二方面或第二方面任一种可选方式,此处不再赘述。

第十一方面,提供了一种SFF,该SFF包括处理器,该处理器用于执行指令,使得该SFF执行上述第三方面或第三方面任一种可选方式所提供的业务链的故障保护方法。第十一方面提供的SFF的具体细节可参见上述第三方面或第三方面任一种可选方式,此处不再赘述。

第十二方面,提供了一种SFF,该SFF包括处理器,该处理器用于执行指令,使得该SFF执行上述第四方面或第四方面任一种可选方式所提供的业务链的故障保护方法。第十二方面提供的SFF的具体细节可参见上述第四方面或第四方面任一种可选方式,此处不再赘述。

第十三方面,提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令,该指令由处理器读取以使SFF执行上述第一方面或第一方面任一种可选方式所提供的业务链的故障保护方法。

第十四方面,提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令,该指令由处理器读取以使SFF执行上述第二方面或第二方面任一种可选方式所提供的业务链的故障保护方法。

第十五方面,提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令,该指令由处理器读取以使SFF执行上述第三方面或第三方面任一种可选方式所提供的业务链的故障保护方法。

第十六方面,提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令,该指令由处理器读取以使SFF执行上述第四方面或第四方面任一种可选方式所提供的业务链的故障保护方法。

第十七方面,提供了一种计算机程序产品,当该计算机程序产品在SFF上运行时,使得SFF执行上述第一方面或第一方面任一种可选方式所提供的业务链的故障保护方法。

第十八方面,提供了一种计算机程序产品,当该计算机程序产品在SFF上运行时,使得SFF执行上述第二方面或第二方面任一种可选方式所提供的业务链的故障保护方法。

第十九方面,提供了一种计算机程序产品,当该计算机程序产品在SFF上运行时,使得SFF执行上述第三方面或第三方面任一种可选方式所提供的业务链的故障保护方法。

第二十方面,提供了一种计算机程序产品,当该计算机程序产品在SFF上运行时,使得SFF执行上述第四方面或第四方面任一种可选方式所提供的业务链的故障保护方法。

第二十一方面,提供了一种业务链的故障保护系统,该业务链的故障保护系统包括上述上述第五方面或第五方面任一种可选方式提供的SFF,该业务链的故障保护系统还包括上述上述第六方面或第六方面任一种可选方式提供的SFF。

第二十二方面,提供了一种业务链的故障保护系统,该业务链的故障保护系统包括上述上述第七方面或第七方面任一种可选方式提供的SFF,该业务链的故障保护系统还包括上述上述第八方面或第八方面任一种可选方式提供的SFF。

附图说明

图1是本申请实施例提供的一种SFC的系统架构图;

图2是本申请实施例提供的一种SRv6报文的示意图;

图3是本申请实施例提供的一种SRH的示意图;

图4是本申请实施例提供的一种SRv6 SID的示意图;

图5是本申请实施例提供的一种End SID的示意图;

图6是本申请实施例提供的一种基于End SID的转发流程示意图;

图7是本申请实施例提供的一种End.X SID的示意图;

图8是本申请实施例提供的一种基于End.X SID的转发流程示意图;

图9是本申请实施例提供的一种SRv6业务链的转发流程示意图;

图10是本申请实施例提供的一种业务链的故障场景的示意图;

图11是本申请实施例提供的一种业务链的故障保护方法的流程图;

图12是本申请实施例提供的一种业务链中SFF至SF之间的链路故障场景下转发报文的示意图;

图13是本申请实施例提供的一种SFF的SID的示意图;

图14是本申请实施例提供的一种业务链中双链路故障场景下出现环路的示意图;

图15是本申请实施例提供的一种SFF的SID的示意图;

图16是本申请实施例提供的一种业务链的故障保护方法的流程图;

图17是本申请实施例提供的一种业务链中双链路故障场景下转发报文的示意图;

图18是本申请实施例提供的一种SFF的SID的示意图;

图19是本申请实施例提供的一种业务链的故障保护方法的流程图;

图20是本申请实施例提供的一种业务链中SF网元故障场景下转发报文的示意图;

图21是本申请实施例提供的一种SFF的SID的示意图;

图22是本申请实施例提供的一种业务链的故障保护方法的流程图;

图23是本申请实施例提供的一种业务链的故障保护方法的流程图;

图24是本申请实施例提供的一种SFF的结构示意图;

图25是本申请实施例提供的一种SFF的结构示意图;

图26是本申请实施例提供的一种SFF的结构示意图;

图27是本申请实施例提供的一种SFF的结构示意图;

图28是本申请实施例提供的一种网络设备的结构示意图;

图29是本申请实施例提供的一种接口板的结构示意图;

图30是本申请实施例提供的一种计算设备的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。还应理解,尽管以下描述使用术语第一、第二等来描述各种元素,但这些元素不应受术语的限制。这些术语只是用于将一元素与另一元素区别分开。例如,在不脱离各种示例的范围的情况下,第一图像可以被称为第二图像,并且类似地,第二图像可以被称为第一图像。第一图像和第二图像都可以是图像,并且在某些情况下,可以是单独且不同的图像。

本申请中术语“至少一个”的含义是指一个或多个,本申请中术语“多个”的含义是指两个或两个以上,例如,多个第二报文是指两个或两个以上的第二报文。本文中术语“系统”和“网络”经常可互换使用。

应理解,在本文中对各种示例的描述中所使用的术语只是为了描述特定示例,而并非旨在进行限制。如在对各种示例的描述和所附权利要求书中所使用的那样,单数形式“一个(“a”“,an”)”和“该”旨在也包括复数形式,除非上下文另外明确地指示。

还应理解,本文中所使用的术语“和/或”是指并且涵盖相关联的所列出的项目中的一个或多个项目的任何和全部可能的组合。术语“和/或”,是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本申请中的字符“/”,一般表示前后关联对象是一种“或”的关系。

还应理解,在本申请的各个实施例中,各个过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。

还应理解,术语“包括”(也称“includes”、“including”、“comprises”和/或“comprising”)当在本说明书中使用时指定存在所陈述的特征、整数、步骤、操作、元素、和/或部件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元素、部件、和/或其分组。

还应理解,本文中所使用的术语“和/或”是指并且涵盖相关联的所列出的项目中的一个或多个项目的任何和全部可能的组合。术语“和/或”,是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本申请中的字符“/”,一般表示前后关联对象是一种“或”的关系。

还应理解,术语“如果”可被解释为意指“当...时”(“when”或“upon”)或“响应于确定”或“响应于检测到”。类似地,根据上下文,短语“如果确定...”或“如果检测到[所陈述的条件或事件]”可被解释为意指“在确定...时”或“响应于确定...”或“在检测到[所陈述的条件或事件]时”或“响应于检测到[所陈述的条件或事件]”。

应理解,说明书通篇中提到的“一个实施例”、“一实施例”、“一种可能的实现方式”意味着与实施例或实现方式有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”、“一种可能的实现方式”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。

首先,对本申请涉及的一些技术术语进行介绍。

传统电信网络的业务链:数据报文在网络中传递时,往往需要经过各种各样的服务节点,从而保证网络能够按照预先的规划为用户提供安全、快速、稳定的服务。这些服务节点包括而不限于防火墙(Fire Wall,FW)、负载均衡(Load Balancer,LB)、入侵防御系统(Intrusion Prevention System,IPS)等,网络流量需要按照业务逻辑所要求的既定顺序经过这些服务节点,来实现所需要的业务。而传统电信网络的业务链中,通过硬件设备上输入复杂的命令行进行策略引流实现,难于运维及变化,同时对VAS服务器的部署和物理位置约束很大。而业务功能链(英文:service function chain,简称:SFC,也称业务链)的出现,有效地解决了传统电信网络中业务链的问题。

SFC是一种给应用层提供有序服务的技术。SFC用来将网络设备上的服务在逻辑层面上联接起来,从而形成一个有序的服务组合。SFC通过在原始报文中添加业务链路径信息来实现报文按照指定的路径依次经过服务设备。在传统的网络架构下,SFC技术利用虚拟网络将服务业务更好的融合进来,很好的解决了上述问题:针对网络设备之间耦合性大,导致业务部署不灵活的问题,SFC基于覆盖(Overlay)技术独立于网络规划,底层物理网络拓扑改变时,不影响服务节点的部署与激活,只要承载网路由可达就可以将虚拟的业务链映射到物理服务节点。针对转发效率低的问题,SFC通过对报文进行网络服务报头(NetworkService Header,NSH)封装,使得业务链路径上的各个节点能够相互传递信息,有了这些信息整个服务链可以对数据做动态灵活的策略处理。针对服务设备无法共享的问题,SFC中转发层面和服务层面相互分离,用户就可以将服务设备划分在资源池中,所有数据流量经过分类后通过业务链引流到多个服务设备上,这样不仅分流后的数据流量降低了对服务设备处理峰值流量能力的性能要求,而且实现了服务设备的资源共享。

以下,结合图1,对SFC中的网元进行介绍:

流分类器(英文:Service Classifier,简称:SC):位于SFC域的边界入口,报文进入SFC域后会首先进行流量分类,分类的粒度由分类器能力和SFC策略决定,分类规则可以粗略也可以详细。例如粗略情况下,一个端口上的所有报文都满足某个SFC规则,走业务链路径1;详细情况下,只有满足五元组要求的报文才能满足某个SFC规则,走业务链路径2。

业务功能(英文:service function,简称:SF)网元:用于对报文进行业务处理。例如,SF网元可以而不限于是防火墙、负载均衡、应用加速器、合法性拦截(LI)、网络地址转换(英文:Network Address Translation,简称:NAT)、带宽控制、病毒检测、云存储、深度包检测(英文:Deep Packet Inspection,简称:DPI)、入侵检测或者入侵防御等。SF网元的物理实体可以是一种计算设备,该计算设备可以而不限于是服务器、主机、个人计算机、网络设备或者终端设备。在一些可能的实施例中,SF网元可以采用这样的方式实现:X86架构的通用服务器上运行有虚拟机或容器,该虚拟机或容器中运行有应用程序,该应用程序可以用于进行业务功能处理。根据是否可以感知NSH封装,SF分为感知NSH封装的SF(NSH-awareSF)和不感知NSH封装的SF(NSH-unaware SF)。NSH-aware SF能够识别收到的NSH报文并对其进行处理,NSH-unaware SF不识别NSH报文,收到后将其丢弃。

业务功能转发设备(英文:Service function Forwarder,简称:SFF):用于将从网络中收到的报文转发到SFF关联的若干个SF上,转发的依据就是NSH封装的信息。SF处理后,将报文再返回给同一个SFF,该SFF最终决定是否将报文发回网络中。SFF的物理实体可以是网络设备,例如可以是路由器、交换机等。

SFC代理(SFC Proxy):位于SFF及其关联的若干个NSH-unaware SF之间,代表SF接收来自SFF的报文,删除NSH封装信息,通过本地逻辑组件将报文发给NSH-unaware SF,也接收从NSH-unaware SF发回的报文,重新为之添加NSH封装信息,再发给SFF进行处理。从SFF角度看,SFC代理相当于一个NSH-aware SF。通常情况下,SFC Proxy和SFF会集成设置在同一硬件设备上。

随着分段路由(英文:Segment Routing,简称:SR)技术的推演,基于互联网协议第6版的分段路由(英文:internet protocol version 6for Segment Routing,简称:SRv6)业务链方案成为实现业务链的优秀方案。为便于理解,在介绍SRV6业务链技术之前,首先对SRv6技术进行介绍:

分段路由(英文:Segment Routing,简称:SR)是基于源路由的理念而设计的在网络中转发报文的一种技术。Segment Routing将网络路径分成一个个段,并且为这些段和网络中的转发节点分配分段标识(Segment ID,SID)。通过对SID进行有序排列,可以得到段列表(Segment List),通过段列表可以指明报文的转发路径。通过SR技术,可以指定携带了Segment List的报文经过的节点以及路径,从而满足流量调优的要求。做一个类比,报文可以比作行李,SR可以比作行李上贴的标签,如果要将行李从A地区发送到D地区,途径B地区和C地区,则可以在始发地A地区给行李贴上一个标签“先到B地区,再到C地区,最后到D地区”,这样一来,各个地区只需识别行李上的标签,依据行李的标签将行李从一个地区转发至另一个地区即可。在SR技术中,源节点会向报文添加标签,中间节点可以根据标签转发至下一个节点,直至报文到达目的节点。例如在报文的包头中,插入,则报文会首先转发给SID1对应的节点,之后转发给SID2对应的节点,之后转发给SID3对应的节点。

SR域(Segment Routing Domain):SR节点的集合。SR域中可以是连接到相同物理架构的节点(如服务提供商网络)、也可以是远端互联的节点(如企业虚拟专用网络或overlay)。

SR隧道(SR Tunnel)为在头节点上将Segment List封装到报文头中的隧道,可以由管理员手工创建,也可以是控制器通过的网络配置(NETCONF)或路径计算单元通信协议(Path Computation Element Communication Protocol,PCEP)等接口协议自动创建。一个SR隧道既可用于流量工程(Traffic Engineering,TE)应用,也可用于操作维护管理(Operation Administration and Maintenance,OAM)、快速重路由(Fast Reroute,FRR)等目的。

段列表(Segment List):用来表示报文转发路径的一个有序的Segment列表。在SRMPLS中,段列表为标签栈。在SRv6中,段列表为IPv6地址列表,携带在IPv6报文的、分段路由头(英文:segment routing header,简称:SRH)中。

段(Segment,也称分段)可以是是指导设备处理报文的任何指令,如:根据最短路径转发报文到目的地、通过指定接口转发报文、将报文转发到指定的应用/业务实例等。段可以包括全局段(Global Segment)和本地段(Local Segment)。

全局段:SR域内的所有SR节点都能识别全局段相关的指令。在SR MPLS中,全局段是一个全局唯一的索引(index),每个设备上的标签为[SRGB+index];在SRv6中,全局段是一个全局唯一的IPv6地址。

本地段:只被生成它的节点所识别的相关指令。在SR MPLS中本地段是SRGB块外的本地标签;在SRv6中,本地段是未被任何路由协议通告过其可达性的任意IPv6地址。

段标识(Segment ID,SID)是Segment的标识,用来标识唯一的段。在SR MPLS的转发层面,SID可以映射为MPLS标签。在SRv6的转发层面,SID可以映射为IPv6地址。SID在实质上能够表示拓扑、指令或服务。

当前工作的SID:为段列表中当前待处理的段,也可以称为活跃SID(active SID)、活跃段(active segment)、当前待处理的SID、当前工作的SID。当SR节点收到报文时,会对活跃段进行处理。在SR MPLS中,活跃段为标签栈的最外层标签。在SRv6中,活跃段为携带有SRH的IPv6报文的目的地址。此外,活跃段可以通过SL字段的取值指明。例如,如果段列表包括5个SID,分别是SID0、SID1、SID2、SID3以及SID4,而SL取值为2,则表明段列表中未被处理的SID有2个,分别是SID0以及SID1,段列表中当前要被处理的SID是SID2,段列表中已被处理的SID有2个,分别是SID3以及SID4。

SID可以包括多种类型。在SR MPLS中,SID可以包括节点SID(Node SID)、前缀SID(Prefix SID)、邻接SID(Adjacency SID)。Prefix SID可以是源端发布的SRGB范围内的偏移值,接收端会根据自己的SRGB计算实际标签值用于生成MPLS转发表项。在SRv6中,SID包括End SID、End.X SID、End.DT4 SID、End.OTP SID等等类型。

分段操作(Segment Actions):可以包括插入(PUSH)、下一个(NEXT)以及继续(CONTINUE)等。PUSH是指在Segment List的顶部插入一个segment。在SR MPLS中SegmentList的顶部是指标签栈的最外层标签。在SRv6中Segment List的顶部是指SRH头中的第一个IPv6地址。NEXT是指当前的活跃段(active segment)处理完时,下一个段(the nextsegment)变为active segment。CONTINUE:当前的active segment还没有处理完,还继续保持active状态。在SR MPLS中,CONTINUE操作相当于交换(SWAP)操作。在SRv6中,CONTINUE操作为IPv6报文依据IPv6目的地址转发的操作。

SR技术包括多协议标签交换分段路由(Segment Routing Multi-Protocol forLabel Switching,SR MPLS)技术以及SRv6技术。以下,对SRv6技术具体进行介绍。

SRv6技术是指将SR技术应用在IPv6网络中。SRv6的SID使用IPv6地址(128bits)编码,并封装在SRv6扩展头(SRH)中。在转发报文时,支持SRv6的节点会按照报文中的报文头的目的地址(Destination Address,DA),查询本地SID表(local SID table),当报文的报文头的目的地址与本地SID表中的任一SID匹配时,确认目的地址命中了本地SID表,则基于该SID对应的拓扑、指令或服务,执行相应的操作;如果报文的目的地址与本地SID表中的每个SID均不匹配,则根据目的地址查询IPv6的路由转发表,根据目的地址在路由转发表中命中的路由转发表转发报文。

本地SID表(local SID table,也称local SID表)为使能SRv6的节点维护的表。本地SID表包含本节点生成的SRv6 SID。根据本地SID表可以生成SRv6转发表FIB。本地SID表的功能主要有三个。第一,定义本地生成的SID,例如End.X SID。第二,指定绑定到这些SID的指令。第三,存储和这些指令相关的转发信息,例如出接口和下一跳等。在一些实施例中,输入命令display segment-routing ipv6 local-sid后,可以查看设备上配置的SRv6的local SID表。其中,该命令可以携带参数end,以指定查看SRv6 End的local SID表。该命令可以携带参数End.X,以指定查看SRv6 End.X的local SID表。该命令可以携带参数end-dt4,以指定查看SRv6 end-dt4的local SID表。

SRv6通过向IPv6报文增加一个SRH,使用SRH来记录Segment相关信息,通过这样增加扩展头的方式,与原有IPv6转发平面平滑融合。参见图2,图2是本申请实施例提供的一种SRv6报文的示意图。SRv6报文可以包括IPv6头、SRH及载荷。以下通过(1)至(3),对SRv6报文的每个部分进行介绍:

(1)SRv6报文中的IPv6头。

SRv6报文中的IPv6头可以包括源地址(source address,SA)以及目的地址(destination address,DA)。在普通IPv6报文里,IPv6 DA是固定不变的。在SRv6中,在SRv6中,IPv6DA标识当前报文的下一个节点,在SR隧道中,SR节点可以对该目的地址不断进行更新,来完成逐跳转发。IPv6头中的目的地址携带的SID可以称为active SID。

(2)SRv6报文中的SRH。

SRH为一种IPv6扩展头。SRH用于基于IPv6转发平面实现SRv6。参见图3,图3是本申请实施例提供的一种SRH的示意图。SRH可以包括以下部分:

(2.1)段列表

段列表可以包括一个或多个SID,每个SID可以是IPv6地址的形式,因此段列表也可以理解为一个显式的IPv6地址栈。段列表可以抽象为以下格式:

SRH(SL=n)

其中,为Rv6报文的段列表,类似于SR MPLS中的MPLS标签栈信息,在入节点生成。Segment List[0]是SRv6路径上第一个需要处理的Segment List,Segment List[1]是第二个,Segment List[2]是第三个,...,Segment List[n]是第n+1个。其中,n为正整数或0。

需要说明的一点是,在表达IPv6报文里的SRH时,可以采用逆序的形式表达,即表达为(Segment List[2],Segment List[1],Segment List[0])这种形式。

在SRv6中,每经过一个SRv6节点,SL字段的取值减1,IPv6 DA信息变换一次。SL字段和Segments List字段共同决定IPv6 DA信息。

如果SL值是n(n-0),则IPv6 DA取值就是Segments List[0]的值。

如果SL值是n-1,则IPv6 DA取值就是Segments List[1]的值。

如果SL值是n-2,则IPv6 DA取值就是Segments List[2]的值。

依次类推,如果SL值是0(n-n=0),则IPv6 DA取值就是Segments List[n]的值。

(2.2)SL。

SL可以指明段列表中的活跃SID。在SR隧道中,SR节点以通过执行偏移地址栈的操作来更新活跃SID。用于指示达到目前节点还应当访问的分段端节点的数量(SegmentLeft,SL)的字段,该字段还可以称为剩余节点字段。例如,如果段列表包括5个SID,分别是SID0、SID1、SID2、SID3以及SID4,而SL取值为2,则表明段列表中未被处理的SID有2个,分别是SID0以及SID1,段列表中当前要被处理的SID是SID2,段列表中已被处理的SID有2个,分别是SID3以及SID4。

(2.3)一个或多个TLV

TLV是一种编码格式,TLV包括类型(type)、长度(length)和值(value)。SRH中可以包括一个TLV,也可以包括多个TLV。SRH中的不同TLV可以具有并列关系,也可以具有嵌套关系。

此外,如图3所示,SRH还可以包括以下字段:

(2.4)下一个报文头类型(next header):SRv6报文在扩展头之后还可以包括一个或多个扩展头或一个或多个高层头,next header用于指明报文中扩展头之后的扩展头或高层头的类型。next header的长度可以为1字节。

(2.5)扩展头的长度(英文:header Extended Length,简称:Hdr Ext Len):用于指明扩展头的长度。Hdr Ext Len指示的长度可以不包括扩展头的前8字节。

(2.6)用于指示路由类型(Routing Type)的字段。

(2.7)用于指示最后一个元素的索引(Last Entry)的字段。

(2.8)用于指示数据包的一些标识(Flags)的字段。

(2.9)用于指示同组数据包(Tag)的字段。

(3)SRv6报文中的载荷。

SRv6报文中的载荷可以是原始报文。该原始报文可以是IPv4报文,也可以是IPv6报文,也可以是以太网(英文:Ethernet)帧。

以上介绍了SRv6报文的结构,以下对SRv6 SID进行介绍。

SRv6 SID可以包括128个比特。SRv6 SID可以是16进制的数据形式。SRv6 SID的格式可以为X:X:X:X:X:X:X:X。请参见图4,图4为本申请实施例提供的一种SRv6 SID的示意图。SID可以包括定位信息(locator)以及功能信息(function),SID的格式为locator:function。可选地,SID还可以包括参数信息(Arguments),则SID的格式为locator:function:Arguments。

locator占据SID的高比特位。locator字段对应ipv6-prefix ipv6-address参数,长度由prefix-length参数决定。locator本身是一个IPv6网段,该网段下的所有IPv6地址都可以做为SRv6 SID分配。节点配置locator之后,系统会生成一条locator网段路由,通过locator网段路由就可以定位到本节点,同时本节点发布的所有SID也都可以通过该条locator网段路由到达。SRv6的locator可通过SRv6 locator TLV发布出去,其他SRv6能力的IS-IS设备接收到TLV以后,下发对应的locator到本机转发表中,没有SRv6能力的则不下发到转发表。

function占据SID的低比特位。function字段也称为操作码(Operate Code,opcode),可以通过IGP协议动态分配,也可以通过opcode命令静态配置。SRv6可以通过function定义每个Segment对应的动作。

Arguments在SRv6 SID里是可选的,由命令配置决定。

SRv6 SID生成以后,一方面会加入本机的local SID表,另一方面也可以通过路由协议对外发布。实际转发时,SRv6 SID里的locator部分用来帮助网络里的其他节点进行路由寻址,找到SRv6 SID的生成节点,并将SRv6报文转发到该节点,而function部分用于指示SRv6 SID的生成节点进行相应的功能操作。

以上介绍了SRv6 SID。SRv6 SID可以包括End SID、End.X SID、End.DT4 SID、End.OTP SID等等类型。以下结合SRv6 SID的具体类型,对基于SRv6 SID的转发流程进行介绍:

End SID中的End表示endpoint。End SID即为Endpoint SID,End SID用于标识网络中的某个目的地址前缀(Prefix)。SRv6中的End SID类似于SR MPLS中的Prefix SID。SRv6End SID可通过SRv6 End SID sub-TLV发布。SRv6 End SID可以基于IGP协议扩散到其他网元。SRv6 End SID sub-TLV是一种子TLV,用于发布具有Endpoint功能的SRv6 EndSID。例如,请参见图5,图5是本申请实施例提供的一种End SID的示意图。节点A的End SID可以为A::。节点B的End SID可以为B::。节点C的End SID可以为C::

基于End SID的转发操作可以包括以下步骤:

步骤一、SR节点接收报文。

步骤二、SR节点根据报文的IPv6头中的目的地址,查询local SID表。

步骤三、SR节点根据local SID表,判断活跃SID的类型(FuncType)为End类型。

步骤四、SR节点继续查询IPv6 FIB表。

步骤五、根据IPv6路由转发表中查询到的出接口和下一跳,转发报文。

例如,参见下表1,表1为本地SID表的示意。如果报文的IPv6 DA为10:1::1:0/128,SR节点接收到SRv6报文时,会根据SRv6报文的IPv6 DA,查询表1,判断10:1::1:0/128的FuncType为End,则根据10:1::1:0/128继续查询IPv6的路由转发表,根据10:1::1:0/128在IPv6的路由转发表命中的出接口和下一跳,转发报文。

表1

其中,表1的表头My Local-SID End Forwarding Table表示SRv6 End的本地SID表。FuncType表示function类型。Flavor表示特性,例如可以是SRH倒数第二段弹出(penultimate segment POP of the SRH,简称PSP)。locator ID表示为locator分配的标识符(Identity,ID)

请参见图6,图6为本申请实施例提供的一种基于End SID的转发流程示意图,该转发流程包括:报文在节点A被压入SRH,该SRH中的路径信息是,报文的IPv6头中的目的地址是B::。每当报文经过一个中间节点,例如节点B和节点D,中间节点会根据报文的IPv6 DA查询local SID表,中间节点判断是End类型,则中间节点会继续查询IPv6 FIB表,根据IPv6 FIB表查到的出接口下一跳转发,同时对SL减1,将IPv6 DA变换一次。当报文到节点F时,节点F根据报文中IPv6头的目的地址查询local SID表,判断是End类型,然后继续查询IPv6 FIB表,根据IPv6 FIB表查到的出接口转发。同时SL减为0,IPv6 DA变为Z::,此时路径信息已无实际价值,因此节点F利用PSP特性,将SRH去除,然后把去除了SRH的报文转发到节点Z。

以上介绍了End SID以及基于End SID在SR隧道中转发报文的流程。以下对End.XSID以及基于End.X SID的转发流程进行介绍。

End.X SID中的X表示crossing。End.X SID表示三层交叉连接的Endpoint SID。SR节点的每个End.X SID用于标识该SR节点直连的一条IP层链路。SRv6中的End.X SID类似于SR MPLS中的Adjacency SID。SRv6 End.X SID可以基于IGP协议扩散到其他网元。例如,请参见图7,图7是本申请实施例提供的一种End.X SID的示意图。节点A的End SID可以为A::。此外,节点A包括3个End.X SID。节点A上直连的链路1对应的End.X SID为A::1,节点A上直连的链路2对应的End.X SID为A::2,节点A上直连的链路3对应的End.X SID为A::3。

基于End X SID的转发操作可以包括以下步骤:

步骤一、SR节点接收到报文。

步骤二、SR节点根据报文的IPv6头中的目的地址,查询local SID表。

步骤三、SR节点根据local SID表,判断活跃SID为End.X SID。

步骤四、SR节点直接根据local SID表中End X SID绑定的出接口和下一跳转发报文。

例如,参见下表2,表2为本地SID表的示意。如果SRv6报文的IPv6 DA为222::4:101:0:1/128,SR节点接收到SRv6报文时,会根据IPv6 DA查询表2,判断222::4:101:0:1/128的FuncType为End.X,并确定222::4:101:0:1/128在表2中命中的出接口为GE2/0/0,222::4:101:0:1/128在表2中命中的下一跳为FE80::3A00:10FF:FE03:1,则SR节点根据GE2/0/0和FE80::3A00:10FF:FE03:1转发报文。

表2

其中,表2的表头My Local-SID End.X Forwarding Table表示SRv6 End.X的本地SID表。FuncType表示function类型。Flavor表示特性,例如可以是SRH倒数第二段弹出(penultimate segment POP of the SRH,简称PSP)。NextHop表示下一跳地址。Interface表示出接口。Exit Index表示出接口索引。

请参见图8,图8为本申请实施例提供的一种基于End.X SID的转发流程示意图,该转发流程包括:报文在头节点A压入SRH,SRH中的路径信息是,报文的IPv6头中的目的地址是B::1。当报文到达中间节点B时,中间节点B根据IPv6 DA查询local SID表,判断是End.X类型,根据local SID表中End.X SID对应的下一跳和出接口进行转发,同时SL减1,IPv6 DA变换为F::1。当报文到达节点D时,节点D根据IPv6 DA信息F::1查询localSID表,查询不到匹配的SID,则继续使用F::1查询匹配IPv6 FIB表,然后根据IPv6FIB表的转发信息,将此报文转发到F。到达尾节点F时,尾节点F根据IPv6 DA查询local SID表,判断是End.X类型,所以尾节点F直接根据local SID表中End.X SID对应的下一跳和出接口进行转发,同时SL减为0,IPv6 DA变换为Z::,此时携带路径信息的SRH已无实际价值,因此尾节点F利用PSP特性将SRH去除,然后把去除了SRH的报文转发到Z节点,此时,报文流出SR隧道。

在SRv6技术中,两个或两个以上的SR节点可以通过发布anycast SID形成任播组。以下,对任播以及anycast SID进行介绍。

任播(Anycast)又称选播、泛播或任意播,为IPv6的一种通信方式,是指通过同一个地址来标识一组提供相同或相应服务的节点。

anycast SID用以标识一组SR节点。这些SR节点发布anycast SID,且每个SR节点发布的anycast SID相同。这些SR节点可以称为一个任播组(Anycast Group)。同一任播组的每个设备上可以配置相同的locator,以保证当其中一个节点故障时,能通过anycast快速重路由(Fast Re-Route,FRR)方式快速切换到另一个节点。当根据anycast SID进行转发时,可以从到达任播组内每个SR节点的路径中,选择最短路径,按照最短路径转发。

以上介绍了SRv6技术,以下对SRV6业务链技术进行介绍:

SRV6业务链可以利用SRV6的调优能力和SDN全局网络管理能力,通过控制器全局编排SRV6 SID路径,以下,请参见图9,对SRV6业务链中各个网元的功能进行补充说明:

SC可以是SRv6隧道的头节点,SC用于根据控制器下发的SR标签栈,完成报文封装。原始报文在SC处可以被压入SRH,该SRH中的段列表指明了报文在业务链中的转发路径。控制器可以是网络功能虚拟化(英文:Network function Virtualization,简称:NFV)中的管理节点,比如网络功能虚拟化管理器(英文:Network functions VirtualisationManager,简称:VNFM)等。该控制器可以是软件定义网络(英文:Software DefinedNetwork,简称:SDN)中的SDN控制器(英文:SDN controller)。该SR标签栈可以是段列表。

对于不支持SR的SF网元而言,接入该SF网元的SFF(Proxy)可以为其代理处理SRH。

具体而言,SFF接收到SRv6报文后,可以根据标签栈中的SID,获取出接口和对应的行为(behavior),若确定该行为弹出标签栈,则将报文的SRH剥离,例如执行SR中的弹出(pop)操作,将SRH从报文中弹出,将不包含SRH的报文发送给SF;另外,SFF可以在保存该业务链的cache信息,在SF报文返回时,重新完成业务链的SR报文封装。当SF网元向Proxy返回报文后,Proxy可以根据入接口,从缓存(cache)中查询到SRH,使用SRH完成报文的SR封装。

SF网元:基于原始报文进行业务处理,得到处理后的报文。SF网元可以查询路由,将报文转发至Proxy。或者,SF网元可以通过默认的出接口,将报文发送至Proxy。另外,如果SF网元双归接入到两台proxy,可以基于IGP路由形成负载分担。

SRV6静态业务链:是指SFF通过静态配置得到cache list的方式。

SRV6动态业务链:是指SFF根据流量动态学习cache list的方式。

时下,业务链中如何进行故障保护已成为业务链技术的关键。

请参见图10,业务链的故障场景具体可以包括多种:

场景1、SFF发生故障

例如,参见图10中的①,SFF1可以发生故障。

场景2、SFF与SF网元之间的链路发生故障

例如,参见图10中的②,SFF1去往SF1的链路可以发生故障。

场景3、VM发生故障

例如,参见图10中的③,SF1所在的VM1可以发生故障。

场景4、SF网元发生故障

例如,参见图10中的④,SF1可以发生故障。

面临上述场景,本实施例提供了SRV6业务链场景下的故障保护方案,可以在多种故障场景下进行有效保护。

具体而言,本申请实施例定义了很多新的SID,包括而不限于是从属SID、备份SID、引流SID等等,可以利用这些新的SID,在业务链故障场景下实现流量的正常转发。在下述方法实施例中,以从属SID称为secondary SID,备份SID称为backup SID,引流SID称为bypassSID为例进行说明。另外,将代理SID称为proxy SID。

应理解,这些SID的命名仅是示例,这些SID也可以具有其他的称谓。例如,这些SID在不同场景下可能有不同名称,如不同厂商采用不同名称,或不同标准采用不同名称,SID的命名并不用以限制本申请的保护范围。

此外,本申请实施例提供的SID可以在多个节点上配置。不同节点上配置的SID的function可以相同,不同节点上配置的SID的function也可以不同。在一些可能的实施例中,可以在业务链中具有任播关系的不同节点上,配置相同的SID,从而进行负载分担。为了区分描述,采用“第一”“第二”等字样,对不同节点上配置的SID进行区分。比如,将第一SFF上配置的secondary SID称为第一secondary SID,将第二SFF上配置的secondary SID称为第二secondary SID。应理解,“第一”、“第二”等字样之间不具有逻辑或时序上的依赖关系,也不对SID的数量和SID的工作顺序进行限定。例如,对于分别叫做第一SID和第二SID的两个SID而言,第一SID并不一定是先工作的SID,第二SID并不一定是后工作的SID。第一SID和第二SID的工作顺序,可以依据这2个SID在SRH中段列表的排列顺序确定。

此外,本申请实施例提供的SID为SR技术中用于标识分段的SID。例如,本申请实施例提供的SID可以而不限于是SRv6 SID,本申请实施例提供的SID的格式可以如图4所示。应理解,下述实施例描述的SID可以实现上文描述的SID所具有的功能。

此外,本申请实施例提供的携带SID的报文可以为SR网络中传输的SR报文。例如,本申请实施例提供的报文可以而不限于是SRv6报文。示意性地,本申请实施例提供的报文的格式可以如图2所示。应理解,下述实施例描述的报文可以实现上文描述的SRv6报文所具有的功能。

此外,本申请实施例提供的SID可以携带在报文的IPv6头的目的地址以及SRH中。示意性地,本申请实施例提供的报文中SRH的格式可以如图3所示。IPv6头、SRH的细节可以参见上文的介绍。

此外,本申请实施例提供的携带SID的报文可以为SR网络中传输的SR报文。例如,本申请实施例提供的报文可以而不限于是SRv6报文。示意性地,本申请实施例提供的报文的格式可以如图2所示,报文的细节可以参见上文对SRv6报文的介绍。其中,本申请实施例提供的报文可以包括IPv6头、SRH以及载荷,通过IPv6头的目的地址以及SRH携带SID。其中,SRH的格式可以如图3所示。IPv6头、SRH的细节可以参见上文的介绍。

此外,通过SID转发报文的方法的基本原理可以参见图6、图8以及上文相关的介绍。在下述方法实施例中,将侧重描述与上文的区别之处,而与上文同理的步骤还请参见图6、图8以及上文相关的介绍,为了描述简洁,在下述方法实施例中将不做赘述。

此外,本申请实施例涉及的各个节点(例如SFF、SF网元、SC等)可以是业务链(SFC)中的节点,各个节点的功能以及物理实体可以参见上文相关的介绍,为了描述简洁,在下述方法实施例中将不做赘述。

本申请实施例可以应用在多种业务链的故障保护场景,包括而不限于:SFF与SF网元之间的链路故障场景下进行保护、双链路故障场景下防止环路、SF网元故障下进行保护。

以下,首先介绍SFF与SF网元之间的链路故障场景下进行保护的方法实施例。在该方法实施例中,以第一SFF与第一SF网元之间的链路发生故障为例进行说明。

参见图11,该方法可以包括以下步骤:

步骤1101、业务链中的第一SFF接收第一报文,第一报文的报文头的目的地址字段包括业务链中第一SF网元对应的proxy SID。

第一SFF可以是业务链中使能了SRv6的一个SFF。例如,请参见图12,图12是本申请实施例提供的一种业务链中SFF至SF之间的链路故障场景下转发报文的示意图,第一SFF可以是图12中的SFF1。

第一SF网元为业务链中第一SFF接入的SF网元。例如,请参见图12,第一SF网元可以是图12中SFF1接入的SF1。

第一报文可以包括IPv6头、SRH以及载荷。第一报文中的载荷可以是待通过SF网元处理的原始报文。第一报文中的IPv6头包括DA字段,该DA字段的取值为第一SF网元对应的proxy SID。第一报文中的SRH包括段列表以及SL。该段列表包括第一SF网元对应的proxySID以及其他SID。SL的取值可以指明段列表中当前工作的SID为第一SF网元对应的proxySID。

proxy SID为一种代理功能的SID。第一SF网元对应的proxy SID用于指示为第一SF网元进行代理操作。proxy SID为SRv6 SID,具体可以是End.X SID。

第一报文的目的地址字段包括的proxy SID可以是第一SFF的SID。可以预先在第一SFF上配置proxy SID。该proxy SID可以预先存储在第一SFF的本地SID表中。第一SFF可以预先发布该proxy SID。其中,proxy SID的locator为第一SFF上配置的locator。proxySID的locator用于定位到第一SFF。proxy SID的function用于指示为第一SF网元进行代理操作。在第一SFF上的本地SID表中,proxy SID绑定的下一跳可以为第一SF网元,proxy SID绑定的出接口可以用于与第一SF网元建立链路。

此外,在一些实施例中,SF可以双归接入第一SFF和第二SFF,则第二SFF的本地SID表中也包括该proxy SID,以便基于任播关系形成负载分担。

例如,请参见图12和图13,SFF1上预先配置了sid2,SFF2上也预先配置了sid2。SFF1上的sid2为SF1对应的proxy SID,SFF2上的sid2也为SF1对应的proxy SID。SFF1的sid2和SFF2的sid2形成了anycast SID的关系。

第一报文可以来自于SC。SC可以是SR隧道的头节点。SC可以向原始报文压入SRH,得到携带SRH的第一报文,发送第一报文。第一报文可以通过proxy SID的locator,路由转发至第一SFF,则第一SFF会接收到第一报文。例如,请参见图12,流量从SC进入,SC发送报文,报文根据SF1 proxy SID引流至SFF1,SFF1接收到了报文。SFF 1的入接口收到的报文的目的地址字段包括SF1 proxy SID。

步骤1102、若第一SFF与第一SF网元之间的链路发生故障,第一SFF更新第一报文的目的地址字段,得到第二报文,第二报文的目的地址字段包括第一secondary SID。

第二报文为第一SFF根据第一secondary SID对第一报文进行处理后得到的报文。第二报文可以包括IPv6头、SRH以及载荷。第二报文中的IPv6头包括DA字段,该DA字段的取值为第一secondary SID。第二报文中的SRH包括段列表以及SL。该段列表包括第一secondary SID以及其他SID。可选地,该段列表可以包括第一SF网元对应的proxy SID。SL的取值可以指明段列表中当前工作的SID为第一secondary SID。第二报文中的载荷可以是待通过SF网元处理的原始报文。第二报文可以包括第一报文的载荷,例如,第二报文中的载荷可以和第一报文中的载荷相同。

secondary SID可以和proxy SID形成主备备份的保护关系。具体而言,若当前工作的SID为proxy SID,而proxy SID对应的出接口发生链路故障时,SFF可以通过向报文插入secondary SID,将报文的目的地址从proxy SID更新为secondary SID,从而将报文从proxy SID对应的隧道切换至secondary SID对应的隧道,实现将报文引流至同一对保护组中的其他SFF的目的。此外,在一些实施例中,可以规划secondary SID的locator和proxySID的locator不重复。

第一secondary SID可以是第一SFF上配置的secondary SID。第一secondary SID可以为第二SFF本地的SID。第一secondary SID可以预先存储在第二SFF的本地SID表中。第一secondary SID的locator用于路由至第二SFF。第一secondary SID的locator可以为第二SFF预先发布的locator。

例如,请参见图12和图13,SFF1中包含SFF2 secondary SID。该SFF2 secondarySID为SFF2本地的SID,该SFF2 secondary SID的locator可以定位至SFF2。通过在SFF1上配置SFF2 secondary SID,当SFF1去往SF1的链路故障时,SFF1在报文中插入SFF2 secondarySID,刷新报文头的目的地址字段,通过SFF2 secondary SID对应的locator路由,将报文引流至SFF2。如此,SFF1将流量切换至secondary SID隧道。

第一SFF通过执行更新目的地址字段的操作,能够将报文头的目的地址字段从proxy SID更新为第一secondary SID,使得第二报文中当前工作的SID为第一secondarySID,以便第二SFF接收到第二报文时,使用目的地址查询本地SID表后,会执行第一secondary SID对应的操作。应理解,第一报文可以类似于IP in IP(移动IP数据封装和隧道)报文的形式,包含外层的IPv6头以及内层的原始报文。这里所说的更新目的地址字段,可以是指更新外层的IPv6头的目的地址字段,而非更新内层的原始报文的目的地址字段。比如说,如果原始报文本身就是一个IPv6报文,则第一报文的外层为IPv6头,内层为IPv6报文,那么在本步骤中,第一SFF可以更新外层的IPv6头中的DA字段。

在一些实施例中,第一secondary SID的类型可以为端点(End)类型。例如,在第二SFF的本地SID表中,第一secondary SID的Func Type的取值可以是End。

通过选择End类型的SID作为第一secondary SID,相对于选择End.X类型的SID作为第一secondary SID的方式而言,可以避免配置End.X SID时指定下一跳和出接口的操作,从而避免由于End.X SID由于兼具引流和指定出接口的功能,替代了原有的proxy SID的角色,导致要在第一SFF上配置大量的secondary SID,而不是全局唯一的secondary SID的情况。另外,也由于第一secondary SID为End类型的SID,避免后续对backup SID的规划造成较大约束。

第二SFF为保护组中第一SFF之外的其他SFF。该保护组包括第一SF网元接入的多个SFF。例如,保护组中可以包括2个SFF节点,这2个SFF节点是SF双归接入的两个节点。或者,保护组中可以包括3个或3个以上的SFF节点,这些SFF节点是SF多归接入的节点。例如,请参见图12,SF1双归接入至SFF1和SFF2,若第一SFF为SFF1,第二SFF可以为SFF2。

保护组可以基于冗余保护技术实现。在一些实施例中,保护组为任播组,任播组中不同SFF发布的proxy SID为任播SID。在SF侧,保护组中的SFF可以承担等价网关的角色,在网络侧,保护组中的SFF可以发布相同的proxy SID。保护组中的每个SFF可以理解为负载分担的等价节点。在物理拓扑上,同一保护组中的不同SFF之间可以具有IP路由可达的直连链路,作为旁路保护。第二SFF可以是第一SFF的旁路SFF。例如,请参见图12,若第一SFF为SFF1,SFF1和SFF2通过Anycast SID组成了任播关系,则第二SFF为SFF2,第一secondarySID为SFF2本地的End SID。SFF1和SFF2之间可以具有IP路由可达的直连链路,SFF2为SFF1的旁路SFF。

在一些实施例中,属于同一个保护组的每个SFF上均可以配置secondary SID。每一个SFF上配置的secondary SID的function可以是相同的。对于同一对SFF而言,一个SFF上配置的secondary SID为另一个SFF本地的End类型SID。例如,请参见图12,SFF1和SFF2形成一对保护组,通过任播SID实现SFF故障保护。SFF1配置的secondary SID是SFF2本地的End类型的SID。SFF1上配置的secondary SID的locator用于路由至SFF2。同理,SFF2上配置的secondary SID的locator用于路由至SFF1,SFF2配置的secondary SID在SFF1上是一个本地的End SID。SFF1配置的secondary SID和SFF2配置的secondary SID的function是相同的,因此,SFF1根据本地的secondary SID执行的动作和SFF2根据本地的secondary SID执行的动作属于对称动作。

此外,第一SFF可以向第一报文的SRH插入第一secondary SID,更新第一报文的SRH中的SL,以使SL指向第一secondary SID,从而指明第一secondary SID为SRH中当前工作的SID。通过执行更新SL的步骤,第一SFF生成的第二报文的SL会大于接收到的第一报文的SL。在SRv6网络中,SRv6报文的SRH中的SL通常用来标识待处理的SID的数量,那么通过修改SL的取值,能够指明第一SFF发出的第二报文相对于第一SFF接收到的第一报文而言,SRH包含了更多的待处理的SID,第一SFF执行了向SRH插入SID的动作。

步骤1103、第一SFF发送第二报文。

由于第二报文的报文头的目的地址字段包括第一secondary SID,而第一secondary SID的locator路由为第二SFF的locator路由,因此第二报文从第一SFF发送出去后,会通过第一secondary SID引流至第二SFF。例如,请参见图12中SFF1框图下侧的加粗黑线,SFF1向流量插入SFF2 secondary SID后,流量通过SFF2 secondary SID路由至SFF2。

步骤1104、业务链中的第二SFF接收第二报文,第二报文的目的地址字段包括第一secondary SID。

步骤1105、第二SFF根据第一secondary SID,对第二报文进行本地转发处理,得到第三报文,第三报文的报文头的目的地址字段包括第一SF网元对应的proxy SID。

第三报文是指根据第一secondary SID对第二报文进行本地转发处理后得到的报文。

第二SFF上配置的第一secondary SID可以理解为一个本地转发标识。第二SFF接收到报文后,可以根据第二报文的报文头的目的地址,查询本地SID表,第二SFF判断第一secondary SID的类型(Func Type)为End,则第二SFF按secondary SID行为,对第二报文进行本地转发处理。

其中,第二SFF可以更新第二报文的报文头的目的地址字段,从而将第二报文的报文头的目的地址字段从第一secondary SID更新为proxy SID,使得当前工作的SID从第一secondary SID更新为proxy SID。此外,第二SFF可以从第二报文的SRH中,弹出第一secondary SID。此外,第二SFF可以更新第二报文的SRH中的SL,以使SL指向第一SF网元对应的proxy SID,从而指明该proxy SID为SRH中当前工作的SID。

步骤1106、第二SFF根据第三报文得到第四报文,第四报文包括第三报文的载荷且不包括段列表。

第二SFF按照secondary SID行为处理报文后,可以继续按照proxy SID行为处理报文,剥离第三报文的SRH,得到第四报文。

步骤1107、第二SFF通过proxy SID对应的出接口,向业务链中的第一SF网元发送第四报文。

proxy SID对应的出接口是指与proxy SID存在绑定关系的去向SF的出接口。通过该出接口发送第四报文后,第四报文会到达第一SF网元。

步骤1108、第一SF网元接收第四报文,对第四报文进行业务功能处理。

由于第一SF网元接收到的报文已经不包含SRH,因此即使第一SF网元为SR-unaware节点,第一SF网元也能够处理报文。

时下,SRv6业务链相关的技术中还没有定义SF网元与SFF之间的链路故障下的保护方案。一旦SF网元与SFF之间的链路发生故障,就会出现业务流量中断。

而本实施例提供的方法,在SRV6静态业务链场景下,当SF网元与接入的一个SFF之间的链路故障时,通过引入secondary SID,将报文的报文头的目的地址字段更新为secondary SID,使得报文通过secondary SID,被引流至该SF网元接入的其他SFF,从而实现SFF与SF网元之间的链路故障保护,避免流量由于单点链路故障导致中断,提升了业务链的可靠性。

以上介绍了SFF与SF网元之间的链路故障场景下进行保护的方法。由上述实施例引申,以下介绍SRv6业务链在双链路故障场景下防止环路的方法。

为便于理解,首先对双链路故障场景下出现环路的情况进行说明。

业务链中可以出现一对leaf节点(叶节点)双点故障的情况,即,一对leaf节点中的每个leaf均发生链路故障。例如,请参见图14和图15,SFF1与SF1之间的链路故障,SFF2与SF1之间的链路也发生故障。在这种场景下,SFF1会向流量插入SFF2 secondary SID。之后,流量通过SFF2 secondary SID引流至SFF2。而SFF2接收到流量时,由于感知到链路故障,向流量插入SFF1 secondary SID。之后,流量通过SFF1 secondary SID引流回到SFF1,造成流量在SFF1和SFF2之间发生环路。其中,leaf节点是叶脊(leaf-spine)拓扑网络中的术语,leaf节点用于充当网络的接入层。leaf节点可以和主机与spine节点(脊节点)连接。spine节点用于充当网络的汇聚层。leaf节点的物理实体可以而不限于是数据中心的交换机。

有鉴于此,本实施例提供了一种业务链发生双链路故障场景下防止环路的方法,以下通过图16实施例进行介绍。在图16实施例中,以第一SFF与第一SF网元之间的链路发生故障、第二SFF与第一SF网元之间的链路也发生故障的场景为例进行说明。应理解,图16实施例侧重描述与图11实施例的区别之处,而与图11实施例同理的步骤还请参见图11实施例,在图16实施例中不做赘述。

参见图16,该方法可以包括以下步骤:

步骤1601、业务链中的第一SFF接收第一报文,第一报文的目的地址字段包括业务链中第一业务功能SF网元对应的代理SID。

步骤1602、若第一SFF与第一SF网元之间的链路发生故障,第一SFF将第一报文中的proxy SID替换为backup SID,第一SFF更新第一报文的报文头的目的地址字段,得到第二报文,第二报文的目的地址字段包括第一secondary SID。

本实施例中,第二报文为第一SFF根据第一secondary SID和backup SID对第一报文进行处理后得到的报文。第二报文中的SRH包括段列表以及SL。该段列表包括第一secondary SID以及backup SID,且该段列表不包括第一报文原有的第一SF网元对应的proxy SID。第二报文中SL的取值可以指明段列表中当前工作的SID为第一secondary SID。

backup SID可以为第一SFF上第一SF网元对应的proxy SID的备份。例如,请参见图17和图18,backup SID可以是SFF1包含的B-sid2。在SFF1中,B-sid2为sid2的备份,该sid2为SF1对应的proxy SID。在SFF1中,sid2绑定的出接口和下一跳用于去往SF1。此外,第一SFF的proxy SID和第二SFF的proxy SID可以是任播SID的关系,则backup SID可以也是第二SFF上第一SF网元对应的proxy SID的备份。例如,请参见图17和图18,backup SID可以也是SFF2包含的B-sid2。在SFF2中,B-sid2为sid2的备份,该sid2为SF1对应的proxy SID。在SFF2中,sid2绑定的出接口和下一跳也用于去往SF1。backup SID可以是End.X类型的SID,或者也可以是End类型的SID,本实施例对此不做限定。

backup SID用于指示第二SFF不使用第二secondary SID转发第二报文。在一种可能的实现中,可以预先在第二SFF上进行配置,若当前工作的SID为backup SID,则执行指向第一SF网元的转发,不进入secondary SID的流程。例如,请参见图17,SFF2中包含“B-sid2”,若报文中当前工作的SID为B-sid2,SFF2可以不使用SFF1secondary SID进入secondary SID流程,而是执行指向SF1的转发。

其中,该第二secondary SID可以是第二SFF上配置的secondary SID。第二secondary SID可以为第一SFF本地的SID。第二secondary SID可以预先存储在第一SFF的本地SID表中。第二secondary SID的locator用于路由至第一SFF。第二secondary SID的locator可以为第一SFF预先发布的locator。例如,请参见图17和图18,SFF2中包含“SFF1secondary SID”。该SFF1secondary SID为SFF1本地的SID,该SFF1 secondary SID的locator可以定位至SFF1。

在一些实施例中,第二secondary SID的类型可以为End类型。例如,在第一SFF的本地SID表中,第二secondary SID的Func Type的取值可以是End。

在一些实施例中,第二SFF上可以建立backup SID与出接口之间的绑定关系,该backup SID对应的出接口用于建立与第一SF网元之间的链路,该backup SID对应的出接口与proxy SID对应的出接口可以不同。

此外,backup SID和proxy SID的function可以相同。另外,第一SFF上配置的backup SID的function和第二SFF上配置的backup SID的function可以相同。

应理解,本实施例对更新目的地址与替换proxy SID这两种步骤的时序不做限定。在一些实施例中,更新目的地址与替换proxy SID可以顺序执行。例如,可以先执行更新目的地址,再执行替换proxy SID;也可以先执行替换proxy SID,再执行更新目的地址。在另一些实施例中,更新目的地址与替换proxy SID也可以并行执行,即,可以同时执行更新目的地址以及替换proxy SID。

步骤1603、第一SFF发送第二报文。

第二报文从第一SFF的出接口发送出去后,第二报文会通过第一secondary SID引流至第二SFF。例如,请参见图17,在SFF1与SF2之间的链路(sid2对应的链路)故障,流量进入SFF2 secondary SID隧道时,SFF1先将流量中原有的SF1 proxy SID替换为backupproxy SID,然后SFF1向流量压入SFF2 secondary SID,以使流量通过SFF2 secondary SID引流至SFF2。

步骤1604、业务链中的第二SFF接收第二报文,第二报文的报文头的目的地址包括第一secondary SID,第一secondary SID为第二SFF本地的SID,例如第一secondary SID为End类型的SID。

步骤1605、第二SFF根据第一secondary SID,对第二报文进行本地转发处理,得到第三报文,第三报文的报文头的目的地址包括backup SID。

第三报文可以是根据第一secondary SID对第二报文进行本地转发处理后得到的报文。

步骤1606、第二SFF根据第三报文得到第四报文,第四报文包括第三报文的载荷且不包括段列表。

本步骤可以包括:第二SFF按照第三报文的报文头的目的地址字段,查询本地SID表,确定第三报文的目的地址与backup SID匹配,则执行backup SID对应的指令,得到第四报文。其中,执行backup SID对应的指令的过程可以称为backup SID行为。第四报文可以是根据backup SID对第三报文进行处理后得到的报文。

例如,请参见图17和图18,SFF2接收到报文后,由于SFF1 secondary SID在外层,backup SID在内层,SFF2会先按照secondary SID行为处理报文,再继续按照backup SID行为处理报文。比如请参见图17中SFF2内部的箭头,该箭头从SFF1 secondary SID指向B-sid2,再从B-sid2指向SF1所在的VM2,含义是先按照SFF1 secondary SID行为,处理报文,再按照B-sid2行为,处理报文后转发给SF1所在的VM2。

此外,由于backup SID和proxy SID的function相同,第二SFF根据backup SID,会行使proxy SID的功能,剥离第三报文的SRH,得到第四报文。

步骤1607、第二SFF通过backup SID对应的出接口,向业务链中的第一SF网元发送第四报文。

步骤1608、第一SF网元接收第四报文,对第四报文进行业务功能处理。

如果第二SFF与第一SF网元之间的链路发生故障,且报文中仍携带proxy SID,而未携带backup SID,则第二SFF会在报文中插入第二secondary SID,刷新报文头的目的地址字段,通过第二secondary SID对应的locator路由,将报文引流回第一SFF,造成环路。而通过将报文中的proxy SID替换为backup SID,由于backup SID指示第二SFF不使用第二secondary SID转发第二报文,因此第二SFF不会进入secondary SID流程,而是仅作指向第一SF网元的转发,由此打破环路。

综上,本实施例提供的方法,在SRV6静态业务链场景下,即使SF网元与双归接入的两个SFF之间的链路均故障,通过引入backup SID,将报文原本包含的proxy SID替换为backup SID,使得报文既可以通过secondary SID,被引流至该SF网元接入的其他SFF,又可以通过backup SID,指示其他SFF作指向SF网元的转发,而不再进入secondary SID流程,因此避免了其他SFF进入secondary SID流程后造成的流量环路。因此,通过backup SID机制,可以防止双点故障引起的流量环路。

以上介绍了SFF与SF网元之间的链路故障场景下进行保护的方法以及防止流量环路的方法。SRV6静态业务链的故障场景除了上述实施例描述的链路故障场景之外,也包括节点故障场景,例如SF整体网元故障。有鉴于此,本实施例提供了一种业务链中SF网元发生故障场景下进行保护的方法,以下通过图19实施例进行介绍。在图19实施例中,以第二SF网元发生故障为例进行说明。应理解,图19实施例侧重描述与上述实施例的区别之处,而与上述实施例同理的步骤还请参见上述实施例,在图19实施例中不做赘述。

参见图19,该方法可以包括以下步骤:

步骤1901、业务链中的第四SFF接收第五报文,第五报文的报文头的目的地址字段包括业务链中的第二SF网元对应的proxy SID。

第四SFF可以是图11实施例中的第一SFF。第四SFF也可以是图11实施例中的第二SFF。第四SFF还可以不是第一SFF或第二SFF,而是业务链中的其他SFF,本实施例对此不做限定。第二SF网元为业务链中第四SFF接入的SF网元。例如,如果第四SFF是图11实施例中的第一SFF或第二SFF,则第二SF网元可以是图11实施例中的第一SF网元。

步骤1902、若第二SF网元处于故障状态,第四SFF更新第五报文的报文头的目的地址字段,得到第六报文,第六报文的目的地址字段包括bypass SID。

第六报文为第四SFF根据bypass SID对第五报文进行处理后得到的报文。第六报文中的IPv6头包括DA字段,该DA字段的取值为bypass SID。第六报文中的SRH包括段列表以及SL。该段列表包括bypass SID以及其他SID。SL的取值可以指明段列表中当前工作的SID为bypass SID。第六报文中的载荷可以是待通过SF网元处理的原始报文。第六报文可以包括第五报文的载荷,例如,第六报文中的载荷可以和第五报文中的载荷相同。

bypass SID用于引流至处于故障状态的SF网元之外的其他SF网元,以实现业务流量的正常转发。在本实施例中,以这样的场景举例说明:第二SF网元故障,而业务链中除了第二SF网元之外还具有第三SF网元,该第三SF网元接入了第五SFF。在这一场景中,bypassSID可以是第五SFF上配置的SID。bypass SID可以为第五SFF本地的SID。bypass SID可以预先存储在第五SFF的本地SID表中。bypass SID的locator用于路由至第五SFF。bypass SID的locator可以为第五SFF预先发布的locator。例如,请参见图20和图21,SFF2中包含“Bypass SID”。该bypass SID为SFF3本地的sid3,该bypass SID的locator可以定位至SFF3。

在一些实施例中,bypass SID的类型可以为End类型。例如,在第五SFF的本地SID表中,bypass SID的Func Type的取值可以是End。

bypass SID具体包括多种实现方式,采用不同方式实现bypass SID时,第四SFF的动作可以具有区别。以下,通过方式一和方式二举例说明:

方式一、bypass SID可以单独定义。

bypass SID可以是第五SFF上单独定义的End类型的SID。在这种方式下,第四SFF可以还向第五报文的SRH中插入bypass SID,并更新第五报文的报文头的目的地址字段,得到第六报文。

方式二、bypass SID为第三SF网元对应的proxy SID。

bypass SID也可以复用待跳转的SF网元对应的proxy SID,即第三SF网元对应的proxy SID。在这种方式下,由于第五报文的SRH中已经包括第三SF网元对应的proxy SID,第三SF网元可以不向第五报文的SRH中插入bypass SID,而是直接通过更新SRH中SL字段的取值,将当前工作的SID偏移至第三SF网元对应的proxy SID,并更新第五报文的报文头的目的地址字段,进行转发即可。

第三SF网元为第二SF网元之外的其他SF网元。第三SF网元可以是指定的第二SF网元故障后要跳转的SF网元。第三SF网元具体包括多种情况,以下通过情况(1)至情况(2)举例说明:

情况(1)第三SF网元为第二SF网元的备份SF网元。

备份SF网元用于充当第三SF网元的备份。备份SF网元为业务网元.备份SF网元提供的业务功能和第三SF网元提供的业务功能可以相同。例如,在一种可能的实现中,备份SF网元和第三SF网元可以是双机热备的关系,第三SF网元为主机,备份SF网元为从机,当第三SF网元故障后,备份SF网元可以代替第三SF网元进行业务功能处理。

情况(2)第三SF网元为业务链中第二SF网元的下一个SF网元。

例如,请参见图12,如果第二SF网元为SF1,第三SF网元可以是SF2。

其中,如果第三SF网元为情况(2),由于相邻的两个SF网元对应的proxy SID在SRH的段列表中可以相邻,那么第三SF网元对应的proxy SID会是第二SF网元对应的proxy SID的下一个proxy SID,那么第三SF网元可以将第五报文中当前工作的SID偏移至下一个proxy SID,比如将SL字段的取值减一,再更新第五报文的报文头的目的地址字段,得到第六报文,转发第六报文。

判定SF网元处于故障状态的方式可以有多种,以下通过方式一和方式二举例说明:

方式一、若proxy SID对应的出接口处于开启(UP)状态,且第二SF网元所在的每个VM均不可达,第四SFF检测到第二SF网元处于故障状态。

例如,请参见图20,SFF2上与sid2绑定的iface-out接口处于物理UP状态,且运行有SF1的VM1和VM2全部不可达,则SFF2可以判定SF1故障。

方式二、若backup SID对应的出接口或proxy SID对应的出接口中的至少一项发生链路故障,第四SFF检测到第二SF网元处于故障状态。

具体地,方式二可以而不限于是下述方式2.1至方式2.2:

方式2.1、第四SFF上配置了proxy SID和backup SID。

在方式2.1中,第四SFF上有两个去向第二SF网元的出接口,一个出接口与proxySID建立了绑定关系,另一个出接口与backup SID建立了绑定关系。若第四SFF检测到backup SID对应的出接口处于关闭(down)状态,proxy SID对应的出接口也处于down状态,第四SFF可以确定与第二SF网元之间的每条链路均已断开,因此第四SFF可以判定第二SF网元处于故障状态。

其中,第四SFF上的backup SID可以用于防止第四SFF和第五SFF之间的流量产生环路。第四SFF上的backup SID可以用于指示第四SFF不使用第三secondary SID转发第五报文。该第三secondary SID为第五SFF本地的SID。该第五SFF可以和第四SFF之间的关系可以为任播关系。第五SFF可以为保护组中第四SFF之外的其他SFF,保护组包括第二SF网元接入的多个SFF。

方式2.2、第四SFF上仅配置了proxy SID,而未配置backup SID。

在方式2.2中,第四SFF上有一个去向第二SF网元的出接口,该出接口与proxy SID建立了绑定关系。若第四SFF检测到proxy SID对应的出接口处于down状态,第四SFF可以确定与第二SF网元之间的链路均已断开,因此第四SFF可以判定第二SF网元处于故障状态。

步骤1903、第四SFF发送第六报文。

第六报文从第四SFF的出接口发送出去后,第六报文会通过bypass SID引流至第五SFF。

步骤1904、业务链中的第五SFF接收第六报文。

步骤1905、第五SFF根据第六报文得到第七报文,第七报文包括第六报文的载荷且不包括段列表。

由于第四SFF将报文头的目的地址字段更新为bypass SID,第五SFF使用目的地址字段查询本地SID表后,会执行bypass SID对应的操作。

根据bypass SID的实现方式的不同,第五SFF的动作可以具有区别。以下,通过方式一和方式二举例说明:

方式一、bypass SID可以单独定义。

方式一下第五SFF的动作可以包括以下步骤一至步骤二:

步骤一、第五SFF根据bypass SID,对第六报文进行本地转发处理,得到第八报文。

其中,第八报文的报文头的目的地址字段包括第三SF网元对应的proxy SID,第八报文可以包括第六报文的载荷。

步骤二、第五SFF根据第八报文得到第七报文。

在方式一下,由于bypass SID在外层,proxy SID在内层,第五SFF接收到第六报文时,可以先根据bypass SID,查询本地SID表,判断bypass SID的类型为End类型,则根据End类型SID动作,查询IPv6路由转发表进行本地转发。之后,第五SFF会按照proxy SID行为继续处理报文并进行转发。

方式二、bypass SID为第三SF网元对应的proxy SID。

在方式二下,第五SFF可以直接按照proxy SID行为处理报文并进行转发。

应理解,在方式一和方式二下,第五SFF均会将SRH先剥掉再发送给第三SF网元,第三SF网元向第五SFF返回报文后,第五SFF会根据cachelist重新封装SRH。

步骤1906、第五SFF通过proxy SID对应的出接口,向第三SF网元发送第七报文。

步骤1907、第三SF网元接收第七报文,对第七报文进行业务功能处理。

本实施例提供的方法,在SRV6静态业务链场景下,当SF网元发生故障时,通过引入bypass SID,将报文的报文头的目的地址字段更新为bypass SID,使得报文通过bypassSID,被引流至其他SF网元,比如原有路径外的备份SF网元或被引流至原有路径内的下一个SF网元,从而通过其他网元进行业务保护,实现业务流量的正常转发,避免流量由于单个节点故障而导致中断,提升了业务链的可靠性。

以上描述了通过bypass SID实现SF网元故障场景进行保护的方法。应理解,上述各个实施例中不同实施例出现的特征可以相互结合,产生其他情况。以下示例性介绍另外两种情况下的方法实施例。

参见图22,业务链的故障保护方法可以包括以下步骤:

步骤2201、业务链中的第一SFF接收第一报文,第一报文的报文头的目的地址包括业务链中第一SF网元对应的proxy SID。

步骤2202、若第一SFF与第一SF网元之间的链路发生故障,第一SFF更新第一报文的目的地址,第一SFF将第一报文中的proxy SID替换为backup SID,得到第二报文,第二报文的报文头的目的地址包括第一secondary SID。

步骤2203、第一SFF发送第二报文。

步骤2204、业务链中的第二SFF接收第二报文,第二报文的报文头的目的地址包括第一secondary SID。

第一secondary SID为第二SFF本地的SID,其中,第一secondary SID可以为End类型的SID;

步骤2205、第二SFF根据第一secondary SID,对第二报文进行本地转发处理,得到第三报文,第三报文的报文头的目的地址包括backup SID。

步骤2206、若backup SID对应的出接口故障,第二SFF更新第三报文的目的地址,得到第八报文,第八报文的报文头的目的地址包括bypass SID。

其中,该backup SID用于指示第二SFF不将第二报文的报文头的目的地址字段更新为第二secondary SID,第二secondary SID为第一SFF本地的SID。其中,第二secondarySID可以为End类型的SID;当报文中携带backup SID时,可以表明第一SFF与第一SF网元之间的链路发生故障,不可使用第二secondary SID进入secondary流程。此时,第二SFF可以判断backup SID对应的出接口是否处于打开(up)状态,若backup SID对应的出接口处于up状态,第二SFF可以通过backup SID对应的出接口向第一SF网元发送报文。若backup SID对应的出接口也处于down状态,第二SFF可以通过执行下述步骤,进入bypass SID的流程。

bypass SID为第三SFF本地的SID。其中,bypass SID可以为End类型的SID。例如,在第三SFF的local SID表中,bypass SID的FuncType的取值可以是End。第三SFF为第四SF网元接入的SFF。该第四SF网元可以包括以下情况(1)至(2):

(1)第四SF网元为第一SF网元的备份SF网元。

(2)第四SF网元为业务链中第一SF网元的下一个SF网元。

步骤2207、第二SFF向第三SFF发送第八报文。

步骤2208、第三SFF接收第八报文,根据第八报文,得到第九报文,通过proxy SID对应的出接口,向第四SF网元发送第九报文,第九报文包括第八报文的载荷且不包括段列表。

步骤2209、第四SF网元接收第九报文,对第九报文进行业务功能处理。

在上述方法实施例中,第二SFF通过bypass SID实现了业务流量的正常转发。在另一些实施例中,如果第二SFF上没有预先配置bypass SID,可以丢弃报文,具体参见下述方法实施例。

参见图23,该方法可以包括以下步骤:

步骤2301、业务链中的第一SFF接收第一报文,第一报文的报文头的目的地址字段包括业务链中第一SF网元对应的代理SID。

步骤2302、若第一SFF与第一SF网元之间的链路发生故障,第一SFF更新第一报文的目的地址字段,第一SFF将第一报文中的代理SID替换为backup SID,得到第二报文,第二报文的报文头的目的地址字段包括第一secondary SID。

步骤2303、第一SFF发送第二报文。

步骤2304、业务链中的第二业务功能转发设备SFF接收第二报文,第二报文的报文头的目的地址字段包括第一secondary SID。

步骤2305、第二SFF根据第一secondary SID,对第二报文进行本地转发处理,得到第三报文,第三报文的报文头的目的地址字段包括backup SID。

backup SID用于指示第二SFF不将第二报文的目的地址字段更新为第二secondary SID,第二secondary SID为第一SFF本地的SID。其中,第二secondary SID可以为End类型的SID。

步骤2306、若backup SID对应的出接口故障,且第二SFF的本地SID表中没有bypass SID,第二SFF丢弃第三报文。

以上介绍了本申请实施例的业务链的故障保护方法,以下介绍本申请实施例的SFF,应理解,该应用于SFF其具有上述方法中SFF的任意功能。

图24是本申请实施例提供的一种SFF的结构示意图,如图24所示,该SFF包括:

接收模块2401,用于执行步骤1101、步骤1601、步骤2201或步骤2301;

更新模块2402,用于执行步骤1102、步骤1602、步骤2202或步骤2302;

发送模块2403,用于执行步骤1103、步骤1603、步骤2203或步骤2303。

可选地,SFF还包括:替换模块,用于将代理SID替换为备份SID。

应理解,图24实施例提供的SFF对应于上述方法实施例中的第一SFF,图24实施例中各模块和上述其他操作和/或功能分别为了实现方法实施例中的第一SFF所实施的各种步骤和方法,具体细节可参见上述方法实施例,为了简洁,在此不再赘述。

应理解,图24实施例提供的SFF在对业务链进行故障保护时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将SFF的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的SFF与上述图11实施例、图16实施例、图22实施例或图23实施例中业务链的故障保护方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图25是本申请实施例提供的一种SFF的结构示意图,如图25所示,该SFF包括:

接收模块2501,用于执行步骤1104、步骤1604、步骤2204或步骤2304;

处理模块2502,用于执行步骤1105和步骤1106,或用于执行步骤1605和步骤1606,或用于执行步骤2205和步骤2206,或用于执行步骤2305;

发送模块2503,用于执行步骤1107、步骤1607或步骤2207。

可选地,SFF还包括:丢弃模块,用于执行步骤2306。

应理解,图25实施例提供的SFF对应于上述方法实施例中的第一SFF,图25实施例中各模块和上述其他操作和/或功能分别为了实现方法实施例中的第二SFF所实施的各种步骤和方法,具体细节可参见上述方法实施例,为了简洁,在此不再赘述。

应理解,图25实施例提供的SFF在对业务链进行故障保护时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将SFF的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的SFF与上述图11实施例、图16实施例、图22实施例或图23实施例中业务链的故障保护方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图26是本申请实施例提供的一种SFF的结构示意图,如图26所示,该SFF包括:

接收模块2601,用于执行步骤1901;

更新模块2602,用于执行步骤1902;

发送模块2603,用于执行步骤1903。

可选地,SFF还包括:检测模块,用于若代理SID对应的出接口处于开启状态,且第二SF网元所在的每个虚拟机均不可达,检测到第二SF网元处于故障状态;或,若备份SID对应的出接口或代理SID对应的出接口中的至少一项发生链路故障,检测到第二SF网元处于故障状态。

应理解,图26实施例提供的SFF对应于上述方法实施例中的第三SFF,图26实施例中各模块和上述其他操作和/或功能分别为了实现方法实施例中的第三SFF所实施的各种步骤和方法,具体细节可参见上述方法实施例,为了简洁,在此不再赘述。

应理解,图26实施例提供的SFF在对业务链进行故障保护时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将SFF的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的SFF与上述图19实施例中业务链的故障保护方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图27是本申请实施例提供的一种SFF的结构示意图,如图27所示,该SFF包括:

接收模块2701,用于执行步骤1904;

处理模块2702,用于执行步骤1905;

发送模块2703,用于执行步骤1907。

可选地,处理模块2702,用于根据bypass SID,对第六报文进行本地转发处理,得到第八报文;根据第八报文得到第七报文。

应理解,图27实施例提供的SFF对应于上述方法实施例中的第四SFF,图27实施例中各模块和上述其他操作和/或功能分别为了实现方法实施例中的第四SFF所实施的各种步骤和方法,具体细节可参见上述方法实施例,为了简洁,在此不再赘述。

应理解,图27实施例提供的SFF在对业务链进行故障保护时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将SFF的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的SFF与上述图19实施例中业务链的故障保护方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

以上介绍了本申请实施例的SFF,以下介绍SFF可能的产品形态。

应理解,但凡具备上述SFF的特征的任何形态的产品,都落入本申请的保护范围。还应理解,以下介绍仅为举例,不限制本申请实施例的SFF的产品形态仅限于此。

本申请实施例提供了一种SFF,该SFF包括处理器,该处理器用于执行指令,使得该SFF执行上述各个方法实施例提供的业务链的故障保护方法。

作为示例,该处理器可以是网络处理器(Network Processor,简称NP)、中央处理器(central processing unit,CPU)、特定应用集成电路(application-specificintegrated circuit,ASIC)或用于控制本申请方案程序执行的集成电路。该处理器可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。该处理器的数量可以是一个,也可以是多个。

在一些可能的实施例中,该SFF还可以包括存储器。

存储器可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasable progra业务链的故障保护able read-only memory,EEPROM)、只读光盘(compactdisc read-only Memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。

存储器和处理器可以分离设置,存储器和处理器也可以集成在一起。

在一些可能的实施例中,该SFF还可以包括收发器。

收发器用于与其它设备或通信网络通信,网络通信的方式可以而不限于是以太网,无线接入网(RAN),无线局域网(wireless local area networks,WLAN)等。

在一些可能的实施例中,上述SFF或SF网元可以实现为网络设备,该网络设备中的网络处理器可以执行上述方法实施例的各个步骤。例如,该网络设备可以是路由器、交换机或防火墙,当然也可以是其他支持报文转发功能的网络设备。

参见图28,图28示出了本申请一个示例性实施例提供的网络设备的结构示意图,该网络设备可以配置为SFF。

网络设备2800包括:主控板2810、接口板2830、交换网板2820和接口板2840。主控板2810用于完成系统管理、设备维护、协议处理等功能。交换网板2820用于完成各接口板(接口板也称为线卡或业务板)之间的数据交换。接口板2830和2840用于提供各种业务接口(例如,以太网接口、POS接口等),并实现数据包的转发。主控板2810、接口板2830和2840,以及交换网板2820之间通过系统总线与系统背板相连实现互通。接口板2830上的中央处理器2831用于对接口板进行控制管理并与主控板2810上的中央处理器2811进行通信。

如果网络设备2800被配置为SFF,物理接口卡2833接收第一报文,发送给网络处理器2832,网络处理器2832更新目的地址字段,得到第二报文,根据出接口等信息,在完成链路层封装后,将第二报文从物理接口卡2833发送出去,使得第二报文传输至第二SFF。

在一个实施例中,网络处理器2832将第一报文中的代理SID替换为备份SID。

如果网络设备2800被配置为第二SFF,物理接口卡2833接收第二报文,发送给网络处理器2832,网络处理器2832根据第一从属SID,对第二报文进行本地转发处理;根据第三报文得到第四报文。根据出接口等信息,在完成链路层封装后,将第四报文从物理接口卡2833发送出去,使得第四报文传输至第一SF网元。

如果网络设备2800被配置为第四SFF,物理接口卡2833接收第五报文,发送给网络处理器2832,网络处理器2832更新目的地址字段,得到第六报文,根据出接口等信息,在完成链路层封装后,将第六报文从物理接口卡2833发送出去,使得第六报文传输至第五SFF。

如果网络设备2800被配置为第五SFF,物理接口卡2833接收第六报文,发送给网络处理器2832,网络处理器2832根据第六报文得到第七报文。根据出接口等信息,在完成链路层封装后,将第七报文从物理接口卡2833发送出去,使得第七报文传输至第三SF网元。

应理解,本实施例中接口板2840上的操作与接口板2830的操作一致,为了简洁,不再赘述。应理解,本实施例的网络设备2800可对应于上述各个方法实施例中的SFF,该网络设备2800中的主控板2810、接口板2830和/或2840可以实现上述各个方法实施例中的SFF所具有的功能和/或所实施的各种步骤,为了简洁,在此不再赘述。

值得说明的是,主控板可能有一块或多块,有多块的时候可以包括主用主控板和备用主控板。接口板可能有一块或多块,网络设备的数据处理能力越强,提供的接口板越多。接口板上的物理接口卡也可以有一块或多块。交换网板可能没有,也可能有一块或多块,有多块的时候可以共同实现负荷分担冗余备份。在集中式转发架构下,网络设备可以不需要交换网板,接口板承担整个系统的业务数据的处理功能。在分布式转发架构下,网络设备可以有至少一块交换网板,通过交换网板实现多块接口板之间的数据交换,提供大容量的数据交换和处理能力。所以,分布式架构的网络设备的数据接入和处理能力要大于集中式架构的设备。可选地,网络设备的形态也可以是只有一块板卡,即没有交换网板,接口板和主控板的功能集成在该一块板卡上,此时接口板上的中央处理器和主控板上的中央处理器在该一块板卡上可以合并为一个中央处理器,执行两者叠加后的功能,这种形态设备的数据交换和处理能力较低(例如,低端交换机或路由器等网络设备)。具体采用哪种架构,取决于具体的组网部署场景,此处不做任何限定。

图29是本申请实施例提供的一种上述图28所示网络设备中的接口板2830的结构示意图,该接口板2830所在的网络设备可以为上述图系统架构实施例中的任一节点,比如可以为SFF或SF网元等。该接口板2830可以包括物理接口卡(physical interface card,PIC)2930,网络处理器(network processor,NP)2910,以及流量管理模块(trafficmanagement)2920。

其中,PIC为物理接口卡(physical interface card),用于实现物理层的对接功能,原始的流量由此进入网络设备的接口板,以及处理后的报文从该PIC卡发出。

网络处理器NP 2910用于实现报文的转发处理。具体而言,上行报文的处理包括:报文入接口的处理,转发表查找(如上述实施例中涉及第一转发表或第二转发表的相关内容);下行报文的处理:转发表查找(如上述实施例中涉及第一转发表或第二转发表的相关内容)等等。

流量管理TM 2920,用于实现QoS、线速转发、大容量缓存,队列管理等功能。具体而言,上行流量管理包括:上行Qos处理(如拥塞管理和队列调度等)以及切片处理;下行流量管理包括:组包处理,多播复制,以及下行Qos处理(如拥塞管理和队列调度等)。

可以理解的是,若网络设备有多个接口板2830的情况下,多个接口板2830之间可以通过交换网2940通信。

需要说明的是,图29仅示出了NP内部的示意性处理流程或模块,具体实现中各模块的处理顺序不限于此,而且实际应用中可以根据需要部署其他模块或者处理流程。本申请实施例对此不做限制。

在一些可能的实施例中,上述SFF可以实现为计算设备,该计算设备中的中央处理器可以执行上述方法实施例的各个步骤。例如,该计算设备可以是主机、服务器或个人计算机等。该计算设备可以由一般性的总线体系结构来实现。

参见图30,图30示出了本申请一个示例性实施例提供的计算设备的结构示意图。计算设备可以是方法实施例全部或部分描述的内容中涉及的任一设备,比如,SFF或SF网元等。计算设备包括至少一个处理器3001、通信总线3002、存储器3003以及至少一个通信接口3004。

处理器3001可以是一个通用中央处理器(central processing unit,CPU)、网络处理器(NP)、微处理器、或者可以是一个或多个用于实现本申请方案的集成电路,例如,专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(progra业务链的故障保护able logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex progra业务链的故障保护able logic device,CPLD),现场可编程逻辑门阵列(field-progra业务链的故障保护able gate array,FPGA),通用阵列逻辑(genericarray logic,GAL)或其任意组合。

通信总线3002用于在上述组件之间传送信息。通信总线3002可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

存储器3003可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,也可以是随机存取存储器(random access memory,RAM)或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable progra业务链的故障保护able read-only Memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备,或者是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器3003可以是独立存在,并通过通信总线3002与处理器3001相连接。存储器3003也可以和处理器3001集成在一起。

通信接口3004使用任何收发器一类的装置,用于与其它设备或通信网络通信。通信接口3004包括有线通信接口,还可以包括无线通信接口。其中,有线通信接口例如可以为以太网接口。以太网接口可以是光接口,电接口或其组合。无线通信接口可以为无线局域网(wireless local area networks,WLAN)接口,蜂窝网络通信接口或其组合等。

在具体实现中,作为一种实施例,处理器3001可以包括一个或多个CPU,如图30中所示的CPU0和CPU1。

在具体实现中,作为一种实施例,计算设备可以包括多个处理器,如图30中所示的处理器3001和处理器3005。这些处理器中的每一个可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(如计算机程序指令)的处理核。

在具体实现中,作为一种实施例,计算机设备还可以包括输出设备和输入设备。输出设备和处理器3001通信,可以以多种方式来显示信息。例如,输出设备可以是液晶显示器(liquid crystal display,LCD)、发光二级管(light emitting diode,LED)显示设备、阴极射线管(cathode ray tube,CRT)显示设备或投影仪(projector)等。输入设备和处理器3001通信,可以以多种方式接收用户的输入。例如,输入设备可以是鼠标、键盘、触摸屏设备或传感设备等。

在一些实施例中,存储器3003用于存储执行本申请方案的程序代码3010,处理器3001可以执行存储器3003中存储的程序代码3010。也即是,计算设备可以通过处理器3001以及存储器3003中的程序代码3010,来实现方法实施例提供的业务链的故障保护方法。

本申请实施例的计算设备可对应于上述各个方法实施例中的SFF,并且,该计算设备中的处理器3010、收发器3020等可以实现上述各个方法实施例中的SFF所具有的功能和/或所实施的各种步骤和方法。为了简洁,在此不再赘述。

在一些可能的实施例中,上述SFF可以实现为虚拟化设备。

例如,虚拟化设备可以是运行有用于发送报文功能的程序的虚拟机(英文:Virtual Machine,VM),虚拟机部署在硬件设备上(例如,物理服务器)。虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。可以将虚拟机配置为SFF。例如,可以基于通用的物理服务器结合网络功能虚拟化(Networkfunctions Virtualization,NFV)技术来实现SFF。SFF为虚拟主机、虚拟路由器或虚拟交换机。本领域技术人员通过阅读本申请即可结合NFV技术在通用物理服务器上虚拟出具有上述功能的SFF。此处不再赘述。

例如,虚拟化设备可以是容器,容器是一种用于提供隔离的虚拟化环境的实体,例如,容器可以是docker容器。可以将容器配置为SFF。例如,可以通过对应的镜像来创建出SFF,例如可以通过proxy-container(提供代理服务的容器)的镜像,为proxy-container创建2个容器实例,分别是容器实例proxy-container1、容器实例proxy-container2,将容器实例proxy-container1提供为第一SFF,将容器实例proxy-container2提供为第四SFF。采用容器技术实现时,SFF可以利用物理机的内核运行,多个SFF可以共享物理机的操作系统。通过容器技术可以将不同的SFF隔离开来。容器化的SFF可以在虚拟化的环境中运行,例如可以在虚拟机中运行,容器化的SFF可也可以直接在物理机中运行。

例如,虚拟化设备可以是Pod,Pod是Kubernetes(Kubernetes是谷歌开源的一种容器编排引擎,英文简称为K8s)为部署、管理、编排容器化应用的基本单位。Pod可以包括一个或多个容器。同一个Pod中的每个容器通常部署在同一主机上,因此同一个Pod中的每个容器可以通过该主机进行通信,并且可以共享该主机的存储资源和网络资源。可以将Pod配置为SFF。例如,具体地,可以指令容器即服务(英文全称:container as a service,英文简称:CaaS,是一种基于容器的PaaS服务)来创建Pod,将Pod提供为SFF。

当然,SFF还可以是其他虚拟化设备,在此不做一一列举。

在一些可能的实施例中,上述SFF也可以由通用处理器来实现。例如,该通用处理器的形态可以是一种芯片。具体地,实现SFF的通用处理器包括处理电路和与该处理电路内部连接通信的输入接口以及输出接口,该处理电路用于通过输入接口执行上述各个方法实施例中的报文的生成步骤,该处理电路用于通过输入接口执行上述各个方法实施例中的接收步骤,该处理电路用于通过输出接口执行上述各个方法实施例中的发送步骤。可选地,该通用处理器还可以包括存储介质,该处理电路用于通过存储介质执行上述各个方法实施例中的存储步骤。存储介质可以存储处理电路执行的指令,该处理电路用于执行存储介质存储的指令以执行上述各个方法实施例。

作为一种可能的产品形态,本申请实施例中的SFF,还可以使用下述来实现:一个或多个现场可编程门阵列(英文全称:field-progra业务链的故障保护able gate array,英文简称:FPGA)、可编程逻辑器件(英文全称:progra业务链的故障保护able logicdevice,英文简称:PLD)、控制器、状态机、门逻辑、分立硬件部件、任何其它适合的电路、或者能够执行本申请通篇所描述的各种功能的电路的任意组合。

在一些可能的实施例中,上述SFF还可以使用计算机程序产品实现。具体地,本申请实施例提供了一种计算机程序产品,当该计算机程序产品在第一SFF上运行时,使得第一SFF执行上述方法实施例中的业务链的故障保护方法。本申请实施例还提供了一种计算机程序产品,当该计算机程序产品在第二SFF上运行时,使得第二SFF执行上述方法实施例中的业务链的故障保护方法。本申请实施例提供了一种计算机程序产品,当该计算机程序产品在第四SFF上运行时,使得第四SFF执行上述方法实施例中的业务链的故障保护方法。本申请实施例还提供了一种计算机程序产品,当该计算机程序产品在第五SFF上运行时,使得第五SFF执行上述方法实施例中的业务链的故障保护方法。

应理解,上述各种产品形态的SFF,分别具有上述方法实施例中SFF的任意功能,此处不再赘述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例中描述的各方法步骤和单元,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的步骤及组成。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参见前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。

该作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本申请实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例中方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上描述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机程序指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例中的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机程序指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如软盘、硬盘、磁带)、光介质(例如,数字视频光盘(digitalvideo disc,DVD)、或者半导体介质(例如固态硬盘)等。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上描述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

相关技术
  • 业务链的故障保护方法、装置、设备、系统及存储介质
  • 一种BBU故障掉电保护方法、装置、设备以及存储介质
技术分类

06120113031656