本申请涉及通信技术领域,尤其涉及一种传输控制协议tcp会话的处理方法及装置。
背景技术:
边界网关协议(bordergatewayprotocol,bgp)用于实现不同自治域(或称“自治系统”)间路由信息的学习和计算的外部网关协议。路由设备之间要通过bgp交互路由信息,需要先建立bgp邻居,相互配置对方为邻居路由设备,配置邻居路由设备一般是通过指定对方的因特网协议(internetprotocol,ip)地址来实现的,之后,交互双方可以使用自身的ip地址与对方的ip地址组成的ip地址对建立传输控制协议(transmissioncontrolprotocol,tcp)会话,路由设备在与邻居路由设备建立tcp会话之后,将相互发送bgp报文,bgp报文主要包括:
打开(open)报文,是在tcp会话建立后发送的第一个消息,用于交互路由设备与邻居路由设备之间的bgp邻居能力信息,如自治系统编号、bgp版本号、保持时间、路由设备的设备标识、路由设备的可用地址族的路由信息等;
保活(keepalive)报文,用于检测tcp会话有效性的消息;
更新(update)报文,用于交互路由设备与邻居路由设备之间的路由更新信息,其中,包括撤销路由和可达路由及相应路由属性;
能力(capability)报文,用于bgp邻居建立成功之后,动态改变路由能力;
通告(notification)报文,用于向邻居路由设备通告检测的错误,如连接中断、协商出错、报文差错。
当路由设备接收到的update报文中存在对于协议规定需要断开会话的错误信息,如缺少下一跳属性的错误时,则向邻居路由设备发送notification报文,并断开当前tcp会话,导致其他可用地址族的相应业务被中断,降低了路由设备间通信的稳定性。
技术实现要素:
本申请实施例提供一种传输控制协议tcp会话的处理方法及装置,解决了现有技术因切断tcp会话,导致其他正常地址族的通信业务被中断的问题,提高了路由设备间通信的稳定性。
第一方面,提供了一种传输控制协议tcp会话的处理方法,应用于路由设备中,所述路由设备与邻居路由设备建立边界网关协议bgp邻居,该方法可以包括:
与所述邻居路由设备建立第一tcp会话和第二tcp会话后,确定所述第一tcp会话和所述第二tcp会话的主备会话能力;
若确定所述第一tcp会话具备主会话能力,则通过所述第一tcp会话接收所述邻居路由设备发送的携带设定信息和待更新的地址前缀的更新报文,并确定所述设定信息为错误信息后,将所述待更新的地址前缀对应的地址族标记为故障地址族,并将所述待更新的地址前缀对应的地址族加入所述第二tcp会话的故障地址族集合;
切换所述第一tcp会话和所述第二tcp会话的主备会话能力;
通过所述第二tcp会话向所述邻居路由设备发送携带所述故障地址族的移除信息和主会话能力标识的第一能力报文,以使所述邻居路由设备根据所述移除信息在所述第二tcp会话的可用地址族集合中移除所述故障地址族,并切换所述第一tcp会话和所述第二tcp会话的主备会话能力后,发送第一能力响应报文;
若通过所述第二tcp会话接收所述第一能力响应报文,则通过所述第一tcp会话向所述邻居路由设备发送第一通知报文,并断开所述第一tcp会话,以使所述邻居路由设备根据所述第一通知报文断开所述第一tcp会话。
在一个可选的实现中,与所述邻居路由设备建立第一tcp会话和第二tcp会话后,且在确定所述第一tcp会话和所述第二tcp会话的主备会话能力之前,所述方法还包括:
分别通过所述第一tcp会话和所述第二tcp会话向所述邻居路由设备发送第一打开报文和第二打开报文,以使所述邻居路由设备确定所述第一tcp会话和所述第二tcp会话的主备会话能力,所述第一打开报文包括表示主备会话能力的第一会话能力标识、所述路由设备的设备标识和所述路由设备的可用地址族信息,所述第二打开报文包括表示主备会话能力的第二会话能力标识、所述路由设备的设备标识和所述路由设备的可用地址族信息;
分别通过所述第一tcp会话和所述第二tcp会话接收所述邻居路由设备发送的第三打开报文和第四打开报文,所述第三打开报文和所述第四打开报文是所述邻居路由设备在与所述路由设备建立所述第一tcp会话和所述第二tcp会话后发送的,所述第三打开报文包括表示主备会话能力的第三会话能力标识、所述邻居路由设备的设备标识和所述邻居路由设备的可用地址族信息,所述第四打开报文包括表示主备会话能力的第四会话能力标识、所述邻居路由设备的设备标识和所述邻居路由设备的可用地址族信息。
在一个可选的实现中,确定所述第一tcp会话和所述第二tcp会话的主备会话能力,包括:
若所述第一会话能力标识和所述第三会话能力标识为主会话能力标识,所述第二会话能力标识和所述第四会话能力标识为备会话能力标识,则按照所述路由设备设置或所述邻居路由设备初始配置的主备会话能力确定所述第一tcp会话和所述第二tcp会话的主备会话能力;
若所述第一会话能力标识和所述第三会话能力标识不同,所述第二会话能力标识和所述第四会话能力标识不同,则确定满足预设规则的设备标识对应的目标路由设备,按照所述目标路由设备初始配置的主备会话能力确定所述第一tcp会话和所述第二tcp会话的主备会话能力。
在一个可选的实现中,所述方法还包括:
若所述路由设备的设备标识和所述邻居路由设备的设备标识不满足所述预设规则,则分别通过所述第一tcp会话和所述第二tcp会话向所述邻居路由设备发送第二通知报文和第三通知报文,并断开所述第一tcp会话和所述第二tcp会话,以使所述邻居路由设备根据所述第二通知报文和所述第三通知报文分别断开所述第一tcp会话和所述第二tcp会话。
在一个可选的实现中,确定所述第一tcp会话和所述第二tcp会话的主备会话能力,包括:
获取所述第一tcp会话的建立时间和所述第二tcp会话的建立时间;
根据建立时间的先后顺序,确定所述第一tcp会话和所述第二tcp会话的主备会话能力。
在一个可选的实现中,所述方法还包括:
与所述邻居路由设备建立第三tcp会话;
通过所述第三tcp会话向所述邻居路由设备发送第五打开报文,以使所述邻居路由设备确定所述第三tcp会话的主备会话能力,所述第五打开报文包括所述路由设备的设备标识和所述路由设备的故障地址族;
通过所述第三tcp会话接收所述邻居路由设备发送的第六打开报文,所述第六打开报文是所述邻居路由设备在与所述路由设备建立所述第三tcp会话后发送的,所述第六打开报文包括所述邻居路由设备的设备标识和所述邻居路由设备的故障地址族;
根据所述第五打开报文和所述第六打开报文,确定所述第三tcp会话的待测地址族,所述待测地址族包括所述路由设备曾确定的故障地址族和所述邻居路由设备曾确定的故障地址族;
根据预设时长内所述路由设备与所述邻居路由设备的通信状态,确定所述待测地址族是否可用。
在一个可选的实现中,根据预设时长内所述路由设备与所述邻居路由设备的通信状态,确定所述待测地址族是否可用,包括:
若在所述预设时长内与所述邻居路由设备处于正常通信状态,则确定所述待测地址族可用,将所述待测地址族从所述第二tcp会话的故障地址族集合中删除,并将所述待测地址族加入所述第二tcp会话的可用地址族集合;
通过所述第二tcp会话向所述邻居路由设备发送携带所述待测地址族的增加信息和主会话能力标识的第二能力报文,以使所述邻居路由设备根据所述增加信息在所述第二tcp会话的可用地址族集合中增加所述待测地址族后发送第二能力响应报文;
通过所述第二tcp会话接收所述第二能力响应报文后,通过所述第三tcp会话向所述邻居路由设备发送第四通知报文,并断开所述第三tcp会话,以使所述邻居路由设备根据所述第四通知报文断开所述第三tcp会话。
在一个可选的实现中,所述方法还包括:
若在所述预设时长内所述路由设备与所述邻居路由设备处于非正常通信状态,则确定所述待测地址族不可用;
通过第三tcp会话向所述邻居路由设备发送第五通知报文,并断开所述第三tcp会话,以使所述邻居路由设备根据所述第五通知报文断开所述第三tcp会话。
第二方面,提供了一种传输控制协议tcp会话的处理方法,应用于邻居路由设备中,所述邻居路由设备与路由设备建立边界网关协议bgp邻居,该方法可以包括:
与所述路由设备建立第一tcp会话和第二tcp会话后,确定所述第一tcp会话和所述第二tcp会话的主备会话能力;
若确定所述第一tcp会话具备主会话能力,则通过所述第一tcp会话向所述路由设备发送携带设定信息和待更新的地址前缀的更新报文,以使所述路由设备在确定所述设定信息为错误信息后将所述待更新的地址前缀对应的地址族标记为故障地址族,并将所述待更新的地址前缀对应的地址族加入所述第二tcp会话的故障地址族集合,并切换所述第一tcp会话和所述第二tcp会话的主备会话能力,通过所述第二tcp会话发送携带所述故障地址族的移除信息和主会话能力标识的第一能力报文;
通过所述第二tcp会话接收所述第一能力报文;
根据所述移除信息在所述第二tcp会话的可用地址族集合中移除所述故障地址族,并将所述故障地址族加入所述第二tcp会话的故障地址族集合后,切换所述第一tcp会话和所述第二tcp会话的主备会话能力;
向所述路由设备发送第一能力响应报文,以使所述路由设备通过所述第一tcp会话向所述邻居路由设备发送第一通知报文,并断开所述第一tcp会话;
接收所述第一通知报文后,断开所述第一tcp会话。
在一个可选的实现中,与所述路由设备建立第一tcp会话和第二tcp会话后,且在确定所述第一tcp会话和所述第二tcp会话的主备会话能力之前,所述方法还包括:
分别通过所述第一tcp会话和所述第二tcp会话接收所述路由设备发送第一打开报文和第二打开报文,所述第一打开报文和所述第二打开报文是所述路由设备在与所述邻居路由设备建立所述第一tcp会话和所述第二tcp会话后发送的,所述第一打开报文包括表示主备会话能力的第一会话能力标识、所述路由设备的设备标识和所述路由设备的可用地址族信息,所述第二打开报文包括表示主备会话能力的第二会话能力标识、所述路由设备的设备标识和所述路由设备的可用地址族信息;
分别通过所述第一tcp会话和所述第二tcp会话向所述路由设备发送第三打开报文和第四打开报文,以使所述路由设备确定所述第一tcp会话和所述第二tcp会话的主备会话能力,所述第三打开报文包括表示主备会话能力的第三会话能力标识、所述邻居路由设备的设备标识和所述邻居路由设备的可用地址族信息,所述第四打开报文包括表示主备会话能力的第四会话能力标识、所述邻居路由设备的设备标识和所述邻居路由设备的可用地址族信息。
在一个可选的实现中,确定所述第一tcp会话和所述第二tcp会话的主备会话能力,包括:
若所述第一会话能力标识和所述第三会话能力标识为主会话能力标识,所述第二会话能力标识和所述第四会话能力标识为备会话能力标识,则按照所述路由设备设置或所述邻居路由设备初始配置的主备会话能力确定所述第一tcp会话和所述第二tcp会话的主备会话能力;
若所述第一会话能力标识和所述第三会话能力标识不同,所述第二会话能力标识和所述第四会话能力标识不同,则获取确定满足预设规则的设备标识对应的目标路由设备,按照所述目标路由设备初始配置的主备会话能力确定所述第一tcp会话和所述第二tcp会话的主备会话能力。
在一个可选的实现中,所述方法还包括:
若所述路由设备的设备标识和所述邻居路由设备的设备标识不满足所述预设规则,则分别通过所述第一tcp会话和所述第二tcp会话向所述路由设备发送第二通知报文和第三通知报文,并断开所述第一tcp会话和所述第二tcp会话,以使所述路由设备根据所述第二通知报文和所述第三通知报文分别断开所述第一tcp会话和所述第二tcp会话。
在一个可选的实现中,确定所述第一tcp会话和所述第二tcp会话的主备会话能力,包括:
获取所述第一tcp会话的建立时间和所述第二tcp会话的建立时间;
根据建立时间的先后顺序,确定所述第一tcp会话和所述第二tcp会话的主备会话能力。
在一个可选的实现中,所述方法还包括:
与所述路由设备建立第三tcp会话;
通过所述第三tcp会话接收所述路由设备发送的第五打开报文,所述第五打开报文是所述路由设备在与所述邻居路由设备建立所述第三tcp会话后发送的,所述第五打开报文包括所述路由设备的设备标识和所述路由设备的故障地址族;
通过所述第三tcp会话向所述路由设备发送第六打开报文,以使所述路由设备确定所述第三tcp会话的主备会话能力,并根据所述第五打开报文和所述第六打开报文确定所述第三tcp会话的待测地址族,所述待测地址族包括所述路由设备曾确定的故障地址族和所述邻居路由设备曾确定的故障地址族,并根据预设时长内所述路由设备与所述邻居路由设备的通信状态,确定所述待测地址族是否可用,所述第六打开报文包括所述邻居路由设备的设备标识和所述邻居路由设备的故障地址族。
在一个可选的实现中,所述方法还包括:
通过所述第二tcp会话接收所述路由设备发送的携带所述待测地址族的增加信息和主会话能力标识的第二能力报文,所述第二能力报文是所述路由设备根据在所述预设时长内与所述邻居路由设备处于正常通信状态确定所述待测地址族可用,将所述待测地址族从所述第二tcp会话的故障地址族集合中删除,并将所述待测地址族加入所述第二tcp会话的可用地址族集合后发送的;
根据所述增加信息将所述待测地址族从所述第二tcp会话的故障地址族集合中删除,并将所述待测地址族加入所述第二tcp会话的可用地址族集合;
通过所述第二tcp会话向所述路由设备发送第二能力响应报文,以使所述路由设备根据所述第二能力响应报文通过所述第三tcp会话向所述邻居路由设备发送第四通知报文;
通过所述第三tcp会话接收所述第四通知报文后,断开所述第三tcp会话。
在一个可选的实现中,所述方法还包括:
通过第三tcp会话接收所述邻居路由设备发送的第五通知报文,所述第五通知报文是所述路由设备根据在所述预设时长内所述路由设备与所述邻居路由设备处于非正常通信状态确定所述待测地址族不可用后发送的;
根据所述第五通知报文断开所述第三tcp会话。
第三方面,提供了一种传输控制协议tcp会话的处理装置,应用于路由设备中,所述路由设备与邻居路由设备建立边界网关协议bgp邻居,该装置可以包括:确定单元、接收单元、切换单元或发送单元;
所述确定单元,用于与所述邻居路由设备建立第一tcp会话和第二tcp会话后,确定所述第一tcp会话和所述第二tcp会话的主备会话能力;
所述接收单元,用于若确定所述第一tcp会话具备主会话能力,则通过所述第一tcp会话接收所述邻居路由设备发送的携带设定信息和待更新的地址前缀的更新报文,并确定所述设定信息为错误信息后,将所述待更新的地址前缀对应的地址族标记为故障地址族,并将所述待更新的地址前缀对应的地址族加入所述第二tcp会话的故障地址族集合;
所述切换单元,用于切换所述第一tcp会话和所述第二tcp会话的主备会话能力;
所述发送单元,用于通过所述第二tcp会话向所述邻居路由设备发送携带所述故障地址族的移除信息和主会话能力标识的第一能力报文,以使所述邻居路由设备根据所述移除信息在所述第二tcp会话的可用地址族集合中移除所述故障地址族,并切换所述第一tcp会话和所述第二tcp会话的主备会话能力后,发送第一能力响应报文;
以及,若通过所述第二tcp会话接收所述第一能力响应报文,则通过所述第一tcp会话向所述邻居路由设备发送第一通知报文,并断开所述第一tcp会话,以使所述邻居路由设备根据所述第一通知报文断开所述第一tcp会话。
在一个可选的实现中,所述发送单元,还用于分别通过所述第一tcp会话和所述第二tcp会话向所述邻居路由设备发送第一打开报文和第二打开报文,以使所述邻居路由设备确定所述第一tcp会话和所述第二tcp会话的主备会话能力,所述第一打开报文包括表示主备会话能力的第一会话能力标识、所述路由设备的设备标识和所述路由设备的可用地址族信息,所述第二打开报文包括表示主备会话能力的第二会话能力标识、所述路由设备的设备标识和所述路由设备的可用地址族信息;
所述接收单元,还用于分别通过所述第一tcp会话和所述第二tcp会话接收所述邻居路由设备发送的第三打开报文和第四打开报文,所述第三打开报文和所述第四打开报文是所述邻居路由设备在与所述路由设备建立所述第一tcp会话和所述第二tcp会话后发送的,所述第三打开报文包括表示主备会话能力的第三会话能力标识、所述邻居路由设备的设备标识和所述邻居路由设备的可用地址族信息,所述第四打开报文包括表示主备会话能力的第四会话能力标识、所述邻居路由设备的设备标识和所述邻居路由设备的可用地址族信息。
在一个可选的实现中,所述确定单元,具体用于若所述第一会话能力标识和所述第三会话能力标识为主会话能力标识,所述第二会话能力标识和所述第四会话能力标识为备会话能力标识,则按照所述路由设备设置或所述邻居路由设备初始配置的主备会话能力确定所述第一tcp会话和所述第二tcp会话的主备会话能力;
若所述第一会话能力标识和所述第三会话能力标识不同,所述第二会话能力标识和所述第四会话能力标识不同,则确定满足预设规则的设备标识对应的目标路由设备,按照所述目标路由设备初始配置的主备会话能力确定所述第一tcp会话和所述第二tcp会话的主备会话能力。
在一个可选的实现中,所述装置还包括断开单元;
所述发送单元,还用于若所述路由设备的设备标识和所述邻居路由设备的设备标识不满足所述预设规则,则分别通过所述第一tcp会话和所述第二tcp会话向所述邻居路由设备发送第二通知报文和第三通知报文,以使所述邻居路由设备根据所述第二通知报文和所述第三通知报文分别断开所述第一tcp会话和所述第二tcp会话;
所述断开单元,用于断开所述第一tcp会话和所述第二tcp会话。
在一个可选的实现中,所述确定单元,还具体用于获取所述第一tcp会话的建立时间和所述第二tcp会话的建立时间,并根据建立时间的先后顺序,确定所述第一tcp会话和所述第二tcp会话的主备会话能力。
在一个可选的实现中,所述装置还包括建立单元;
所述建立单元,用于与所述邻居路由设备建立第三tcp会话;
所述发送单元,还用于通过所述第三tcp会话向所述邻居路由设备发送第五打开报文,以使所述邻居路由设备确定所述第三tcp会话的主备会话能力,所述第五打开报文包括所述路由设备的设备标识和所述路由设备的故障地址族;
所述接收单元,还用于通过所述第三tcp会话接收所述邻居路由设备发送的第六打开报文,所述第六打开报文是所述邻居路由设备在与所述路由设备建立所述第三tcp会话后发送的,所述第六打开报文包括所述邻居路由设备的设备标识和所述邻居路由设备的故障地址族;
所述确定单元,还用于根据所述第五打开报文和所述第六打开报文,确定所述第三tcp会话的待测地址族,所述待测地址族包括所述路由设备曾确定的故障地址族和所述邻居路由设备曾确定的故障地址族;
以及,根据预设时长内所述路由设备与所述邻居路由设备的通信状态,确定所述待测地址族是否可用。
在一个可选的实现中,所述确定单元,具体用于若在所述预设时长内与所述邻居路由设备处于正常通信状态,则确定所述待测地址族可用,将所述待测地址族从所述第二tcp会话的故障地址族集合中删除,并将所述待测地址族加入所述第二tcp会话的可用地址族集合;
所述发送单元,还用于通过所述第二tcp会话向所述邻居路由设备发送携带所述待测地址族的增加信息和主会话能力标识的第二能力报文,以使所述邻居路由设备根据所述增加信息在所述第二tcp会话的可用地址族集合中增加所述待测地址族后发送第二能力响应报文;
所述接收单元,还用于通过所述第二tcp会话接收所述第二能力响应报文后,通过所述第三tcp会话向所述邻居路由设备发送第四通知报文,并断开所述第三tcp会话,以使所述邻居路由设备根据所述第四通知报文断开所述第三tcp会话。
在一个可选的实现中,所述方法还包括:
所述确定单元,还用于若在所述预设时长内所述路由设备与所述邻居路由设备处于非正常通信状态,则确定所述待测地址族不可用;
所述发送单元,还用于通过第三tcp会话向所述邻居路由设备发送第五通知报文,并断开所述第三tcp会话,以使所述邻居路由设备根据所述第五通知报文断开所述第三tcp会话。
第四方面,提供了一种传输控制协议tcp会话的处理装置,应用于邻居路由设备中,所述邻居路由设备与路由设备建立边界网关协议bgp邻居,该装置可以包括:确定单元、发送单元、接收单元、添加单元和切换单元;
所述确定单元,用于与所述路由设备建立第一tcp会话和第二tcp会话后,确定所述第一tcp会话和所述第二tcp会话的主备会话能力;
所述发送单元,用于若确定所述第一tcp会话具备主会话能力,则通过所述第一tcp会话向所述路由设备发送携带设定信息和待更新的地址前缀的更新报文,以使所述路由设备在确定所述设定信息为错误信息后将所述待更新的地址前缀对应的地址族标记为故障地址族,并将所述待更新的地址前缀对应的地址族加入所述第二tcp会话的故障地址族集合,并切换所述第一tcp会话和所述第二tcp会话的主备会话能力,通过所述第二tcp会话发送携带所述故障地址族的移除信息和主会话能力标识的第一能力报文;
所述接收单元,用于通过所述第二tcp会话接收所述第一能力报文;
所述添加单元,用于根据所述移除信息在所述第二tcp会话的可用地址族集合中移除所述故障地址族,并将所述故障地址族加入所述第二tcp会话的故障地址族集合;
所述切换单元,用于切换所述第一tcp会话和所述第二tcp会话的主备会话能力;
所述发送单元,还用于向所述路由设备发送第一能力响应报文,以使所述路由设备通过所述第一tcp会话向所述邻居路由设备发送第一通知报文,并断开所述第一tcp会话;
所述接收单元,还用于接收所述第一通知报文后,断开所述第一tcp会话。
在一个可选的实现中,所述接收单元,还用于分别通过所述第一tcp会话和所述第二tcp会话接收所述路由设备发送第一打开报文和第二打开报文,所述第一打开报文和所述第二打开报文是所述路由设备在与所述邻居路由设备建立所述第一tcp会话和所述第二tcp会话后发送的,所述第一打开报文包括表示主备会话能力的第一会话能力标识、所述路由设备的设备标识和所述路由设备的可用地址族信息,所述第二打开报文包括表示主备会话能力的第二会话能力标识、所述路由设备的设备标识和所述路由设备的可用地址族信息;
所述发送单元,还用于分别通过所述第一tcp会话和所述第二tcp会话向所述路由设备发送第三打开报文和第四打开报文,以使所述路由设备确定所述第一tcp会话和所述第二tcp会话的主备会话能力,所述第三打开报文包括表示主备会话能力的第三会话能力标识、所述邻居路由设备的设备标识和所述邻居路由设备的可用地址族信息,所述第四打开报文包括表示主备会话能力的第四会话能力标识、所述邻居路由设备的设备标识和所述邻居路由设备的可用地址族信息。
在一个可选的实现中,所述确定单元,具体用于若所述第一会话能力标识和所述第三会话能力标识为主会话能力标识,所述第二会话能力标识和所述第四会话能力标识为备会话能力标识,则按照所述路由设备设置或所述邻居路由设备初始配置的主备会话能力确定所述第一tcp会话和所述第二tcp会话的主备会话能力;
若所述第一会话能力标识和所述第三会话能力标识不同,所述第二会话能力标识和所述第四会话能力标识不同,则获取确定满足预设规则的设备标识对应的目标路由设备,按照所述目标路由设备初始配置的主备会话能力确定所述第一tcp会话和所述第二tcp会话的主备会话能力。
在一个可选的实现中,所述发送单元,还用于若所述路由设备的设备标识和所述邻居路由设备的设备标识不满足所述预设规则,则分别通过所述第一tcp会话和所述第二tcp会话向所述路由设备发送第二通知报文和第三通知报文,并断开所述第一tcp会话和所述第二tcp会话,以使所述路由设备根据所述第二通知报文和所述第三通知报文分别断开所述第一tcp会话和所述第二tcp会话。
在一个可选的实现中,所述确定单元,还具体用于获取所述第一tcp会话的建立时间和所述第二tcp会话的建立时间,并根据建立时间的先后顺序,确定所述第一tcp会话和所述第二tcp会话的主备会话能力。
在一个可选的实现中,所述装置还包括建立单元;
所述建立单元,用于与所述路由设备建立第三tcp会话;
所述接收单元,还用于通过所述第三tcp会话接收所述路由设备发送的第五打开报文,所述第五打开报文是所述路由设备在与所述邻居路由设备建立所述第三tcp会话后发送的,所述第五打开报文包括所述路由设备的设备标识和所述路由设备的故障地址族;
所述发送单元,还用于通过所述第三tcp会话向所述路由设备发送第六打开报文,以使所述路由设备确定所述第三tcp会话的主备会话能力,并根据所述第五打开报文和所述第六打开报文确定所述第三tcp会话的待测地址族,所述待测地址族包括所述路由设备曾确定的故障地址族和所述邻居路由设备曾确定的故障地址族,并根据预设时长内所述路由设备与所述邻居路由设备的通信状态,确定所述待测地址族是否可用,所述第六打开报文包括所述邻居路由设备的设备标识和所述邻居路由设备的故障地址族。
在一个可选的实现中,所述装置还包括断开单元;
所述接收单元,还用于通过所述第二tcp会话接收所述路由设备发送的携带所述待测地址族的增加信息和主会话能力标识的第二能力报文,所述第二能力报文是所述路由设备根据在所述预设时长内与所述邻居路由设备处于正常通信状态确定所述待测地址族可用,将所述待测地址族从所述第二tcp会话的故障地址族集合中删除,并将所述待测地址族加入所述第二tcp会话的可用地址族集合后发送的;
所述添加单元,还用于根据所述增加信息将所述待测地址族从所述第二tcp会话的故障地址族集合中删除,并将所述待测地址族加入所述第二tcp会话的可用地址族集合;
所述发送单元,还用于通过所述第二tcp会话向所述路由设备发送第二能力响应报文,以使所述路由设备根据所述第二能力响应报文通过所述第三tcp会话向所述邻居路由设备发送第四通知报文;
所述断开单元,用于通过所述第三tcp会话接收所述第四通知报文后,断开所述第三tcp会话。
在一个可选的实现中,所述发送单元,还用于通过第三tcp会话接收所述邻居路由设备发送的第五通知报文,所述第五通知报文是所述路由设备根据在所述预设时长内所述路由设备与所述邻居路由设备处于非正常通信状态确定所述待测地址族不可用后发送的;
所述断开单元,还用于根据所述第五通知报文断开所述第三tcp会话。
第五方面,提供了一种电子设备,该电子设备包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述第一方面中任一所述的方法步骤或实现上述第二方面中任一所述的方法步骤。
第六方面,提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面中任一所述的方法步骤或实现上述第二方面中任一所述的方法步骤。
本发明实施例提供的传输控制协议tcp会话的处理方法在与邻居路由设备建立第一tcp会话和第二tcp会话后,确定第一tcp会话和所述第二tcp会话的主备会话能力;若确定第一tcp会话具备主会话能力,则通过第一tcp会话接收邻居路由设备发送的携带设定信息和待更新的地址前缀的更新报文,并确定设定信息为错误信息后,将待更新的地址前缀对应的地址族标记为故障地址族,并将待更新的地址前缀对应的地址族加入第二tcp会话的故障地址族集合;切换第一tcp会话和第二tcp会话的主备会话能力;通过第二tcp会话向邻居路由设备发送携带故障地址族的移除信息和主会话能力标识的第一能力报文,以使邻居路由设备根据所述移除信息在第二tcp会话的可用地址族集合中移除故障地址族,并切换第一tcp会话和第二tcp会话的主备会话能力后,发送第一能力响应报文;若通过第二tcp会话接收第一能力响应报文,则通过第一tcp会话向邻居路由设备发送第一通知报文,并断开第一tcp会话,以使邻居路由设备根据第一通知报文断开第一tcp会话,即其他正常地址族的通信业务通过主会话能力的第二tcp会话仍能继续正常进行,与现有技术切断当前仅存的tcp连接导致其他正常地址族的通信业务被中断的方案相比,本申请的方案提高了路由设备间通信的稳定性。
附图说明
图1为本发明实施例提供的应用传输控制协议tcp会话的处理方法的系统架构示意图;
图2为本发明实施例提供的一种传输控制协议tcp会话的处理方法的流程示意图;
图3a为本发明实施例提供的一种open报文的报文体的结构示意图;
图3b为现有技术的notification报文的报文体的结构示意图;
图3c为本发明实施例提供的一种capability报文的报文体的结构示意图;
图4为本发明实施例提供的另一种传输控制协议tcp会话的处理方法的流程示意图;
图5为本发明实施例提供的一种传输控制协议tcp会话的处理装置的结构示意图;
图6为本发明实施例提供的一种传输控制协议tcp会话的处理装置的结构示意图;
图7为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,并不是全部的实施例。基于本申请实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
现有bgp协议的相关知识:
(1)bgp协议是一种不同自治系统间的动态路由协议,它通过维护ip路由表或ip地址“前缀”表来实现自治系统(autonomoussystem,as)之间的可达性,使用基于路径、网络策略或规则集来决定路由。
自治系统as,是由同一个管理机构管理、使用统一选路策略的一些路由设备的集合。每个自治系统都会由因特网授权的管理机构为其分配唯一的自治系统编号,即as编号。通过采用路由协议和自治系统编号,不同路由设备就可以确定彼此间的路径和路由信息的交换方法。
(2)bgp报文由bgp报文头和报文体两部分组成,其中,bgp报文头包括:标记(marker)字段、长度(length)字段和类型(type)字段。
marker字段:(16字节)鉴权信息,标记报文的边界。
length字段:(2字节)标记报文头在内的bgp报文的报文长度。
type字段:(1字节)定义bgp报文的报文类型,如1表示open报文、2表示update报文、3表示notification、4表示keepalive报文、5表示router-refresh报文、6表示capability报文。
本发明实施例提供的边界网关协议bgp报文的通信方法可以应用在图1所示的系统架构中,该系统可以包括:路由设备a和邻居路由设备b。
路由设备a和邻居路由设备b根据各自的ip地址,建立第一tcp会话和第二tcp会话。
路由设备a与邻居路由设备b分别通过第一tcp会话和第二tcp会话向对方发送包括主备会话能力标识的open报文来协商两个tcp会话的会话能力,以及每个tcp会话的可用地址族集合。正常情况下,路由设备a与邻居路由设备b通过具有主会话能力的tcp会话交互正常的bgp报文,如update报文、keepalive报文等。其中,会话能力包括主会话能力和备会话能力,每个tcp会话的可用地址族集合包括路由设备a的可用地址族信息与邻居路由设备b的可用地址族信息。
以路由设备a接收邻居路由设备b通过具有主会话能力的第一tcp会话发送的update报文为例,路由设备a解析出该update报文存在错误信息,且该错误信息为bgp协议规定需要断开当前第一tcp会话的信息,则将update报文中待更新的地址前缀,如ip地址前缀对应的目标地址族标记为故障地址族,其中,目标地址族为第一tcp会话的可用地址族集合中的地址族。如,可用地址族集合可以包括ipv4单播地址族、ipv6单播地址族、vpnv4地址族和vpnv6地址族。
路由设备a将第一tcp会话的会话能力由主会话能力切换为备会话能力,以及将第二tcp会话的会话能力由备会话能力切换为主会话能力,即将第一tcp会话的会话能力和第二tcp会话的会话能力进行主备会话能力切换。之后路由设备a通过第二tcp会话向邻居路由设备b发送包括目标地址族移除信息的capability报文,再通过第一tcp会话向路由设备b发送notification报文,以使邻居路由设备b断开第一tcp会话,同时断开自身的第一tcp会话。
可见,本发明实施例提供的上述系统通过建立主会话能力和备会话能力的tcp会话后,正常情况下由主会话能力的tcp会话交互携带路由信息的update报文,当检测接收到携带错误信息的update报文,且该错误信息为按bgp协议规定必须断开会话时,触发相应路由设备将update报文中的地址前缀对应的目标地址族标记故障地址族,并将其加入具有主会话能力的tcp会话的故障地址族集合和具有备会话能力的tcp会话的故障地址族集合,使主会话能力的tcp会话和备会话能力的tcp会话都不传输故障地址族路由(或称“故障地址族的地址前缀”),并将备会话能力的tcp会话切换为主会话能力的tcp会话,此时的新主会话能力的tcp会话传输的是正常地址族路由(或称“正常地址族的地址前缀)。按bgp协议规定断开原主会话能力的tcp会话,使其他正常地址族的通信业务通过新主会话能力的tcp会话继续进行,提高了bgp报文的通信稳定性。
需要说明的是,对于正常断开tcp会话的情况,如用户手动配置关闭tcp会话的情况,本发明实施例不适用。
以下结合说明书附图对本申请的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明,并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
图2为本发明实施例提供的一种传输控制协议tcp会话的处理方法的流程示意图。如图2所示,该方法可以包括:
步骤210、路由设备a与邻居路由设备b建立第一tcp会话和第二tcp会话。
路由设备a与邻居路由设备b分别根据tcp协议和路由设备a的ip地址与邻居路由设备b的ip地址建立具有第一tcp会话标识的第一tcp会话和具有第二tcp会话标识的第二tcp会话,第一tcp会话标识和第二tcp会话标识不相同。
步骤220、路由设备a确定第一tcp会话和第二tcp会话的主备会话能力。
路由设备a可以通过以下两种方式,确定第一tcp会话和第二tcp会话的会话能力:
方式一,路由设备a与邻居路由设备b分别通过第一tcp会话和第二tcp会话发送各自的open报文,以交互彼此的bgp邻居能力信息,如可用地址族信息、路由设备的设备标识、确定的主备会话能力等,并根据发送的open报文和接收的open报文中表示主备会话能力的会话能力标识和路由设备的设备标识,确定主备会话能力。
其中,如图3a所示该open报文的报文体可以包括:
version字段:(1字节)bgp协议的版本号;
myautonomoussystem字段:(2字节)本地as号;
holdtime字段:(2字节)保活时间,在规定时间内如果收不到keepalive或者update报文,则对等体失效;
bgpidentifier字段:(4字节)发送端的路由设备的设备标识符;
optparmlen字段:(1字节)可选的参数的长度,若为0,则没有可选参数;
optionalparameters字段:(可变字节)可选的参数,用来扩展bgp支持多协议;
会话能力类型值字段:(1字节)表示主备会话能力的类型值,通过这个类型值可了解到该会话能力;
会话能力长度字段:(1字节)表示主备会话能力的长度;
b字段:(1比特)会话能力,指示tcp会话的主备会话能力,如0表示主会话能力,1表示备会话能力,其中,0为主会话能力标识;1为备会话能力标识。
预留字段:(4比特);
sessionid字段:(1字节)tcp会话标识,如第一tcp会话的sessionid为1,和第二tcp会话的sessionid为2。
可以理解的是,也可以在原始open报文的报文结构基础上增加主备会话能力字段、预留字段和sessionid字段,本发明实施例在此不做限定。
具体的,路由设备a分别通过第一tcp会话和第二tcp会话向邻居路由设备b发送第一open报文和第二open报文;
第一open报文可以包括表示主备会话能力的第一会话能力标识、路由设备a的设备标识、路由设备a的可用地址族信息和第一tcp会话标识,第二open报文可以包括表示主备会话能力的第二会话能力标识、路由设备a的设备标识、路由设备a的可用地址族信息和第二tcp会话标识;第一tcp会话标识为第一tcp会话的会话标识,第二tcp会话标识为第二tcp会话的会话标识。
路由设备a分别通过第一tcp会话和第二tcp会话接收邻居路由设备b发送的第三open报文和第四open报文;
第三open报文可以包括表示主备会话能力的第三会话能力标识、路由设备b的设备标识、路由设备b的可用地址族信息和第一tcp会话标识,第四open报文可以包括表示主备会话能力的第四会话能力标识、路由设备b的设备标识、路由设备b的可用地址族信息和第二tcp会话标识。
若第一会话能力标识和第三会话能力标识为主会话能力标识,第二会话能力标识和第四会话能力标识为备会话能力标识,则路由设备a按照自身设置或邻居路由设备b初始配置的主备会话能力确定第一tcp会话和第二tcp会话的主备会话能力;
例如,若路由设备a设置的会话能力或邻居路由设备b设置的会话能力均为将第一tcp会话的会话能力设置为备会话能力,将第二tcp会话的会话能力设置为主会话能力,则路由设备a将第一tcp会话的会话能力确定为主会话能力,将第二tcp会话的会话能力确定为备会话能力。
若第一会话能力标识和第三会话能力标识不同,如第一会话能力标识为主会话能力标识,第三会话能力标识为备会话能力标识,第二会话能力标识和第四会话能力标识不同,如第二会话能力标识为备会话能力标识,第四会话能力标识为主会话能力标识,则路由设备a确定满足预设规则的设备标识对应的目标路由设备,按照目标路由设备初始配置的主备会话能力确定第一tcp会话和第二tcp会话的主备会话能力。
例如,以预设规则的设备标识为最小的设备标识为例,若较小的设备标识对应的目标路由设备为路由设备a,即路由设备a的设备标识小于邻居路由设备b的设备标识,则路由设备a根据自身初始配置的会话能力,将第一tcp会话的会话能力确定为主会话能力,将第二tcp会话的会话能力确定为备会话能力。
可以理解的是,路由设备b接收到路由设备a发送的第一open报文和第二open报文,故可以执行上述确定第一tcp会话和第二tcp会话的主备会话能力的步骤,且路由设备b确定的第一tcp会话和第二tcp会话的主备会话能力与路由设备a的确定结果相同,即具体确定过程与确定结果相同,仅执行主体不同,故本发明实施例在此不做赘述。
进一步的,若路由设备a的设备标识和邻居路由设备b的设备标识的大小相同,则分别通过第一tcp会话和第二tcp会话向邻居路由设备b发送第二notification报文和第三notification报文。
其中,如图3b所示,notification报文的报文体可以包括:
errorcode字段:(1字节)差错码,定义错误类型,非特定的错误类型用零表示;
errsubcode字段:(1字节)差错子码,指错误类型的详细信息,非特定的错误细节编号用零表示。
data字段:(可变字节)差错数据,用于辅助发现错误的原因,其内容依赖于具体的差错码和差错子码,可以包括如下内容:
由上述列表可知,第二notification报文包括第三open报文错误的信息,即差错码为2,差错子码的内容为bgp标识符错误和第一tcp会话标识,即sessionid为1;第三notification报文中包括第四open报文错误的信息,即差错码为2,差错子码的内容为bgp标识符错误和第二tcp会话标识,即sessionid为2。
邻居路由设备b分别根据接收到的第二notification报文和第三notification报文断开相应的第一tcp会话和第二tcp会话。
可以理解的是,路由设备a也会接收到邻居路由设备b分别通过第一tcp会话和第二tcp会话向路由设备a发送与第一open报文和第二open报文对应的notification报文,以使路由设备a断开第一tcp会话和第二tcp会话,其具体过程与上述执行的过程相同,仅执行主体不同,本发明实施例在此不做赘述。
方式二,获取路由设备a与邻居路由设备b建立第一tcp会话的建立时间和第二tcp会话的建立时间;
根据建立时间的先后顺序,确定第一tcp会话和第二tcp会话的主备会话能力。
可选地,将建立时间较早的目标tcp会话的会话能力确定为主会话能力,除目标tcp会话外的tcp会话的会话能力确定为备会话能力。
例如,若第一tcp会话的建立时间早于第二tcp会话的建立时间,则路由设备a将第一tcp会话的会话能力确定为主会话能力,以及将第二tcp会话的会话能力确定为备会话能力。
若第二tcp会话的建立时间早于第一tcp会话的建立时间,则路由设备a将第二tcp会话的会话能力确定为主会话能力,以及将第一tcp会话的会话能力确定为备会话能力。
之后,路由设备a与邻居路由设备b分别通过第一tcp会话和第二tcp会话发送各自的open报文,以交互彼此的bgp邻居能力信息,如可用地址族信息、路由设备的设备标识、确定的主备会话能力等,如方式一中的第一open报文、第二open报文、第三open报文和第四open报文,本发明实施例在此不做赘述。
可以理解的是,在bgp报文通信过程中路由设备a与邻居路由设备b交互open报文执行步骤可以在步骤220之前,也可以在步骤220之后,如图2的虚线所示。
需要说明的是,对第一tcp会话和第二tcp会话的主备会话能力的确定包括但不限于上述的两种设置方式,还可以根据实际需要对建立的第一tcp会话和第二tcp会话的会话能力进行自定义设置等,也就是说,只要能确定第一tcp会话和第二tcp会话的主备会话能力即可,本发明实施例在此不做限定。
步骤230、邻居路由设备b通过第一tcp会话向路由设备a发送update报文。
在设置第一tcp会话和第二tcp会话的会话能力后,例如设置第一tcp会话的会话能力为主会话能力,第二tcp会话的会话能力为备会话能力。
邻居路由设备b可以通过主会话能力的第一tcp会话向路由设备a发送update报文。
update报文可以包括待更新的地址前缀、路由属性等信息。待更新的地址前缀可以是第一tcp会话的可用地址族集合中目标地址族对应的待增加的地址前缀或待撤销的地址前缀,目标地址族为可用地址族集合中的任一地址族。
步骤240、路由设备a确定update报文存在设定错误信息后,将该待更新的地址前缀对应的目标地址族标记为故障地址族,并对两个tcp会话的主备会话能力进行切换。
其中,该设定错误信息可以为bgp协议规定需要断开当前tcp会话的信息,如缺少下一跳的路由属性、报文结构异常等。
路由设备a按照bgp协议对update报文中的设定信息进行解析;
若解析出该update报文中的设定信息不是设定错误信息,则路由设备a对update报文中待更新的地址前缀进行处理。该设定信息为update报文携带的任一信息。
如,若待更新的地址前缀为待增加的地址前缀,则将该待增加的地址前缀关联到第一tcp会话的可用地址族集合中的目标地址族;若待更新的地址前缀为待删除的地址前缀,则在第一tcp会话的可用地址族集合关联的地址前缀中删除该待删除的地址前缀。
若解析出该update报文中的设定信息是设定错误信息,则路由设备a对update报文中待更新的地址前缀对应的目标地址族标记为故障地址族,并将标记的故障地址族加入第一tcp会话的故障地址族集合和第二tcp会话的故障地址族集合。
之后,将第一tcp会话的会话能力由主会话能力切换为备会话能力,即通过第一tcp会话传输的bgp报文携带备会话能力标识,以及将第二tcp会话的会话能力由备会话能力切换为主会话能力,即通过第二tcp会话传输的bgp报文携带备主会话能力标识,同时将第一tcp会话关联的可用地址族集合的地址前缀与第二tcp会话进行关联,并将地址前缀与第一tcp会话解除关联。
可以理解的是,为了保持一致性,第一tcp会话中可用地址族集合关联的地址前缀包括与第二tcp会话中可用地址族集合关联的地址前缀相同的地址前缀和不同的地址前缀。对于相同的地址前缀,可以进行重新关联,也可以忽略该次关联;对于不同的地址前缀进行该次关联。
步骤250、路由设备a通过第二tcp会话向邻居路由设备b发送第一capability报文。
第一capability报文可以包括用于移除故障地址族的移除信息、主会话能力标识和第二tcp会话标识。该移除信息可以包括待移除的故障地址族和移除指示。
其中,如图3c所示,capability报文的报文体可以包括:
init/ack字段:(1字节)指示是否正在进行功能更新,如0表示正在更新,1表示正在确认更新;
ackrequest字段:(1字节)请求确认,1表示请求响应,0表示不响应,以启动功能更新;
reserved字段:(5字节)保留位,发送方将其设置为0,接收方忽略这些保留位;
action字段:(1字节)动作指示位,0表示增加指示,1表示移除指示;
sequencenumber字段:(4字节)序列号,由发送方使用,以匹配发送方先前发起的功能修改的确认;
capabilitycode字段:(1字节)所支持的能力编号,支持的能力为支持的地址族;
capabilitylenght字段:(2字节)表示capabilityvalue的长度;
b字段:(1比特)会话能力,指示tcp会话的主备会话能力,如0表示主会话能力,1表示备会话能力,其中,0为主会话标识;1为备会话标识。
预留字段:(4比特);
sessionid字段:(1字节)会话标识,如第一tcp会话的sessionid为1,和第二tcp会话的sessionid为2。
步骤260、邻居路由设备b根据接收的第一capability报文,在第二tcp会话的可用地址族集合中移除故障地址族,并切换第一tcp会话和第二tcp会话的主备会话能力。
邻居路由设备b对第一capability报文进行解析,得到移除信息,根据移除信息将该故障地址族从可用地址族集合中移除,并将第一tcp会话关联的可用地址族集合的地址前缀与第二tcp会话进行关联,并将该可用地址族集合的地址前缀与第一tcp会话解除关联。
并对两个tcp会话的主备会话能力进行切换。
步骤270、邻居路由设备b通过第二tcp会话向路由设备a发送第一capability响应报文。
可选地,在执行步骤250的同时,路由设备a还可以通过第一tcp会话向邻居路由设备b发送第三capability报文,第三capability报文可以包括移除信息、备会话能力标识和第一tcp会话标识,以重复指示邻居路由设备b对故障地址族进行移除。且路由设备a在接收到第一capability报文对应的第一capability响应报文和第三capability报文对应的第三capability响应报文之后,执行步骤280。
步骤280、路由设备a通过第一tcp会话向邻居路由设备b发送第一notification报文,并断开第一tcp会话。
第一notification报文包括解析第一update报文错误的信息。
在向邻居路由设备b发送第一notification报文后,路由设备a断开第一tcp会话。
步骤290、邻居路由设备b根据第一notification报文断开第一tcp会话。
之后,路由设备a与邻居路由设备b可以通过第二tcp会话传输其他正常地址族的bgp报文,提高了通信的稳定性。
进一步的,为了检测曾确定的故障地址族的当前可用性,在执行完图2的预设时间段后,如图4所示,可以执行以下步骤:
步骤401、路由设备a与邻居路由设备b建立第三tcp会话;
第三tcp会话的第三tcp会话标识与第一tcp会话标识和第二tcp会话标识均不同。
步骤402、路由设备a与邻居路由设备b通过第三tcp会话交互open报文。
为了交互路由设备a与邻居路由设备b间彼此的bgp邻居能力信息。
其中,交互的bgp邻居能力信息为路由设备a或邻居路由设备b曾确定的故障地址族。
具体的,路由设备a向邻居路由设备b发送第五open报文,第五open报文可以包括路由设备a的设备标识和路由设备a曾确定的故障地址族。
邻居路由设备b向路由设备a发送第六open报文,第六open报文可以包括邻居路由设备b的设备标识和邻居路由设备b曾确定的故障地址族。
进一步的,路由设备a根据与邻居路由设备b交互的open报文,确定第三tcp会话的待测地址族,待测地址族可以包括路由设备a曾确定的故障地址族和邻居路由设备b曾确定的故障地址族。
步骤403、路由设备a根据预设时长内路由设备a与邻居路由设备b的通信状态,确定待测地址族是否可用。
在预设时长内,路由设备a与邻居路由设备b可以相互交互保持通信连接的bgp报文,如keepalive报文、update报文、open报文等,其中,该bgp报文可以包括目标地址前缀,该目标地址前缀为待测地址族关联的任一地址前缀。
若在预设时长内路由设备a与邻居路由设备b处于正常通信状态,则执行步骤404;
若在预设时长内路由设备a与邻居路由设备b未处于正常通信状态,则执行步骤410;
步骤404、路由设备a确定待测地址族可用,并将待测地址族标记为第二tcp会话的可用地址族;
路由设备a确定待测地址族可用性,将待测地址族从第二tcp会话的故障地址族集合中删除,并将待测地址族加入第二tcp会话的可用地址族集合。
步骤405、路由设备a通过第二tcp会话向邻居路由设备b发送第二capability报文。
第二capability报文可以包括待测地址族的增加信息和主会话能力标识。待测地址族的增加信息可以包括待测地址族和增加指示。
或者,第二capability报文可以仅包括待测地址族的增加信息。
步骤406、邻居路由设备b根据接收的第二capability报文,将在第二tcp会话的可用地址族集合中增加待测地址族。
具体的,邻居路由设备b对第二capability报文进行解析,得到待测地址族的增加信息;
根据待测地址族的增加信息,将待测地址族从第二tcp会话的故障地址族集合中删除,并将待测地址族加入第二tcp会话的可用地址族集合。
步骤407、邻居路由设备b根据第二capability报文向路由设备a发送第二capability响应报文。
步骤408、路由设备a通过第三tcp会话向邻居路由设备b发送第四notification报文,并断开第三tcp会话。
第四notification报文包括停止信息,即停止差错码。
步骤409、邻居路由设备b根据第四notification报文断开第三tcp会话。
步骤410、路由设备a通过第三tcp会话向邻居路由设备b发送第五notification报文,并断开第三tcp会话,继续执行步骤411。
路由设备a在预设时长内路由设备a与邻居路由设备b未处于正常通信状态时,确定待测地址族不可用,并通过第三tcp会话向邻居路由设备b发送第五notification报文。
第五notification报文包括解析第二update报文错误的信息,即差错码为3的upadate报文差错信息。
步骤411、邻居路由设备b根据第五notification报文断开第三tcp会话。
需要说明的是,由于路由设备a与邻居路由设备b是相互对等的设备,故上述由路由设备a执行的步骤,邻居路由设备b也可以执行,相应的上述由邻居路由设备b执行的步骤,路由设备a也可以执行。也就是说,上述方法步骤中的执行主体在互换后,也可以实现本申请bgp报文通信的稳定性,本发明实施例在此不做赘述。
本发明实施例提供的传输控制协议tcp会话的处理方法在与邻居路由设备建立第一tcp会话和第二tcp会话后,确定第一tcp会话和所述第二tcp会话的主备会话能力;若确定第一tcp会话具备主会话能力,则通过第一tcp会话接收邻居路由设备发送的携带设定信息和待更新的地址前缀的更新报文,并确定设定信息为错误信息后,将待更新的地址前缀对应的地址族标记为故障地址族,并将待更新的地址前缀对应的地址族加入第二tcp会话的故障地址族集合;切换第一tcp会话和第二tcp会话的主备会话能力;通过第二tcp会话向邻居路由设备发送携带故障地址族的移除信息和主会话能力标识的第一能力报文,以使邻居路由设备根据所述移除信息在第二tcp会话的可用地址族集合中移除故障地址族,并切换第一tcp会话和第二tcp会话的主备会话能力后,发送第一能力响应报文;若通过第二tcp会话接收第一能力响应报文,则通过第一tcp会话向邻居路由设备发送第一通知报文,并断开第一tcp会话,以使邻居路由设备根据第一通知报文断开第一tcp会话,即其他正常地址族的通信业务通过主会话能力的第二tcp会话仍能继续正常进行,与现有技术切断当前仅存的tcp连接导致其他正常地址族的通信业务被中断的方案相比,本申请的方案提高了路由设备间通信的稳定性。
与上述方法对应的,本发明实施例还提供一种传输控制协议tcp会话的处理装置,应用于路由设备中,所述路由设备与邻居路由设备建立边界网关协议bgp邻居,如图5所示,该装置包括:确定单元510、接收单元520、切换单元530或发送单元540;
确定单元510,用于与所述邻居路由设备建立第一tcp会话和第二tcp会话后,确定所述第一tcp会话和所述第二tcp会话的主备会话能力;
接收单元520,用于若确定所述第一tcp会话具备主会话能力,则通过所述第一tcp会话接收所述邻居路由设备发送的携带设定信息和待更新的地址前缀的更新报文,并确定所述设定信息为错误信息后,将所述待更新的地址前缀对应的地址族标记为故障地址族,并将所述待更新的地址前缀对应的地址族加入所述第二tcp会话的故障地址族集合;
切换单元530,用于切换所述第一tcp会话和所述第二tcp会话的主备会话能力;
发送单元540,用于通过所述第二tcp会话向所述邻居路由设备发送携带所述故障地址族的移除信息和主会话能力标识的第一能力报文,以使所述邻居路由设备根据所述移除信息在所述第二tcp会话的可用地址族集合中移除所述故障地址族,并切换所述第一tcp会话和所述第二tcp会话的主备会话能力后,发送第一能力响应报文;
以及,若通过所述第二tcp会话接收所述第一能力响应报文,则通过所述第一tcp会话向所述邻居路由设备发送第一通知报文,并断开所述第一tcp会话,以使所述邻居路由设备根据所述第一通知报文断开所述第一tcp会话。
本发明上述实施例提供的通信装置的各功能单元的功能,可以通过上述各方法步骤来实现,因此,本发明实施例提供的通信装置中的各个单元的具体工作过程和有益效果,在此不复赘述。
与上述方法对应的,本发明实施例还提供一种传输控制协议tcp会话的处理装置,应用于邻居路由设备中,所述邻居路由设备与路由设备建立边界网关协议bgp邻居,如图6所示,该装置包括:确定单元610、发送单元620、接收单元630、添加单元640和切换单元650;
确定单元610,用于与所述路由设备建立第一tcp会话和第二tcp会话后,确定所述第一tcp会话和所述第二tcp会话的主备会话能力;
发送单元620,用于若确定所述第一tcp会话具备主会话能力,则通过所述第一tcp会话向所述路由设备发送携带设定信息和待更新的地址前缀的更新报文,以使所述路由设备在确定所述设定信息为错误信息后将所述待更新的地址前缀对应的地址族标记为故障地址族,并将所述待更新的地址前缀对应的地址族加入所述第二tcp会话的故障地址族集合,并切换所述第一tcp会话和所述第二tcp会话的主备会话能力,通过所述第二tcp会话发送携带所述故障地址族的移除信息和主会话能力标识的第一能力报文;
接收单元630,用于通过所述第二tcp会话接收所述第一能力报文;
添加单元640,用于根据所述移除信息在所述第二tcp会话的可用地址族集合中移除所述故障地址族,并将所述故障地址族加入所述第二tcp会话的故障地址族集合;
切换单元650,用于切换所述第一tcp会话和所述第二tcp会话的主备会话能力;
发送单元620,还用于向所述路由设备发送第一能力响应报文,以使所述路由设备通过所述第一tcp会话向所述邻居路由设备发送第一通知报文,并断开所述第一tcp会话;
接收单元630,还用于接收所述第一通知报文后,断开所述第一tcp会话。
本发明上述实施例提供的通信装置的各功能单元的功能,可以通过上述各方法步骤来实现,因此,本发明实施例提供的通信装置中的各个单元的具体工作过程和有益效果,在此不复赘述。
本发明实施例还提供了一种电子设备,如图7所示,包括处理器710、通信接口720、存储器730和通信总线740,其中,处理器710,通信接口720,存储器730通过通信总线740完成相互间的通信。
存储器730,用于存放计算机程序;
处理器710,用于执行存储器730上所存放的程序时,实现如下步骤:
与所述邻居路由设备建立第一tcp会话和第二tcp会话后,确定所述第一tcp会话和所述第二tcp会话的主备会话能力;
若确定所述第一tcp会话具备主会话能力,则通过所述第一tcp会话接收所述邻居路由设备发送的携带设定信息和待更新的地址前缀的更新报文,并确定所述设定信息为错误信息后,将所述待更新的地址前缀对应的地址族标记为故障地址族,并将所述待更新的地址前缀对应的地址族加入所述第二tcp会话的故障地址族集合;
切换所述第一tcp会话和所述第二tcp会话的主备会话能力;
通过所述第二tcp会话向所述邻居路由设备发送携带所述故障地址族的移除信息和主会话能力标识的第一能力报文,以使所述邻居路由设备根据所述移除信息在所述第二tcp会话的可用地址族集合中移除所述故障地址族,并切换所述第一tcp会话和所述第二tcp会话的主备会话能力后,发送第一能力响应报文;
若通过所述第二tcp会话接收所述第一能力响应报文,则通过所述第一tcp会话向所述邻居路由设备发送第一通知报文,并断开所述第一tcp会话,以使所述邻居路由设备根据所述第一通知报文断开所述第一tcp会话。
或者,实现如下步骤:
与所述路由设备建立第一tcp会话和第二tcp会话后,确定所述第一tcp会话和所述第二tcp会话的主备会话能力;
若确定所述第一tcp会话具备主会话能力,则通过所述第一tcp会话向所述路由设备发送携带设定信息和待更新的地址前缀的更新报文,以使所述路由设备在确定所述设定信息为错误信息后将所述待更新的地址前缀对应的地址族标记为故障地址族,并将所述待更新的地址前缀对应的地址族加入所述第二tcp会话的故障地址族集合,并切换所述第一tcp会话和所述第二tcp会话的主备会话能力,通过所述第二tcp会话发送携带所述故障地址族的移除信息和主会话能力标识的第一能力报文;
通过所述第二tcp会话接收所述第一能力报文;
根据所述移除信息在所述第二tcp会话的可用地址族集合中移除所述故障地址族,并将所述故障地址族加入所述第二tcp会话的故障地址族集合后,切换所述第一tcp会话和所述第二tcp会话的主备会话能力;
向所述路由设备发送第一能力响应报文,以使所述路由设备通过所述第一tcp会话向所述邻居路由设备发送第一通知报文,并断开所述第一tcp会话;
接收所述第一通知报文后,断开所述第一tcp会话。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
由于上述实施例中电子设备的各器件解决问题的实施方式以及有益效果可以参见图2所示的实施例中的各步骤来实现,因此,本发明实施例提供的电子设备的具体工作过程和有益效果,在此不复赘述。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的传输控制协议tcp会话的处理方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的传输控制协议tcp会话的处理方法。
本领域内的技术人员应明白,本申请实施例中的实施例可提供为方法、系统、或计算机程序产品。因此,本申请实施例中可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例中可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例中是参照根据本申请实施例中实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例中的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例中范围的所有变更和修改。
显然,本领域的技术人员可以对本申请实施例中实施例进行各种改动和变型而不脱离本申请实施例中实施例的精神和范围。这样,倘若本申请实施例中实施例的这些修改和变型属于本申请实施例中权利要求及其等同技术的范围之内,则本申请实施例中也意图包含这些改动和变型在内。