CN109413118A - 一种实现会话同步的方法、装置及存储介质、程序产品 - Google Patents
一种实现会话同步的方法、装置及存储介质、程序产品 Download PDFInfo
- Publication number
- CN109413118A CN109413118A CN201710697562.XA CN201710697562A CN109413118A CN 109413118 A CN109413118 A CN 109413118A CN 201710697562 A CN201710697562 A CN 201710697562A CN 109413118 A CN109413118 A CN 109413118A
- Authority
- CN
- China
- Prior art keywords
- session
- data packet
- equipment
- session entry
- stand
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/142—Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
Abstract
本申请公开了实现会话同步的方法,可以提高主设备与备用设备之间同步会话表项的速度,该方法可以应用于主设备,可以包括:检测会话的连接状态,会话具有会话表项;根据会话的连接状态确定需要向备用设备同步的会话表项;从需要向备用设备同步的会话表项中提取数据包基本特征生成会话表项描述符;通过共享内存向备用设备发送会话表项描述符,以使备用设备根据会话表项描述符生成会话表项。本申请还公开了应用于备用设备的实现会话同步的方法以及相关装置、存储介质以及计算机产品。
Description
技术领域
本申请涉及通信技术领域,具体涉及一种实现会话同步的方法、装置及存储介质、程序产品。
背景技术
高可用性集群是指以减少服务中断时间为目的服务器集群技术。高可用性集群系统一般由两个或者更多的设备构成。根据设备的功能不同,高可用性集群系统可以分为主设备和备用设备。一般情况下,由主设备执行系统的服务功能,当主设备因为断电或者其他异常原因无法正常运行时,备用设备检测到后会接手主设备原有的工作,从而实现服务不中断。
对于基于会话表的网络转发设备来说,为了使备用设备在接替主设备工作时网络会话不中断,需要将主设备中的会话表项同步给备用设备。现有技术中,为了提高硬件资源的利用率,可以将网络转发设备以虚拟化方式移植到云平台中,即主网络转发设备以及备用网络转发设备均作为云平台中的虚拟机工作。由于现有技术中云平台中各个虚拟机之间的通讯效率低下,无法满足会话表项同步的需求,经常会造成会话同步不全的情况,进而导致主设备与备用设备切换时,部分会话会存在连接断开的情况。
发明内容
有鉴于此,本申请提供一种实现会话同步的方法、装置及存储介质、程序产品,以解决现有技术中基于云平台的主设备与备用设备之间进行会话同步效率低下的技术问题。
为解决上述问题,本申请提供的技术方案如下:
一种实现会话同步的方法,所述方法应用于主设备,所述方法包括:
检测会话的连接状态,所述会话具有会话表项;
根据所述会话的连接状态确定需要向备用设备同步的会话表项;
从所述需要向备用设备同步的会话表项中提取数据包基本特征生成会话表项描述符;
通过共享内存向所述备用设备发送所述会话表项描述符,以使所述备用设备根据所述会话表项描述符生成会话表项。
可选的,所述检测会话的连接状态,包括:
获取会话当前接收到的数据包的数据属性以及所述会话所属连接协议的状态变迁规则;
根据所述状态变迁规则以及所述当前接收到的数据包的数据属性确定所述会话的连接状态。
可选的,所述根据所述会话的连接状态确定需要向备用设备同步的会话表项,包括:
当所述会话的连接状态为已连接状态,确定需要在备用设备添加所述会话的会话表项;
当所述会话的连接状态为关闭状态,确定需要在所述备用设备中删除所述会话的会话表项。
可选的,所述从所述需要向备用设备同步的会话表项中提取数据包基本特征生成会话表项描述符,包括:
从所述需要向备用设备同步的会话表项中提取第一数据包的数据包基本特征以及第二数据包的数据包基本特征,所述第一数据包是会话发起端发送的数据包,所述第二数据包是会话接受端发送的数据包;
将所述第一数据包的数据包基本特征、所述第二数据包的数据包基本特征以及操作标识组成会话表项描述符;当确定需要在备用设备添加所述会话的会话表项,则所述操作标识为添加会话表项标识,当需要在所述备用设备中删除所述会话的会话表项,则所述操作标识为删除会话表项标识。
一种实现会话同步的方法,所述方法应用于备用设备,所述方法包括:
通过共享内存从主设备接收会话表项描述符,所述主设备用于确定需要向所述备用设备同步的会话表项,从所述需要向备用设备同步的会话表项中提取数据包基本特征生成所述会话表项描述符;
根据所述会话表项描述符生成所述会话表项描述符对应的数据包;
根据所述数据包更新会话表项。
可选的,所述根据所述会话表项描述符生成所述会话表项描述符对应的数据包,包括:
读取所述会话表项描述符中的操作标识,所述操作标识为添加会话表项标识或者删除会话表项标识;
根据所述会话表项描述符中的第一数据包的数据包基本特征生成第一数据包,根据所述会话表项描述符中的第二数据包的数据包基本特征生成第二数据包。
可选的,所述根据所述数据包更新会话表项,包括:
当所述操作标识为添加会话表项标识时,根据所述第一数据包以及所述第二数据包生成会话表项;
当所述操作标识为删除会话表项标识时,根据所述第一数据包以及所述第二数据包查找对应的会话表项,并将查找到的会话标识删除。
一种实现会话同步的装置,所述装置应用于主设备,所述装置包括:
会话状态识别模块,用于检测会话的连接状态,所述会话具有会话表项;
同步决策模块,用于根据所述会话的连接状态确定需要向备用设备同步的会话表项;
同步信息生成模块,用于从所述需要向备用设备同步的会话表项中提取数据包基本特征生成会话表项描述符;
同步信息收发模块,用于通过共享内存向所述备用设备发送所述会话表项描述符,以使所述备用设备根据所述会话表项描述符生成会话表项。
可选的,所述会话状态识别模块具体用于:
获取会话当前接收到的数据包的数据属性以及所述会话所属连接协议的状态变迁规则;
根据所述状态变迁规则以及所述当前接收到的数据包的数据属性确定所述会话的连接状态。
可选的,所述同步决策模块具体用于:
当所述会话的连接状态为已连接状态,确定需要在备用设备添加所述会话的会话表项;
当所述会话的连接状态为关闭状态,确定需要在所述备用设备中删除所述会话的会话表项。
可选的,所述同步信息生成模块具体用于:
从所述需要向备用设备同步的会话表项中提取第一数据包的数据包基本特征以及第二数据包的数据包基本特征,所述第一数据包是会话发起端发送的数据包,所述第二数据包是会话接受端发送的数据包;
将所述第一数据包的数据包基本特征、所述第二数据包的数据包基本特征以及操作标识组成会话表项描述符;当确定需要在备用设备添加所述会话的会话表项,则所述操作标识为添加会话表项标识,当需要在所述备用设备中删除所述会话的会话表项,则所述操作标识为删除会话表项标识。
一种实现会话同步的装置,所述装置应用于备用设备,所述装置包括:
同步信息收发模块,用于通过共享内存从主设备接收会话表项描述符,所述主设备用于确定需要向所述备用设备同步的会话表项,从所述需要向备用设备同步的会话表项中提取数据包基本特征生成所述会话表项描述符;
数据包生成模块,用于根据所述会话表项描述符生成所述会话表项描述符对应的数据包;
会话表项创建模块,用于根据所述数据包更新会话表项。
可选的,所述数据包生成模块具体用于:
读取所述会话表项描述符中的操作标识,所述操作标识为添加会话表项标识或者删除会话表项标识;
根据所述会话表项描述符中的第一数据包的数据包基本特征生成第一数据包,根据所述会话表项描述符中的第二数据包的数据包基本特征生成第二数据包。
可选的,所述会话表项创建模块具体用于:
当所述操作标识为添加会话表项标识时,根据所述第一数据包以及所述第二数据包生成会话表项;
当所述操作标识为删除会话表项标识时,根据所述第一数据包以及所述第二数据包查找对应的会话表项,并将查找到的会话标识删除。
一种计算机可读存储介质,所述机算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行上述第一种或第二种所述的实现会话同步的方法。
一种计算机程序产品,所述计算机程序产品在终端设备上运行时,使得所述终端设备执行上述第一种或第二种所述的实现会话同步的方法。
由此可见,本申请实施例具有如下有益效果:
本申请实施例根据会话的连接状态确定需要向备用设备同步的会话表项,仅同步部分会话表项,减少了会话表项的同步数量;从需要向备用设备同步的会话表项中提取数据包基本特征生成会话表项描述符,仅向备用设备发送会话表项描述符,减少了单个会话表项同步所需的数据量;最后通过共享内存传递会话表项描述符,提高了传输的速度。从而同步会话表项的数据量大幅度减少,数据传输效率明显提升。在实际的云平台应用场景中,有效解决了会话同步不全导致的丢包问题。
附图说明
图1为本申请实施例的应用场景示意图;
图2为本申请实施例中提供的实现会话同步的方法实施例一的流程图;
图3为本申请实施例中提供的实现会话同步的装置实施例一的示意图;
图4为本申请实施例中提供的实现会话同步的方法实施例二的流程图;
图5为本申请实施例中提供的实现会话同步的装置实施例二的示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请实施例作进一步详细的说明。
首先,对本申请实施例的应用场景进行说明。参见图1所示,主设备以及备用设备均为基于会话表的网络转发设备,基于会话表的网络转发设备例如防火墙等网络设备。主设备以及备用设备均可以虚拟化到云平台中实现。例如会话发起端终端A可以通过主设备与会话接受端终端B建立连接,即终端A与终端B之间可以通过会话进行通讯。主设备可以对会话进行管理,每个会话具有会话表项,会话表项中记录有会话的状态信息等相关内容。为了保证主设备在发生故障时可以由备用设备接替主设备的功能,主设备需要和备用设备进行会话同步,本实施例中的会话同步是指将主设备中的会话表项同步到备用设备,以使备用设备根据会话表项继续对当前各个会话进行管理。
经发明人研究发现,在现有技术中造成在云平台等虚拟网络中主设备与备用设备进行会话同步效率低下的主要原因在于:会话表项的数量非常多,对全部会话表项进行同步造成传输压力大;同时,设备间一般采用虚拟网卡通信,虚拟网卡的传输速度慢,无法对大量的会话表项进行传输。因此会造成会话同步不全的情况,进而导致主设备与备用设备切换时,部分会话会存在连接断开的情况。
为此,本申请实施例从至少三个方面提升会话表项的同步效率:首先,筛选会话表项,根据会话的状态确定需要向备用设备同步的会话表项,以减少需要同步的会话表项数量;其次,主设备只向备用设备发送会话表项描述符,会话表项描述符中包括有会话表项的基本特征,由备用设备根据会话表项描述符自行创建会话表项,以减少单个会话表项同步所需的数据量;最后,使用ivshmem技术,主设备和备用设备通过共享内存传递信息,提升数据传输效率。从而达到全面提升会话同步效率的目的。
以下将从主设备以及从设备的角度分别对本申请实施例提供的实现会话同步的方法进行说明。
参见图2所示,示出了本申请实施例中提供的实现会话同步的方法实施例一的流程图,本实施例可以应用于主设备,本实施例可以包括以下步骤:
步骤201:检测会话的连接状态,会话具有会话表项。
会话可以是通信双方建立的连接在网络转发设备上的具体体现,会话的连接状态代表通信双方的连接状态。通信双方可以为会话发起端以及会话接受端,会话发起端可以通过所建立的会话向主设备发送数据包以将数据包发送给会话接受端,会话接受端也可以通过所建立的会话向主设备发送数据包以将数据包发送给会话发起端。
一般来说,在同一会话上传输的数据包可以作为一个整体的数据流看待,通常根据源地址、目的地址、源端口、目的端口、协议类型等等内容可以区分一个会话。每个会话对应有记录该会话相关内容的会话表项。
在本申请实施例中的一些可能的实现方式中,可以获取会话当前接收到的数据包的数据属性以及会话所属连接协议的状态变迁规则;根据状态变迁规则以及当前接收到的数据包的数据属性确定会话的连接状态。
状态变迁规则可以以有限状态机的形式表现,不同的连接协议可以有不同的状态机。状态变迁规则规定了在接收到某种数据属性的数据包时会话的连接状态对应进行何种变化。这样,在获取会话当前接收到的数据包的数据属性后,可以根据状态变迁规则确定当前会话的连接状态。
例如,在TCP(Transmission Control Protocol,传输控制协议)“三次握手”建立连接的过程中,会话发起端发送携带SYN标志的数据包,完成第一次握手,则当前数据包的数据属性为携带SYN标志,根据TCP协议的状态机,会话进入SYN_SENT状态;在连接接受端接收到携带SYN标志的数据包后,可以向连接发起方发送携带ACK标志和SYN标志的数据包完成第二次握手,会话进入SYN_ACKED状态;会话发起端需要再向会话接受端发送携带ACK标识的数据包完成第三次握手,当前数据包的数据属性为携带ACK标识,根据TCP协议的状态机,在接收到携带ACK标志的数据包后,会话进入ESTABLISHED(已连接)状态。
步骤202:根据会话的连接状态确定需要向备用设备同步的会话表项。
在本实施例中,并不对全部的会话表项进行同步,而是在会话状态变迁时,对会话表项进行筛选,仅在会话处于预设的连接状态时,将会话对应的会话表项确定为需要向备用设备同步的会话表项,从而减少需要同步的会话表项数量。
在本申请实施例中的一些可能的实现方式中,步骤102的实现可以为:当会话的连接状态为已连接状态,确定需要在备用设备添加会话的会话表项;当会话的连接状态为关闭状态,确定需要在备用设备中删除会话的会话表项。
对于面向连接的协议,且会话的连接状态为已连接状态,则如果此时主设备与备用设备进行切换,为了保持该会话依然处于已连接状态,则备用设备需要有该会话的会话表项,则会话的连接状态为已连接状态时,可以将该会话的会话表项添加到备用设备。例如经过三次握手后处于ESTABLISHED状态的TCP协议类型的会话,则该会话的会话表项需要添加到备用设备。
而会话的连接状态处于关闭状态,则如果此时主设备与备用设备进行切换,备用设备并不需要再保持该会话,则可以删除备用设备中该会话的会话表项。例如在TCP协议中及经过四次挥手以后的会话进入CLOSED(关闭)状态,则该会话的会话表项需要在备用设备中删除。
步骤203:从需要向备用设备同步的会话表项中提取数据包基本特征生成会话表项描述符。
在本实施例中,在主设备向备用设备同步会话表项的过程中,并不对会话表项的全部内容进行同步,而是先根据需要向备用设备同步的会话表项提取数据包特征生成会话表项描述符,数据包特征为数据包基本特征,则会话表项描述符中仅包括有会话表项的基本特征,由备用设备根据会话表项描述符自行创建会话表项,从而减少了单个会话表项同步所需的数据量。
本步骤的具体实现过程可以参见后续实施例的说明。
步骤204:通过共享内存向备用设备发送会话表项描述符,以使备用设备根据会话表项描述符生成会话表项。
在实施例中,可以使用ivshmem技术在主设备与备用设备之间建立一段共享内存,通过共享内存向备用设备同步会话表项描述符,通过共享内存传递数据的效率有很大提高。
本步骤的具体实现过程可以参见后续实施例的说明。
这样,本申请实施例根据会话的连接状态确定需要向备用设备同步的会话表项,仅同步部分会话表项,减少了会话表项的同步数量;从需要向备用设备同步的会话表项中提取数据包基本特征生成会话表项描述符,仅向备用设备发送会话表项描述符,减少了单个会话表项同步所需的数据量;最后通过共享内存传递会话表项描述符,提高了传输的速度。从而同步会话表项的数据量大幅度减少,数据传输效率明显提升。在实际的云平台应用场景中,有效解决了会话同步不全导致的丢包问题。
另外,在主设备接收数据包后,会进行解封装、查询是否存在数据包对应的会话表项,当接收到一个数据包,查询不到数据包对应的会话表项,则说明该数据包为会话发起端首次发送的数据包,此时还未建立会话。则需要策略匹配、路由计算等过程后,建立会话并生成会话对应的会话表项。
以下再对步骤203从需要向备用设备同步的会话表项中提取数据包基本特征生成会话表项描述符的具体实现过程进行说明,步骤203的具体实现可以包括:
从需要向备用设备同步的会话表项中提取第一数据包的数据包基本特征以及第二数据包的数据包基本特征,第一数据包是会话发起端发送的数据包,第二数据包是会话接受端发送的数据包;
将第一数据包的数据包基本特征、第二数据包的数据包基本特征以及操作标识组成会话表项描述符;当确定需要在备用设备添加会话的会话表项,则操作标识为添加会话表项标识,当需要在备用设备中删除会话的会话表项,则操作标识为删除会话表项标识。
在实际应用中,会话表项描述符的结构可以如下表所示:
Operation |
C_key |
S_key |
其中,Operation代表操作标识,即备用设备所要执行的操作,包括两个选项ADD和DELETE,分别表示添加会话表项标识和删除会话表项标识。当确定需要在备用设备添加会话的会话表项,则操作标识Operation为ADD,当需要在备用设备中删除会话的会话表项,则操作标识Operation为DELETE。
从需要向备用设备同步的会话表项中可以提取到第一数据包的数据包基本特征以及第二数据包的数据包基本特征。
C_key代表第一数据包的数据包基本特征,第一数据包是会话发起端发送的数据包,也称为左包,C_key可以包括源MAC(Medium/Media Access Control,媒体访问控制)地址、目的MAC地址、源IP(Internet Protocol,网络互连协议)地址、目的IP地址、源端口、目的端口和协议类型等信息。
S_key代表第二数据包的数据包基本特征,第二数据包是会话接受端发送的数据包,也称为右包,S_key可以包括源MAC(Medium/Media Access Control,媒体访问控制)地址、目的MAC地址、源IP(Internet Protocol,网络互连协议)地址、目的IP地址、源端口、目的端口和协议类型等信息。
会话表项中包括有C_key、S_key以及其他的与会话相关的数据,由于在具有了C_key、S_key时就可以重建出会话表项,因此可以从会话表项中提取C_key、S_key添加到会话表项描述符中,通过仅传输会话表项描述符达到降低传输数据量的目的。
以下再对步骤204通过共享内存向备用设备发送会话表项描述符的具体实现进行说明。
首先可以基于ivshmem技术,在主设备与备用设备之间建立的一段共享内存。共享内存的表现形式可以为一个虚拟的PCI(Peripheral Component Interconnect,外设组件互连标准)设备。ivshmem技术可以理解为建立虚拟机共享内存的PCI设备。在实际应用中,ivshmem共享内存区域的结构可以如下表所示:
魔数MAGIC_NUM |
第一数据通道 |
第二数据通道 |
数据通道是FIFO(First Input First Output,先入先出)循环队列,队列中的每个元素对应一个会话表项描述符。为了提高数据通道的工作效率,数据通道的长度可以为2的幂指数,这样在FIFO的实现中,可以避免除法运算。
数据通道用于主设备以及备用设备之间的数据传递。由于FIFO是单生产者单消费者队列,只能用于单向通信,因此在本实施例中设计了两个数据通道:在主设备中,第一数据通道为发送通道,第二数据通道为接收通道;在备用设备中,用法相反,即第一数据通道为接收通道,第二数据通道为发送通道。当主设备与备用设备切换时,需要把数据通道中的数据清空后,重新初始化。魔数可以为一预设值,用于判断共享内存区域已经完成初始化。
为了能够使用ivshmem提供的共享内存,需要在主设备以及备用设备操作系统内核中实现PCI设备驱动,主要涉及PCI设备驱动中的三个接口/函数:
(1)init(初始化)接口
init接口在主设备或者备用设备启动时执行一次,步骤如下:
步骤A:激活ivshmem对应的PCI设备;
步骤B:把PCI设备的BAR2寄存器映射到主设备以及备用设备的内核地址空间,该地址空间的起始地址start_addr就是该段共享内存在主设备以及备用设备中的起始地址;
步骤C:判断start_addr指向的魔数是否为预设的魔数MAGIC_NUM,若是则说明该段共享内存区域已经完成初始化,进入步骤D,否则初始化该共享内存区域;
步骤D:创建一个PCI设备,并在主设备以及备用设备的/dev目录下创建对应的设备节点,假设为/dev/mirror。
(2)write(写)函数
判断本机是主设备还是备用设备,找到对应的发送数据通道,并把通过write函数参数传入的数据写入对应的数据通道中。若发送数据通道中数据数量为1,则向PCI设备的doorbell寄存器写入指令,触发对端设备(例如本机为主设备,则对端设备为备用设备,反之亦然)产生中断,即通知对端设备读取数据。在本实施例中,可以利用write函数实现主设备向备用设备传输会话表项描述符。
(3)中断响应函数
判断本机是主设备还是备用设备,找到对应的接收数据通道,并从接收通道读出数据。本函数应循环接收数据,直到接收数据通道为空时为止。在本实施例中,利用中断响应函数备用设备可以读取到会话表项描述符,利用会话表项描述符还愿出会话表项。
则通过以上过程,可以实现通过共享内存向备用设备发送会话表项描述符,通过共享内存进行数据传输的速率有很大提高。
参见图3所示,本申请实施例中还提供相应的实现会话同步的装置实施例一,本实施例可以应用于主设备,本实施例可以包括:
会话状态识别模块303,用于检测会话的连接状态,会话具有会话表项。
在本申请实施例的一些可能的实现方式中,会话状态识别模块303可以具体用于:
获取会话当前接收到的数据包的数据属性以及会话所属连接协议的状态变迁规则;
根据状态变迁规则以及当前接收到的数据包的数据属性确定会话的连接状态。
同步决策模块304,用于根据会话的连接状态确定需要向备用设备同步的会话表项。
在本申请实施例的一些可能的实现方式中,同步决策模块304可以具体用于:
当会话的连接状态为已连接状态,确定需要在备用设备添加会话的会话表项;
当会话的连接状态为关闭状态,确定需要在备用设备中删除会话的会话表项。
同步信息生成模块305,用于从需要向备用设备同步的会话表项中提取数据包基本特征生成会话表项描述符。
在本申请实施例的一些可能的实现方式中,同步信息生成模块305可以具体用于:
从需要向备用设备同步的会话表项中提取第一数据包的数据包基本特征以及第二数据包的数据包基本特征,第一数据包是会话发起端发送的数据包,第二数据包是会话接受端发送的数据包;
将第一数据包的数据包基本特征、第二数据包的数据包基本特征以及操作标识组成会话表项描述符;当确定需要在备用设备添加会话的会话表项,则操作标识为添加会话表项标识,当需要在备用设备中删除会话的会话表项,则操作标识为删除会话表项标识。
同步信息收发模块306,用于通过共享内存向备用设备发送会话表项描述符,以使备用设备根据会话表项描述符生成会话表项。
在本申请实施例的一些可能的实现方式中,还可以包括:
转发模块301,用于接收数据包,查询是否存在数据包对应的会话表项。
会话表项创建模块302,用于当不存在数据包对应的会话表项,根据数据包建立会话并生成会话对应的会话表项。
由于转发模块301以及会话表项创建模块302是实现会话同步的装置实施例中可选的模块,故在图3中以虚线进行表示。
在本实施例中,转发模块在接收到数据包时,需要进行解封装,查询会话表项,从出口转发等工作,转发模块本身并没有创建会话表项的能力,当接收到一个数据包时,如果查不到相应的会话表项,转发模块要把数据包传递给会话表项创建模块,会话表项创建模块进行策略匹配、路由计算等操作后,生成相关会话表项,并将会话表项下发到转发模块,以使转发模块可以查询到会话表项实现数据包转发。
以下再结合实际应用场景以及上述实施例再对本实施例中提供的实现会话同步的方法进行说明,本实施例可以应用于主设备,本实施例可以包括以下步骤:
S1:转发模块接收到会话发起方携带SYN标志的数据包,当不存在该数据包对应的会话表项,转发模块将数据包发送给会话表项创建模块,会话表项创建模块创建会话表项并推送给转发模块。
S2:会话状态识别模块根据当前数据包的数据属性为携带SYN标志,可以识别出该会话处于SYN_SENT状态,经过查询同步决策模块,确定该会话的会话表项不需要同步。
S3:该会话经过TCP协议的“三次握手”,会话状态识别模块识别出该会话处于ESTABLISHED状态,经过查询同步决策模块,确定该会话的会话表项需要同步。
S4:同步信息生成模块生成会话表项描述符d,把d的操作标识填写为ADD,并分别填写C_key和S_key后,通过对/dev/mirror的write操作,将会话表项描述符d提交给同步信息收发模块。
S5:同步信息收发模块将d放入发送数据通道,并触发备用设备产生中断读取会话表项描述符d。
这样,本申请实施例中提供的主设备可以根据会话的连接状态确定需要向备用设备同步的会话表项,仅同步部分会话表项,减少了会话表项的同步数量;从需要向备用设备同步的会话表项中提取数据包基本特征生成会话表项描述符,仅向备用设备发送会话表项描述符,减少了单个会话表项同步所需的数据量;最后通过共享内存传递会话表项描述符,提高了传输的速度。从而同步会话表项的数据量大幅度减少,数据传输效率明显提升。在实际的云平台应用场景中,有效解决了会话同步不全导致的丢包问题。
参见图4所示,示出了本申请实施例中提供的实现会话同步的方法实施例二的流程图,本实施例可以应用于备用设备,本实施例可以包括以下步骤:
步骤401:通过共享内存从主设备接收会话表项描述符,主设备用于确定需要向备用设备同步的会话表项,从需要向备用设备同步的会话表项中提取数据包基本特征生成会话表项描述符。
在本实施例中,备用设备可以从共享内存中读取会话表项描述符,关于共享内存的说明以及主设备生成会话表项描述符的过程可以参见上述实施例,在此不再赘述。
步骤402:根据会话表项描述符生成会话表项描述符对应的数据包。
首先可以解析会话表项描述符中的数据结构,会话表项描述符包括有操作标识、第一数据包的数据包基本特征以及第二数据包的数据包基本特征。然后可以通过从会话表项描述符中解析出的内容生成数据包。
在本申请实施例的一些可能的实现方式中,根据会话表项描述符生成会话表项描述符对应的数据包的具体实现可以包括:
读取会话表项描述符中的操作标识,操作标识为添加会话表项标识或者删除会话表项标识;
根据会话表项描述符中的第一数据包的数据包基本特征生成第一数据包,根据会话表项描述符中的第二数据包的数据包基本特征生成第二数据包。
在本实施例中,获取到第一数据包的数据包基本特征以及第二数据包的数据包基本特征后,可以通过预设的数据包模块生成第一数据包以及第二数据包,从而使备用设备自行同步会话表项。
步骤403:根据数据包更新会话表项。
在本申请实施例的一些可能的实现方式中,根据数据包更新会话表项的具体实现可以包括:
当操作标识为添加会话表项标识时,根据第一数据包以及第二数据包生成会话表项;
当操作标识为删除会话表项标识时,根据第一数据包以及第二数据包查找对应的会话表项,并将查找到的会话标识删除。
这样,本申请实施例备用设备可以通过会话表项描述符生成会话表项,仅传输会话表项描述符减少了单个会话表项同步所需的数据量;同时使用共享内存传递会话表项描述符,提高了传输的速度。从而同步会话表项的数据量大幅度减少,数据传输效率明显提升。在实际的云平台应用场景中,有效解决了会话同步不全导致的丢包问题。
参见图5所示,本申请实施例中还提供相应的实现会话同步的装置实施例二,本实施例可以应用于备用设备,本实施例可以包括:
同步信息收发模块501,用于通过共享内存从主设备接收会话表项描述符,主设备用于确定需要向备用设备同步的会话表项,从需要向备用设备同步的会话表项中提取数据包基本特征生成会话表项描述符。
数据包生成模块502,用于根据会话表项描述符生成会话表项描述符对应的数据包。
在本申请实施例的一些可能的实现方式中,数据包生成模块502可以具体用于:
读取会话表项描述符中的操作标识,操作标识为添加会话表项标识或者删除会话表项标识;
根据会话表项描述符中的第一数据包的数据包基本特征生成第一数据包,根据会话表项描述符中的第二数据包的数据包基本特征生成第二数据包。
会话表项创建模块503,用于根据数据包更新会话表项。
在本申请实施例的一些可能的实现方式中,会话表项创建模块503可以具体用于:
当操作标识为添加会话表项标识时,根据第一数据包以及第二数据包生成会话表项;
当操作标识为删除会话表项标识时,根据第一数据包以及第二数据包查找对应的会话表项,并将查找到的会话标识删除。
另外,本实施例还可以包括转发模块(图中未示出),会话表项创建模块生成会话表项之后,可以将会话表项推送给转发模块,并将该会话表项对应的会话的连接状态修改为ESTABLISHED状态。从而一旦备用设备切换为主设备,备用设备可以立即代替主设备根据最新的会话连接状态完成数据包的转发。
最后,再结合实际应用场景以及上述实施例再对本实施例中提供的实现会话同步的方法进行说明,本实施例可以应用于备用设备。
S6:同步信息收发模块在触发中断响应函数后,从接收数据通道中接收会话表项描述数据结构d。
S7:数据包生成模块定操作标识为添加会话表项标识,并生成第一数据包以及第二数据包,分别将其送入会话表项创建模块。
S8:会话表项创建模块创建会话表项,并推送会话表项给转发模块,将该会话连接状态修改为ESTABLISHED状态。
可以理解的是,在实际应用中,设备可以包括转发模块、会话表项创建模块、会话状态识别模块、同步决策模块、同步信息生成模块、同步信息收发模块以及数据包生成模块。当设备作为主设备时,可以包括转发模块、会话表项创建模块、会话状态识别模块、同步决策模块、同步信息生成模块、同步信息收发模块。当设备作为备用设备时,可以包括转发模块、会话表项创建模块、同步信息收发模块以及数据包生成模块。
另外,本申请实施例中还提供一种计算机可读存储介质实施例,该机算机可读存储介质中可以存储有指令,当该指令在终端设备上运行时,使得终端设备执行本申请实施例中提供的实现会话同步的方法。
本申请实施例中还提供一种计算机程序产品,该计算机程序产品在终端设备上运行时,可以使得终端设备执行本申请实施例中提供的实现会话同步的方法。
需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种实现会话同步的方法,其特征在于,所述方法应用于主设备,所述方法包括:
检测会话的连接状态,所述会话具有会话表项;
根据所述会话的连接状态确定需要向备用设备同步的会话表项;
从所述需要向备用设备同步的会话表项中提取数据包基本特征生成会话表项描述符;
通过共享内存向所述备用设备发送所述会话表项描述符,以使所述备用设备根据所述会话表项描述符生成会话表项。
2.根据权利要求1所述的方法,其特征在于,所述检测会话的连接状态,包括:
获取会话当前接收到的数据包的数据属性以及所述会话所属连接协议的状态变迁规则;
根据所述状态变迁规则以及所述当前接收到的数据包的数据属性确定所述会话的连接状态。
3.根据权利要求1所述的方法,其特征在于,所述根据所述会话的连接状态确定需要向备用设备同步的会话表项,包括:
当所述会话的连接状态为已连接状态,确定需要在备用设备添加所述会话的会话表项;
当所述会话的连接状态为关闭状态,确定需要在所述备用设备中删除所述会话的会话表项。
4.根据权利要求3所述的方法,其特征在于,所述从所述需要向备用设备同步的会话表项中提取数据包基本特征生成会话表项描述符,包括:
从所述需要向备用设备同步的会话表项中提取第一数据包的数据包基本特征以及第二数据包的数据包基本特征,所述第一数据包是会话发起端发送的数据包,所述第二数据包是会话接受端发送的数据包;
将所述第一数据包的数据包基本特征、所述第二数据包的数据包基本特征以及操作标识组成会话表项描述符;当确定需要在备用设备添加所述会话的会话表项,则所述操作标识为添加会话表项标识,当需要在所述备用设备中删除所述会话的会话表项,则所述操作标识为删除会话表项标识。
5.一种实现会话同步的方法,其特征在于,所述方法应用于备用设备,所述方法包括:
通过共享内存从主设备接收会话表项描述符,所述主设备用于确定需要向所述备用设备同步的会话表项,从所述需要向备用设备同步的会话表项中提取数据包基本特征生成所述会话表项描述符;
根据所述会话表项描述符生成所述会话表项描述符对应的数据包;
根据所述数据包更新会话表项。
6.根据权利要求5所述的方法,其特征在于,所述根据所述会话表项描述符生成所述会话表项描述符对应的数据包,包括:
读取所述会话表项描述符中的操作标识,所述操作标识为添加会话表项标识或者删除会话表项标识;
根据所述会话表项描述符中的第一数据包的数据包基本特征生成第一数据包,根据所述会话表项描述符中的第二数据包的数据包基本特征生成第二数据包。
7.根据权利要求6所述的方法,其特征在于,所述根据所述数据包更新会话表项,包括:
当所述操作标识为添加会话表项标识时,根据所述第一数据包以及所述第二数据包生成会话表项;
当所述操作标识为删除会话表项标识时,根据所述第一数据包以及所述第二数据包查找对应的会话表项,并将查找到的会话标识删除。
8.一种实现会话同步的装置,其特征在于,所述装置应用于主设备,所述装置包括:
会话状态识别模块,用于检测会话的连接状态,所述会话具有会话表项;
同步决策模块,用于根据所述会话的连接状态确定需要向备用设备同步的会话表项;
同步信息生成模块,用于从所述需要向备用设备同步的会话表项中提取数据包基本特征生成会话表项描述符;
同步信息收发模块,用于通过共享内存向所述备用设备发送所述会话表项描述符,以使所述备用设备根据所述会话表项描述符生成会话表项。
9.一种计算机可读存储介质,其特征在于,所述机算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行权利要求1-4任一项所述的实现会话同步的方法或者权利要求5-7任一项所述的实现会话同步的方法。
10.一种计算机程序产品,其特征在于,所述计算机程序产品在终端设备上运行时,使得所述终端设备执行权利要求1-4任一项所述的实现会话同步的方法或者权利要求5-7任一项所述的实现会话同步的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710697562.XA CN109413118B (zh) | 2017-08-15 | 2017-08-15 | 一种实现会话同步的方法、装置及存储介质、程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710697562.XA CN109413118B (zh) | 2017-08-15 | 2017-08-15 | 一种实现会话同步的方法、装置及存储介质、程序产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109413118A true CN109413118A (zh) | 2019-03-01 |
CN109413118B CN109413118B (zh) | 2022-05-10 |
Family
ID=65454112
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710697562.XA Active CN109413118B (zh) | 2017-08-15 | 2017-08-15 | 一种实现会话同步的方法、装置及存储介质、程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109413118B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110166562A (zh) * | 2019-05-24 | 2019-08-23 | 东软集团股份有限公司 | 数据同步的方法、装置、存储介质和电子设备 |
CN111224812A (zh) * | 2019-11-06 | 2020-06-02 | 杭州迪普科技股份有限公司 | 网络流量转发方法、装置、电子设备及机器可读存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1764168A (zh) * | 2005-11-16 | 2006-04-26 | 中兴通讯股份有限公司 | 一种网络流数据的传送方法 |
CN101155049A (zh) * | 2006-09-25 | 2008-04-02 | 华为技术有限公司 | 一种消息系统中会话历史处理方法及消息系统 |
CN101702657A (zh) * | 2009-12-04 | 2010-05-05 | 杭州华三通信技术有限公司 | 一种nat业务的热备份方法和设备 |
CN104702684A (zh) * | 2015-03-10 | 2015-06-10 | 杭州华三通信技术有限公司 | 一种数据同步方法和装置 |
CN105338095A (zh) * | 2015-11-17 | 2016-02-17 | 中国建设银行股份有限公司 | 一种会话数据处理方法和装置 |
US20160087938A1 (en) * | 2011-02-16 | 2016-03-24 | Fortinet, Inc. | Load balancing in a network with session information |
CN105472002A (zh) * | 2015-12-09 | 2016-04-06 | 国家电网公司 | 基于集群节点间即时拷贝的会话同步方法 |
CN105591810A (zh) * | 2015-10-22 | 2016-05-18 | 杭州华三通信技术有限公司 | 备份消息发送方法和设备 |
CN106559485A (zh) * | 2016-11-15 | 2017-04-05 | 杭州迪普科技股份有限公司 | 一种控制服务器关机的方法及装置 |
-
2017
- 2017-08-15 CN CN201710697562.XA patent/CN109413118B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1764168A (zh) * | 2005-11-16 | 2006-04-26 | 中兴通讯股份有限公司 | 一种网络流数据的传送方法 |
CN101155049A (zh) * | 2006-09-25 | 2008-04-02 | 华为技术有限公司 | 一种消息系统中会话历史处理方法及消息系统 |
CN101702657A (zh) * | 2009-12-04 | 2010-05-05 | 杭州华三通信技术有限公司 | 一种nat业务的热备份方法和设备 |
US20160087938A1 (en) * | 2011-02-16 | 2016-03-24 | Fortinet, Inc. | Load balancing in a network with session information |
CN104702684A (zh) * | 2015-03-10 | 2015-06-10 | 杭州华三通信技术有限公司 | 一种数据同步方法和装置 |
CN105591810A (zh) * | 2015-10-22 | 2016-05-18 | 杭州华三通信技术有限公司 | 备份消息发送方法和设备 |
CN105338095A (zh) * | 2015-11-17 | 2016-02-17 | 中国建设银行股份有限公司 | 一种会话数据处理方法和装置 |
CN105472002A (zh) * | 2015-12-09 | 2016-04-06 | 国家电网公司 | 基于集群节点间即时拷贝的会话同步方法 |
CN106559485A (zh) * | 2016-11-15 | 2017-04-05 | 杭州迪普科技股份有限公司 | 一种控制服务器关机的方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110166562A (zh) * | 2019-05-24 | 2019-08-23 | 东软集团股份有限公司 | 数据同步的方法、装置、存储介质和电子设备 |
CN111224812A (zh) * | 2019-11-06 | 2020-06-02 | 杭州迪普科技股份有限公司 | 网络流量转发方法、装置、电子设备及机器可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109413118B (zh) | 2022-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI742131B (zh) | 虛擬交換機的升級方法和裝置 | |
CN108173691B (zh) | 一种跨设备聚合的方法及装置 | |
CN110505275A (zh) | 数据传输方法、系统、服务器及计算机可读存储介质 | |
US9983813B2 (en) | Maintenance of a fabric priority during synchronous copy operations | |
CN103139157A (zh) | 一种基于socket的网络通信方法、装置及系统 | |
CN108139936A (zh) | 提供对自部署的虚拟应用中的虚拟机的串行端口的访问的方法、装置和系统 | |
CN103631652A (zh) | 虚拟机迁移的实现方法及系统 | |
CN106464745A (zh) | Dns的服务器、客户端及数据同步方法 | |
CN114500633B (zh) | 数据转发方法、相关装置、程序产品及数据传输系统 | |
CN117061352A (zh) | 多模态虚拟网元的实现方法、装置、设备及介质 | |
CN109413118A (zh) | 一种实现会话同步的方法、装置及存储介质、程序产品 | |
CN110609746B (zh) | 管理网络系统的方法、设备和计算机可读介质 | |
WO2024067529A1 (zh) | 基于rdma的建连方法、装置、设备及存储介质 | |
CN107483628B (zh) | 基于dpdk的单向代理方法及系统 | |
CN107968798A (zh) | 一种网管资源标签获取方法、缓存同步方法、装置及系统 | |
CN110233791A (zh) | 数据去重方法和装置 | |
CN110830477B (zh) | 一种业务的识别方法、装置、网关、系统及存储介质 | |
CN109194738A (zh) | 远程重启方法、路由开发板及硬件底板 | |
CN110572487B (zh) | 一种交换机任意端口虚拟化的方法及系统 | |
CN105187236B (zh) | 一种网络流量迁移的方法 | |
CN105991450A (zh) | Mac地址表更新方法及装置 | |
CN112003731B (zh) | 配置方法及装置 | |
WO2023207278A1 (zh) | 一种报文处理方法及装置 | |
CN112532524B (zh) | 一种报文处理方法及装置 | |
CN111224876B (zh) | 报文的处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |