本公开的实施方式涉及计算机,更具体地,本公开的实施方式涉及一种交换机的连接保持方法、装置、存储介质和计算设备。
背景技术:
1、本部分旨在为本公开的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
2、p4交换机是指集成有p4芯片的交换机。p4芯片支持p4编程语言,可自定义数据包的整个处理流程,实现协议无关性的动态配置,从而解耦网络底层硬件与上层网络功能与协议。
3、如图1所示的报文收发网络所示,p4交换机收到路由器转发的报文后可以分发给后端服务器进行处理。考虑到可靠性,p4交换机以及后端服务器通常会部署多台。这样,在任一p4交换机故障时,其承担的所有报文就需要分发给另一个p4交换机。然而,另一个p4交换机在进一步转发报文时,无法按照故障的p4交换机的原有连接将报文转发给原来处理这些报文的后端服务器,例如p4-1故障后,由后端服务器server-1处理的报文会由路由器转发给p4-2,而p4-2再转发报文时,可能会将报文转发到server-2,从而导致p4-1与server-1之间的连接中断。
技术实现思路
1、在本公开实施方式的第一方面中,提供了一种交换机的连接保持方法。应用于与路由器连接的至少两台交换中的任一交换机;所述交换机集成有p4芯片,所述交换机与至少两台后端服务器连接,不同的后端服务器用于处理相连的交换机下发的不同业务实例的报文;其中,所述交换机中存储有所述路由器下发的连接池,所述连接池记录有与各个交换机连接的后端服务器的网口信息;所述方法包括:
2、响应于所述至少两台交换机中的第一交换机故障,由所述路由器将需要发送给所述第一交换机的第一业务实例的第一报文转发给所述至少两台交换机中的任一正常的第二交换机;
3、所述第二交换机接收所述路由器发送的所述第一报文,利用所述第二交换机中存储的连接池,查询所述至少两台后端服务器中处理所述第一业务实例的第一后端服务器的目标网口信息;
4、所述第二交换机基于查询到的所述目标网口信息,将所述第一报文发送至所述目标网口信息对应的第一后端服务器,以使所述第一后端服务器处理所述第一业务实例的第一报文。
5、可选的,所述连接池包括hash组,所述hash组中的各个成员对应各个后端服务器;其中,所述成员具有成员标识和对应的后端服务器的网口信息,所述成员标识包括对后端服务器处理的业务实例的报文五元组进行hash计算得到的hash值;
6、所述查询所述至少两台后端服务器中处理所述第一业务实例的第一后端服务器的目标网口信息,包括:
7、利用计算成员标识相同的hash算法,对所述第二交换机接收到的第一报文的报文五元组进行hash计算得到待处理hash值,并从所述hash组中查询与所述待处理hash值对应的网口信息,将查询到的所述网口信息确定为处理所述第一业务实例的第一后端服务器的目标网口信息。
8、可选的,所述方法包括:
9、响应于与所述至少两台交换机中的第三交换机相连的至少两台后端服务器中的第三后端服务器连接中断,删除所述hash组中的所述第三后端服务器对应的网口信息。
10、可选的,在响应于与所述至少两台交换机中的第三交换机相连的至少两台后端服务器中的第三后端服务器连接中断之后,还包括:
11、所述第三交换机将需要发送给所述第三后端服务器的第二业务实例的第二报文发送给所述至少两台后端服务器中的任一正常的第四后端服务器;
12、所述第三交换机接收所述第四后端服务器基于所述第二报文返回的连接恢复消息,根据所述连接恢复消息中携带的所述第二报文的报文五元组组装连接恢复报文,并通过所述p4芯片提供的分组输出功能将所述连接恢复报文发送给发起所述第二业务实例的第二报文的客户端,以使所述客户端基于所述连接恢复报文携带的报文五元组重新建立所述第三交换机与所述第三后端服务器之间中断的连接。
13、可选的,在所述根据所述连接恢复消息中携带的所述第二报文的报文五元组组装连接恢复报文之前,还包括:
14、对所述连接恢复消息进行去重检查,确定所述连接恢复消息是否为重复消息;
15、响应于去重检查结果为不重复,则执行所述根据所述连接恢复消息中携带的所述第二报文的报文五元组组装连接恢复报文。
16、可选的,所述对所述连接恢复消息进行去重检查,确定所述连接恢复消息是否为重复消息,包括:
17、查询去重队列中未执行的历史连接恢复消息,是否存在与所述连接恢复消息相同的报文五元组;
18、如果不存在,确定所述连接恢复消息的去重检查结果为不重复;
19、如果存在,进一步获取与所述连接恢复消息相同的报文五元组的历史连接恢复消息中,距离当前时刻最近的目标历史连接恢复消息,并计算所述目标历史连接恢复消息与所述消息恢复消息的时间间隔;
20、如果所述时间间隔大于去重间隔,确定所述连接恢复消息的去重检查结果为不重复;如果所述时间间隔小于或等于所述去重间隔,丢弃所述连接恢复消息;
21、所述响应于去重检查结果为不重复,则执行所述根据所述连接恢复消息中携带的所述第二报文的报文五元组组装连接恢复报文:
22、响应于去重检查结果为不重复,等待所述去重队列执行到所述连接恢复消息时,执行所述根据所述连接恢复消息中携带的所述第二报文的报文五元组组装连接恢复报文。
23、可选的,所述根据所述连接恢复消息中携带的所述第二报文的报文五元组组装连接恢复报文,包括:
24、将所述报文五元组中的目的ip填充到连接恢复报文的报文头中的源ip地址,将所述报文五元组中的源ip填充到所述连接恢复报文的报文头中的目的ip地址;
25、将所述报文五元组中的目的端口填充到连接恢复报文的报文头中的源端口,将所述报文五元组中的源端口填充到所述连接恢复报文的报文头中的目的端口。
26、可选的,所述通过所述p4芯片提供的分组输出功能将所述连接恢复报文发送给发起所述第二业务实例的第二报文的客户端,包括:
27、确定触发所述连接恢复消息的所述第二报文的报文类型;
28、如果是请求报文,通过所述p4芯片提供的分组输出功能将所述连接恢复报文发送给发起所述第二业务实例的第二报文的客户端;
29、如果是响应报文,通过所述p4芯片提供的分组输出功能将所述连接恢复报文发送给第三后端服务器,以使所述第三后端服务器关闭与第三交换机的连接,并基于tcp重传机制,生成变为请求报文的第二报文后,通过所述p4芯片提供的分组输出功能将所述连接恢复报文发送给发起所述第二业务实例的第二报文的客户端。
30、可选的,所述方法还包括:
31、响应于所述第三交换机与所述第三后端服务器的连接恢复,将所述第三后端服务器的hash值和网口信息添加回hash组;
32、所述第三交换机接收到第二业务实例的第二报文后,基于一致性hash机制,确定处理所述第二报文的第三后端服务器,并将所述第二报文发送给所述第三后端服务器处理。
33、可选的,所述一致性hash机制包括运行在交换机、且不依赖p4芯片的hash策略管理程序;
34、所述第三交换机运行的hash策略管理程序基于hash算法计算首次接收的报文的报文五元组的hash值,并根据计算出的hash值与所述hash组中该hash值对应的网口信息生成分发策略表项;所述分发策略表项用于指示所述报文五元组的报文下发至所述网口信息对应的后端服务器;
35、将所述分发策略表项存储到p4芯片,以使所述p4芯片在接收到任一报文时,查询存储的分发策略表项,从而将接收到的报文发送给分发策略表项指示的后端服务器。
36、可选的,所述查询存储的分发策略表项,包括:
37、确定接收到的报文的报文类型;
38、如果是请求报文,根据报文五元组中的目的ip和目的端口,查询存储的分发策略表项中与所述目的ip和目的端口对应的后端服务器;
39、如果是响应报文,根据报文五元组中的源ip和源端口,查询存储的分发策略表项中与所述源ip和源端口对应的后端服务器。
40、可选的,针对每个分发策略表项设置有超时时长;
41、所述p4芯片检测存储的每个分发策略表项的空闲时长是否达到所述超时时长,并将达到超时时长的目标分发策略表项上报所述hash策略管理程序,以由所述hash策略管理程序删除所述目标分发策略表项。
42、可选的,所述p4芯片设置有分发策略表项的存储上限;
43、所述将所述分发策略表项存储到p4芯片,包括:
44、响应于所述p4存储的分发策略表项的数量小于所述存储上限,将所述分发策略表项存储到p4芯片。
45、在本公开实施方式的第二方面中,提供了一种交换机的连接保持装置,应用于与路由器连接的至少两台交换中的任一交换机;所述交换机集成有p4芯片,所述交换机与至少两台后端服务器连接,不同的后端服务器用于处理相连的交换机下发的不同业务实例的报文;其中,所述交换机中存储有所述路由器下发的连接池,所述连接池记录有与各个交换机连接的后端服务器的网口信息;所述装置包括:
46、转发单元,响应于所述至少两台交换机中的第一交换机故障,由所述路由器将需要发送给所述第一交换机的第一业务实例的第一报文转发给所述至少两台交换机中的任一正常的第二交换机;
47、查询单元,所述第二交换机接收所述路由器发送的所述第一报文,利用所述第二交换机中存储的连接池,查询所述至少两台后端服务器中处理所述第一业务实例的第一后端服务器的目标网口信息;
48、保持单元,所述第二交换机基于查询到的所述目标网口信息,将所述第一报文发送至所述目标网口信息对应的第一后端服务器,以使所述第一后端服务器处理所述第一业务实例的第一报文。
49、可选的,所述连接池包括hash组,所述hash组中的各个成员对应各个后端服务器;其中,所述成员具有成员标识和对应的后端服务器的网口信息,所述成员标识包括对后端服务器处理的业务实例的报文五元组进行hash计算得到的hash值;
50、所述查询单元在查询所述至少两台后端服务器中处理所述第一业务实例的第一后端服务器的目标网口信息时,进一步包括利用计算成员标识相同的hash算法,对所述第二交换机接收到的第一报文的报文五元组进行hash计算得到待处理hash值,并从所述hash组中查询与所述待处理hash值对应的网口信息,将查询到的所述网口信息确定为处理所述第一业务实例的第一后端服务器的目标网口信息。
51、可选的,所述装置还包括:
52、删除单元,响应于与所述至少两台交换机中的第三交换机相连的至少两台后端服务器中的第三后端服务器连接中断,删除所述hash组中的所述第三后端服务器对应的网口信息。
53、可选的,所述删除单元,还包括所述第三交换机将需要发送给所述第三后端服务器的第二业务实例的第二报文发送给所述至少两台后端服务器中的任一正常的第四后端服务器;
54、在所述删除单元之后,还包括:
55、恢复单元,所述第三交换机接收所述第四后端服务器基于所述第二报文返回的连接恢复消息,根据所述连接恢复消息中携带的所述第二报文的报文五元组组装连接恢复报文,并通过所述p4芯片提供的分组输出功能将所述连接恢复报文发送给发起所述第二业务实例的第二报文的客户端,以使所述客户端基于所述连接恢复报文携带的报文五元组重新建立所述第三交换机与所述第三后端服务器之间中断的连接。
56、可选的,所述恢复单元在根据所述连接恢复消息中携带的所述第二报文的报文五元组组装连接恢复报文之前,还包括:
57、去重子单元,对所述连接恢复消息进行去重检查,确定所述连接恢复消息是否为重复消息;响应于去重检查结果为不重复,则执行所述恢复单元中的根据所述连接恢复消息中携带的所述第二报文的报文五元组组装连接恢复报文。
58、可选的,所述去重子单元在对所述连接恢复消息进行去重检查,确定所述连接恢复消息是否为重复消息时,进一步包括:
59、查询子单元,查询去重队列中未执行的历史连接恢复消息,是否存在与所述连接恢复消息相同的报文五元组;
60、确定子单元,如果不存在,确定所述连接恢复消息的去重检查结果为不重复;如果存在,进一步获取与所述连接恢复消息相同的报文五元组的历史连接恢复消息中,距离当前时刻最近的目标历史连接恢复消息,并计算所述目标历史连接恢复消息与所述消息恢复消息的时间间隔;如果所述时间间隔大于去重间隔,确定所述连接恢复消息的去重检查结果为不重复;如果所述时间间隔小于或等于所述去重间隔,丢弃所述连接恢复消息;
61、所述去重子单元,进一步包括所述响应于去重检查结果为不重复,则执行所述恢复单元中的根据所述连接恢复消息中携带的所述第二报文的报文五元组组装连接恢复报文:响应于去重检查结果为不重复,等待所述去重队列执行到所述连接恢复消息时,执行所述恢复单元中的根据所述连接恢复消息中携带的所述第二报文的报文五元组组装连接恢复报文。
62、可选的,所述恢复单元在根据所述连接恢复消息中携带的所述第二报文的报文五元组组装连接恢复报文时,进一步包括:
63、填充子单元,将所述报文五元组中的目的ip填充到连接恢复报文的报文头中的源ip地址,将所述报文五元组中的源ip填充到所述连接恢复报文的报文头中的目的ip地址;将所述报文五元组中的目的端口填充到连接恢复报文的报文头中的源端口,将所述报文五元组中的源端口填充到所述连接恢复报文的报文头中的目的端口。
64、可选的,所述恢复单元在通过所述p4芯片提供的分组输出功能将所述连接恢复报文发送给发起所述第二业务实例的第二报文的客户端时,进一步包括:
65、分组输出子单元,确定触发所述连接恢复消息的所述第二报文的报文类型;如果是请求报文,通过所述p4芯片提供的分组输出功能将所述连接恢复报文发送给发起所述第二业务实例的第二报文的客户端;如果是响应报文,通过所述p4芯片提供的分组输出功能将所述连接恢复报文发送给第三后端服务器,以使所述第三后端服务器关闭与第三交换机的连接,并基于tcp重传机制,生成变为请求报文的第二报文后,通过所述p4芯片提供的分组输出功能将所述连接恢复报文发送给发起所述第二业务实例的第二报文的客户端。
66、可选的,所述装置还包括:
67、添加单元,响应于所述第三交换机与所述第三后端服务器的连接恢复,将所述第三后端服务器的hash值和网口信息添加回hash组;
68、发送单元,所述第三交换机接收到第二业务实例的第二报文后,基于一致性hash机制,确定处理所述第二报文的第三后端服务器,并将所述第二报文发送给所述第三后端服务器处理。
69、可选的,所述一致性hash机制包括运行在交换机、且不依赖p4芯片的hash策略管理程序;所述装置还包括:
70、策略生成子单元,所述第三交换机运行的hash策略管理程序基于hash算法计算首次接收的报文的报文五元组的hash值,并根据计算出的hash值与所述hash组中该hash值对应的网口信息生成分发策略表项;所述分发策略表项用于指示所述报文五元组的报文下发至所述网口信息对应的后端服务器;将所述分发策略表项存储到p4芯片,以使所述p4芯片在接收到任一报文时,查询存储的分发策略表项,从而将接收到的报文发送给分发策略表项指示的后端服务器;
71、所述发送单元,进一步包括所述第三交换机接收到第二业务实例的第二报文后,由所述第三交换机的p4芯片查询存储的分发策略表项,将所述第二报文发送给所述分发策略表项指示的所述第三后端服务器处理。
72、可选的,所述查询存储的分发策略表项,包括:确定接收到的报文的报文类型;如果是请求报文,根据报文五元组中的目的ip和目的端口,查询存储的分发策略表项中与所述目的ip和目的端口对应的后端服务器;如果是响应报文,根据报文五元组中的源ip和源端口,查询存储的分发策略表项中与所述源ip和源端口对应的后端服务器。
73、可选的,针对每个分发策略表项设置有超时时长;所述装置还包括:
74、超时检测子单元,所述p4芯片检测存储的每个分发策略表项的空闲时长是否达到所述超时时长,并将达到超时时长的目标分发策略表项上报所述hash策略管理程序,以由所述hash策略管理程序删除所述目标分发策略表项。
75、可选的,所述p4芯片设置有分发策略表项的存储上限;
76、所述策略生成子单元在将所述分发策略表项存储到p4芯片时,进一步包括响应于所述p4存储的分发策略表项的数量小于所述存储上限,将所述分发策略表项存储到p4芯片。
77、在本公开实施方式的第三方面中,提供了一种计算机可读存储介质,包括:
78、当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如前任一项所述的交换机的连接保持方法。
79、在本公开实施方式的第四方面中,提供了一种计算设备,包括:
80、处理器;
81、用于存储所述处理器可执行指令的存储器;
82、其中,所述处理器被配置为执行所述可执行指令,以实现如前任一项所述的交换机的连接保持方法。
83、根据本公开实施方式提供的交换机的连接保持方案,通过构建连接池,在任一交换机故障时,另一正常的交换机可以代替故障交换机转发待处理的业务实例的报文,并通过连接池确定原本与故障交换机连接且负责处理该业务示例的报文的后端服务器的目标网口信息,从而将报文正确地转发给该目标网口信息对应的后端服务器。如此,可以避免由于后端服务器选择错误导致连接中断的问题,从而确保了业务连续性。