logo好方法网

一种保证冗余执行体TCP连接归一化的装置及方法


技术摘要:
本发明公开一种保证冗余执行体TCP连接归一化的装置及方法,该装置包括同步运行的若干个冗余等价执行体,以及冗余控制器、输入/输出代理;冗余等价执行体,用于运行各类应用程序,并将各类应用程序的运算结果输出至输入/输出代理;输入/输出代理,用于拆分TCP报文,并根  全部
背景技术:
TCP(Transmission  Control  Protocol传输控制协议)是一种面向连接的、可靠 的、基于字节流的传输层通信协议,为了保证通信的可靠性,两个使用TCP的应用(通常是一 个客户端和一个服务器)在彼此交换数据包之前必须先建立TCP连接,并且为每个传输数据 报文编制相应的序号,以保证数据可以在接收端按序接收。TCP连接建立过程需要经过三次 握手如附图1所示,由客户端发起连接并发送SYN报文(seq=x)到服务器,服务器收到SYN报 文后必须返回一个确认ACK(ack=x 1,seq=y),客户端收到服务器的ACK后再向服务器返 回一个确认ACK(ack=y 1),随后客户端与服务器根据各自的产生的序号进行数据交互,每 个数据报文的序号根据所传输数据的长度依次递增。数据交互结束时同样需要四次挥手结 束TCP连接如附图2所示,由客户端(或服务器)发出连接释放报文FIN(seq=u),服务器收到 FIN后回复ACK(ack=u 1,seq=v),同时发送FIN(seq=w,ack=u 1),客户端接收到服务器 返回信息后再回复ACK(seq=u 1,ack=w 1),至此结束TCP连接。 为了提高系统的安全性和可靠性,许多系统采用两套或两套以上独立配置的软硬 件等构成冗余设计,包括同构冗余设计和异构冗余设计。同构冗余设计是使冗余空间内的 所有软硬件具有完全相同的功能以及相同或非常相似的性能,从而可以根据物理性随机故 障的时空性质,在软硬件设计缺陷引发的随机性故障条件下解决容错、异常感知等问题,保 证系统的可靠性。异构冗余设计则凭借同一问题通常有多种解决方法的思想,通过解决同 一问题在实现功能思想、方法、工具、条件等的相异性,使得同一时间、同一条件、各冗余执 行体发生共模故障的情况下,依靠执行体间的对比裁决或交叉研判等机制来发现或感知故 障,从而保证系统的安全性。 在冗余系统中采用面向连接的TCP通信连接存在以下难点:在建立TCP连接时,冗 余系统中的每个冗余等价执行体都需要建立TCP连接,此过程会导致远端设备同时感知到 多个(与等价冗余执行体的数量相等)来自同一设备的TCP连接请求或响应,从而导致TCP连 接失败;此外不同冗余等价执行体在TCP三次握手、数据传输和四次挥手过程所产生的随机 序号各不相同,因此需要采用归一化的方法使得所有冗余等价执行体能够共用同一条TCP 连接,从而保证TCP协议的正常运行。
技术实现要素:
针对现有技术的不足,本发明提出一种保证冗余执行体TCP连接归一化的装置及 方法,能够有效解决冗余系统建立TCP连接时的归一化问题,同时提高通信系统的可靠性和 安全性。 本发明的目的通过如下的技术方案来实现: 5 CN 111600836 A 说 明 书 2/8 页 一种保证冗余执行体TCP连接归一化的装置,该装置包括同步运行的若干个冗余 等价执行体,以及冗余控制器、输入/输出代理; 冗余等价执行体,用于运行各类应用程序,并将各类应用程序的运算结果输出至 输入/输出代理; 输入/输出代理,用于拆分TCP报文,并根据冗余控制器的处理结果重组TCP报文, 包括将相应的外部输入重组后转发至对应的冗余等价执行体,或将对应冗余等价执行体的 输出重组后作为装置的最终输出; 冗余控制器,用于对冗余等价执行体的输出和外部输入的数据进行运算、处理,并 将处理结果输出至输入/输出代理。 进一步地,所述的冗余控制器包括裁决处理模块、参数存储模块和可逆运算模块, 其中, 裁决处理模块,用于对所有冗余等价执行体产生的传输数据进行对比、研判、裁 决,并将处理结果发送至输入/输出代理,控制输入/输出代理,使其选择对应冗余等价执行 体的传输数据进行重组后,作为对外输出;对来自输入/输出代理的外部数据进行分析、处 理,并将处理结果返回输入/输出代理,控制输入/输出代理将相应数据进行重组后,发送至 对应的冗余等价执行体; 参数存储模块,用于在TCP三次握手、数据传输和四次挥手过程中存储对应冗余等 价执行体发送或接收报文的序号、确认号,以及所有冗余等价执行体经过裁决处理模块产 生的裁决参数; 可逆运算模块,用于对所有冗余等价执行体的输入与输出数据进行归一化运算。 进一步地,所述的输入/输出代理包括数据包拆分模块和数据包重组模块,其中, 数据包拆分模块,用于对TCP报文进行拆分,并发送给冗余控制器; 数据包重组模块,用于根据冗余控制器的处理结果对拆分后的报文进行重组形成 新的TCP报文。 进一步地,所述的数据包拆分模块对TCP报文拆分后提取报文中的序号和确认号, 所述的数据包重组模块对拆分后的报文进行重组形成新的TCP报文时添加序号、确认号和 检验和。 一种保证冗余执行体TCP连接归一化的方法,该方法基于上述的保证冗余执行体 TCP连接归一化的装置来实现,该装置作为客户端时,冗余执行体TCP连接归一化的过程包 括三次握手、数据传输和四次挥手三个阶段; 其中,该装置与远端服务器的三次握手的归一化过程如下: A1:若干个冗余等价执行体同步发起建立TCP连接请求至输入/输出代理,输入/输 出代理将TCP连接请求报文进行拆分并获得各冗余执行体对应的报文序号seq,随后将所有 序号发送至冗余控制器; A2:冗余控制器通过可逆运算模块计算出归一化的报文序号seq_unif,并将其返 回给输入/输出代理,同时保存所有冗余等价执行体对应的报文序号seq; A3:输入/输出代理利用归一化后的报文序号seq_unif重组新的TCP报文,并发送 给远端服务器; A4:输入/输出代理接收到远端设备返回的TCP确认报文后先对报文进行拆包,随 6 CN 111600836 A 说 明 书 3/8 页 后将拆分获得的确认号ack发送至冗余控制器; A5:冗余控制器利用ack和存储的所有冗余等价执行体的序号seq,计算出所有冗 余等价执行体对应的确认号ack_new,随后将所有ack_new发送至输入/输出代理,并保存 ack记为ack_unif; A6:输入/输出代理利用对应的ack_new为所有冗余等价执行体重组TCP确认报文, 随后将重组后的新确认报文发送至对应的冗余等价执行体; A7:冗余等价执行体同步返回确认报文至输入/输出代理,输入/输出代理将所有 确认报文进行拆包并获得各冗余等价执行体对应的seq、ack及其他数据,随后将对应数据 发送至冗余控制器; A8:冗余控制器判断各冗余等价执行体seq、ack及其他数据是否正确,若至少存在 一个冗余等价执行体对应参数正确,则产生归一化的seq_unif,即seq_unif=ack_unif,并 将seq_unif、ack和裁决结果一起发送至输入/输出代理,输入/输出代理根据seq_unif、ack 和裁决结果重组TCP确认报文并发送给远端TCP连接设备,随后向错误冗余等价执行体发送 错误信息;若所有执行体对应参数都错误,则TCP连接建立过程失败。 所述的数据传输过程在成功完成三次握手的基础上进行,其归一化传输包括如下 步骤: B1:冗余等价执行体同步发送数据长度为L字节的报文至输入/输出代理,输入/输 出代理将TCP数据报文进行拆分并获得各冗余等价执行体此时对应的报文序号seq,随后将 所有序号发送至冗余控制器; B2:冗余控制器判断各冗余等价执行体的seq及其他数据是否正确,若至少存在一 个冗余等价执行体对应参数正确,则产生归一化的seq_unif,即seq_unif=ack_unif,ack_ unif为三次握手步骤A5保存的ack,并将seq_unif返回至输入/输出代理,同时存储所有冗 余等价执行体对应的报文序号seq以及向错误冗余等价执行体发送错误信息;若所有冗余 等价执行体对应参数都错误,则向冗余执行体发送错误信息并请求重发; B3~B6步骤与三次握手的A3~A6相同; B7:冗余等价执行体根据接收报文的确认号判断接下来需要发送的数据字段,随 后重复步骤B1~B6直至数据发送完毕。 所述的四次挥手过程在数据传输完毕后进行,其归一化过程与三次握手类似,包 括C1~C8,其中, C1:冗余等价执行体同步发送释放TCP连接报文至输入/输出代理,输入/输出代理 将TCP连接释放报文进行拆分并获得各冗余执行体此时对应的报文序号seq,随后将所有序 号发送至冗余控制器; C2~C6参照B2~B6,其中C2中的归一化的seq_unif为最后一次数据传输保存确认 报文的确认号,即ack;且C4中远端设备返回的TCP确认报文为两个,对两个确认报文采用相 同的处理方法; C7~C8参照A7~A8,其中C8中若所有执行体对应参数都错误,则TCP连接释放过程 失败。 一种保证冗余执行体TCP连接归一化的方法,该方法基于上述的保证冗余执行体 TCP连接归一化的装置来实现,该装置作为服务器时,冗余执行体TCP连接归一化的过程包 7 CN 111600836 A 说 明 书 4/8 页 括三次握手、数据传输和四次挥手三个阶段; 其中,该装置与远端客户端的三次握手的归一化过程如下: D1:输入/输出代理接收到远端客户端发送的TCP建立连接请求报文后,分别将报 文发送至所有的冗余等价执行体; D2:冗余等价执行体返回确认报文至输入/输出代理,输入/输出代理对报文进行 拆分并获得各冗余执行体对应的报文序号seq和确认号ack,发送至冗余控制器; D3:冗余控制器判断各冗余等价执行体ack是否正确,若正确则计算出归一化的报 文序号seq_unif,然后将seq_unif以及裁决结果发送至输入/输出代理,并保存各冗余执行 体对应的报文序号seq;否则向冗余等价执行体发送错误信息,并请求重发; D4:输入/输出代理利用归一化后的报文序号seq_unif重组新的TCP报文,并发送 给远端客户端; D5:输入/输出代理接收到远端设备返回的TCP确认报文后先对报文进行拆包,随 后将拆分获得的确认号ack发送至冗余控制器; D6:冗余控制器利用ack和存储的所有冗余等价执行体的序号,计算出所有冗余等 价执行体对应的确认号ack_new,随后将它们发送至输入/输出代理,并保存ack记为ack_ unif; D7:输入/输出代理利用每个等价执行体对应的确认号ack_new为对应的冗余等价 执行体重组TCP确认报文,随后将重组后的新确认报文发送至对应的冗余等价执行体。 所述的数据传输过程在成功完成三次握手的基础上进行,其中数据传输过程如 下: E1:输入/输出代理接收到远端客户端发送的数据报文后,将数据报文进行拆分并 获得报文确认号ack并发送至冗余控制器; E2:冗余控制器利用ack和存储的所有冗余等价执行体的序号,计算出所有冗余等 价执行体对应的确认号ack_new,随后将它们发送至输入/输出代理,并保存ack记为ack_ unif; E3:输入/输出代理利用每个等价执行体对应的确认号ack_new为对应的冗余等价 执行体重组数据报文,随后将重组后的数据报文发送至对应的冗余等价执行体。 E4:冗余等价执行体返回确认报文至输入/输出代理,输入/输出代理对报文进行 拆分并获得各冗余执行体对应的报文序号seq和确认号ack,随后发送至冗余控制器; E5:冗余控制器判断各冗余等价执行体的seq和ack是否正确,若至少存在一个冗 余执行体的参数正确,则冗余控制器产生归一化seq_unif=ack_unif返回至输入/输出代 理,并控制输入/输出代理重组该执行体的确认报文作为对外输出,随后向错误执行体返回 错误信息;若所有冗余执行体参数都错误,则向所有执行体返回错误信息请求重发,随后重 复执行E4~E5步骤直至正确。最后,重复E1~E5过程直至数据接收完毕。 该装置作为服务器时,四次挥手的步骤为F1~F7,F1~F7参照D1~D7,其中,远端 客户端发送TCP链接释放报文的序号seq=u,冗余等价执行体返回的确认号ack=u 1;F3过 程中ack_unif为冗余控制器中存储的上一轮远端客户端返回的确认号;F2~F4过程中冗余 等价执行体的第二个确认报文与第一个确认报文处理方法相同,只是第二个确认报文的归 一化seq_unif=ack_unif 1。 8 CN 111600836 A 说 明 书 5/8 页 本发明的有益效果如下: 本发明的保证冗余执行体TCP连接归一化的装置及方法,在冗余等价执行体中同 步运行TCP协议,采用输入/输出代理对TCP报文进行拆分、重组和转发,冗余控制器对拆分 报文中的随机序号进行研判、裁决以及归一化处理。该装置与方法可以保证冗余等价执行 体共享同一条TCP连接,提高通信系统的可靠性和安全性。 附图说明 图1为
分享到:
收藏