CN106161110B - 一种网络设备中的数据处理方法及系统 - Google Patents
一种网络设备中的数据处理方法及系统 Download PDFInfo
- Publication number
- CN106161110B CN106161110B CN201610784780.2A CN201610784780A CN106161110B CN 106161110 B CN106161110 B CN 106161110B CN 201610784780 A CN201610784780 A CN 201610784780A CN 106161110 B CN106161110 B CN 106161110B
- Authority
- CN
- China
- Prior art keywords
- data packet
- treatment progress
- data
- shared drive
- drive region
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0813—Configuration setting characterised by the conditions triggering a change of settings
- H04L41/082—Configuration setting characterised by the conditions triggering a change of settings the condition being updates or upgrades of network functionality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- 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/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种网络设备中的数据处理方法及系统,用于避免升级时流量中断,该方法包括:数据包收发进程接收数据包放入第一共享内存区域;第一数据包处理进程从第一共享内存区域获取数据包,根据会话表对数据包进行处理,会话表及需要缓存的数据包保存于第二共享内存区域;第二数据包处理进程启动;第二数据包处理进程将第一共享内存区域及第二共享内存区域映射到自身进程空间;第二数据包处理进程向第一数据包处理进程发送升级通知;第一数据包处理进程收到升级通知后,停止从第一共享内存区域获取数据包,处理完成数据包后向第二数据包处理进程发送处理完成通知,退出进程;第二数据包处理进程收到处理完成通知后,变为第一数据包处理进程。
Description
技术领域
本发明涉及网络设备技术领域,具体涉及一种网络设备中的数据处理方法及系统。
背景技术
网络设备一般根据功能可以划分为控制面以及数据面两部分,其中控制面用于处理网络设备之间的协议包,承担对网络设备配置管理的功能;数据面用于从网络设备的网卡接收发送数据包、解析数据包、根据会话表处理数据包,数据面是网络设备核心的业务逻辑单元。
在数据面软件升级时,数据面进程重启会导致网络设备停止从网卡收发数据包,同时会引起数据面进程的内存中保存的会话表等核心数据结构丢失,进而引起网络流量中断。
在现有技术中,为了避免数据面升级过程中网络流量中断,通常采取双机热备的方法,即在网络中同时接入两台网络设备,一台网络设备为主设备,承担数据包收发、处理等工作,另一台网络设备为备设备,处于休眠状态。在网络通信过程中主设备把会话表同步给备设备,在主设备升级时,备设备迅速接替主设备完成数据包的转发、处理等工作,但是这种方式需要在网络中同时接入两台网络设备,硬件成本较高。
发明内容
有鉴于此,本发明提供一种网络设备中的数据处理方法及系统,以解决现有技术中为避免网络流量中断而造成硬件成本较高的技术问题。
为解决上述问题,本发明提供的技术方案如下:
一种网络设备中的数据处理方法,所述方法应用于网络设备的数据面,所述数据面包括数据包收发进程、第一数据包处理进程、第一共享内存区域以及第二共享内存区域,所述第一共享内存区域被映射到所述数据包收发进程的进程空间以及所述第一数据包处理进程的进程空间,所述第二共享内存区域被映射到所述第一数据包处理进程的进程空间;
所述方法包括:
所述数据包收发进程接收数据包并将所述数据包放入所述第一共享内存区域;
所述第一数据包处理进程从所述第一共享内存区域获取所述数据包,并根据会话表对所述数据包进行处理,所述会话表以及处理后需要缓存的数据包保存于所述第二共享内存区域;
根据网络设备升级程序,第二数据包处理进程启动;
所述第二数据包处理进程将所述第一共享内存区域以及所述第二共享内存区域映射到所述第二数据包处理进程的进程空间;
所述第二数据包处理进程向所述第一数据包处理进程发送升级通知;
所述第一数据包处理进程收到所述升级通知后,停止从所述第一共享内存区域获取所述数据包,在处理完成已经获取的数据包后向所述第二数据包处理进程发送处理完成通知,并退出进程;
所述第二数据包处理进程接收到所述处理完成通知后,变更为所述第一数据包处理进程。
相应的,所述第一共享内存区域包括正向环形缓存队列、反向环形缓存队列以及数据包内存池;
所述数据包收发进程接收数据包并将所述数据包放入所述第一共享内存区域,包括:
所述数据包收发进程接收数据包将所述数据包放入所述数据包内存池,并将所述数据包在所述数据包内存池中的索引放入所述正向环形缓存队列。
相应的,所述第一数据包处理进程从所述第一共享内存区域获取所述数据包,并根据会话表对所述数据包进行处理,包括:
所述第一数据包处理进程根据所述正向环形缓存队列中的所述数据包在所述数据包内存池中的索引获取所述数据包;
所述根据会话表对所述数据包进行处理,将处理后需要丢弃的数据包丢弃,将处理后需要缓存的数据包放入所述第二共享内存区域,将处理后需要发出的数据包放入所述数据包内存池,并将所述需要发出的数据包在所述数据包内存池中的索引放入所述反向环形缓存队列,以使所述数据包收发进程根据所述反向环形缓存队列中的所述需要发出的数据包在所述数据包内存池中的索引获取所述需要发出的数据包进行发送。
相应的,所述方法还包括:
所述第一数据包处理进程每次从所述第一共享内存区域获取一个数据包之后,将正在处理数据包计数器加一,在每次根据会话表对一个数据包进行处理之后,将所述正在处理数据包计数器减一。
相应的,所述在处理完成已经获取的数据包后向所述第二数据包处理进程发送处理完成通知,包括:
在判断所述正在处理数据包计数器为零后向所述第二数据包处理进程发送处理完成通知。
相应的,所述第一共享内存区域的大小根据所述数据包内存池大小、所述正向环形缓存队列大小以及所述反向环形缓存队列大小确定;所述第二共享内存区域的大小根据所述会话表的存储区域大小以及所述数据包缓存区大小确定。
一种网络设备中的数据处理系统,所述系统包括:
数据包收发进程、第一数据包处理进程、第一共享内存区域以及第二共享内存区域,所述第一共享内存区域被映射到所述数据包收发进程的进程空间以及所述第一数据包处理进程的进程空间,所述第二共享内存区域被映射到所述第一数据包处理进程的进程空间;
所述数据包收发进程,用于接收数据包并将所述数据包放入所述第一共享内存区域;
所述第一数据包处理进程,用于从所述第一共享内存区域获取所述数据包,并根据会话表对所述数据包进行处理;
所述第二共享内存区域,用于保存所述会话表以及处理后需要缓存的数据包;
所述系统还包括第二数据包处理进程,所述第二数据包处理进程是根据网络设备升级程序启动的,所述第一共享内存区域以及所述第二共享内存区域被映射到所述第二数据包处理进程的进程空间;
所述第二数据包处理进程,用于向所述第一数据包处理进程发送升级通知;
所述第一数据包处理进程,还用于收到所述升级通知后,停止从所述第一共享内存区域获取所述数据包,在处理完成已经获取的数据包后向所述第二数据包处理进程发送处理完成通知,并退出进程;
所述第二数据包处理进程,还用于接收到所述处理完成通知后,变更为所述第一数据包处理进程。
相应的,所述第一共享内存区域包括正向环形缓存队列、反向环形缓存队列以及数据包内存池;
所述数据包内存池,用于保存所述数据包收发进程接收的数据包,以及保存所述数据包处理进程需要发出的数据包;
所述正向环形缓存队列,用于保存所述数据包在所述数据包内存池中的索引;
所述正向环形缓存队列,用于保存所述需要发出的数据包在所述数据包内存池中的索引。
相应的,所述第一数据包处理进程中包括正在处理数据包计数器;
所述正在处理数据包计数器,用于在所述第一数据包处理进程每次从所述第一共享内存区域获取一个数据包之后加一,在每次根据会话表对一个数据包进行处理之后减一。
相应的,所述第一共享内存区域的大小根据所述数据包内存池大小、所述正向环形缓存队列大小以及所述反向环形缓存队列大小确定;所述第二共享内存区域的大小根据所述会话表的存储区域大小以及所述数据包缓存区大小确定。
由此可见,本发明实施例具有如下有益效果:
本发明实施例在网络设备数据面建立数据包收发进程以及数据包处理进程,由于数据包收发进程功能简单无需升级,在网络设备软件升级时只需对数据包处理进程进行更新,在更新时启动新的数据包处理进程,第一共享内存区域和第二共享内存区域均映射到新的数据包处理进程,此时数据包收发进程没有停止接收数据包,接收到的数据包正常放入第一共享内存区域,因此不会丢包,原数据包处理进程在将已经获取的数据包处理完成后退出进程,由新的数据包处理进程接替原数据包处理进程工作,由于会话表和数据包缓存区位于第二共享内存区域内,所以新的数据包处理进程可以接管原数据包处理进程的会话表以及缓存的数据包,会话表和缓存的数据包都不会丢失,实现数据面升级过程中网络流量不中断,且不需要另外的网络设备,节约了硬件成本。
附图说明
图1为本发明实施例中提供的数据面结构示意图;
图2为本发明实施例中提供的数据面初始化过程的流程图;
图3为本发明实施例中提供的网络设备中的数据处理方法实施例的流程图;
图4为本发明实施例中提供的数据面通信及数据处理过程的流程图;
图5为本发明实施例中提供的数据面软件升级过程的流程图;
图6为本发明实施例中提供的网络设备中的数据处理系统实施例的示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明实施例作进一步详细的说明。
本发明实施例中提供的网络设备中的数据处理方法,可以应用于网络设备的数据面,首先对本发明实施例中网络设备的数据面结构进行说明,参见图1所示,
数据面可以包括数据包收发进程101、第一数据包处理进程102、第一共享内存区域103以及第二共享内存区域104,第一共享内存区域被映射到数据包收发进程的进程空间以及第一数据包处理进程的进程空间,第二共享内存区域被映射到第一数据包处理进程的进程空间。
在本发明的一些可能的实现方式中,第一共享内存区域可以包括正向环形缓存队列、反向环形缓存队列以及数据包内存池;第二共享内存区域可以包括会话表的存储区域以及数据包缓存区。
参见图2所示,是本实施例中数据面的初始化过程的流程图,数据面的初始化过程可以包括以下步骤:
步骤201:数据包收发进程启动。
步骤202:数据包收发进程创建第一共享内存区域,并将第一共享内存区域映射到自身的进程空间。
步骤203:数据包收发进程在第一共享内存区域中建立数据包内存池、正向环形缓冲队列以及反向环形缓冲队列等数据结构。
步骤204:第一数据包处理进程启动。
步骤205:第一数据包处理进程创建第二共享内存区域,并将第二共享内存区域映射到自身的进程空间。
步骤206:第一数据包处理进程在第二共享内存区域中创建会话表的存储区域以及数据包缓存区等数据结构。
步骤207:第一数据包处理进程将第一共享内存区域映射到自身的进程空间。
步骤208:第一数据包处理进程向数据包收发进程发送初始化完成的消息。
步骤209:数据包收发进程开始接收数据包,数据面初始化阶段结束。
在网络设备数据面初始化结束后,数据面开始工作并可以在需要时进行软件升级,这样,参见图3所示,示出了本发明实施例中网络设备中的数据处理方法实施例,对网络设备通信过程以及升级过程进行说明。
步骤301:数据包收发进程接收数据包并将数据包放入第一共享内存区域。
具体的,在本发明一些可能的实现方式中,数据包收发进程可以接收数据包将数据包放入数据包内存池,并将数据包在数据包内存池中的索引放入正向环形缓存队列。
在本发明实施例中,数据包收发进程可以用于收发数据包,在实际应用中,其内部可以包含两类线程:一类是接收数据包线程,用于从网络设备的网卡硬件中接收数据包,接收到数据包后,将数据包放入数据包内存池,并将数据包在数据包内存池中的索引放入正向环形缓存队列,等待数据包处理进程接收;另一类是发送数据包线程,在数据包处理进程把处理完成后需要发出的数据包放入数据包内存池并将需要发出的数据包在数据包内存池中的索引放入反向环形缓存队列之后,根据反向环形缓存队列中的索引,获取需要发出的数据包,根据需要发出的数据包上标记的出口信息,将需要发出的数据包从指定网卡出口发出。由于数据收发进程功能简单,因此无需对其进行升级。
第一共享内存区域可以用于建立数据包内存池、正向环形缓冲队列以及反向环形缓冲队列。其中,数据包内存池是数据包的存储空间,在数据包收发进程从接收到一个数据包时,从数据包内存池中申请一个数据结构用于存储数据包,由于数据包内存池建立在第一共享内存区域中,因此数据包处理进程可以通过内存地址直接访问数据包而无需进行数据拷贝。正反向环形缓冲队列是多线程读写安全的先入先出队列,是一种无锁数据结构,即数据包收发进程以及数据包处理进程可以同时读写队列中的数据,正反向环形缓冲队列可以用于进程间通信以及缓存数据包在数据包内存池中的索引,该索引可以为内存地址。
第一共享内存区域由数据收发进程在初始化阶段创建,在本发明的一些可能的实现方式中,第一共享内存区域的大小可以根据数据包内存池大小、正向环形缓存队列大小以及反向环形缓存队列大小确定。
在实际应用中,第一共享内存区域的大小M计算公式如下:M=Mmempool+2*Mring,其中,Mmempool为数据包内存池大小,Mring为正向环形缓存队列或者反向环形缓存队列大小。
Mmempool可以根据完成一次升级所需缓存的数据包大小的估计值与数据包处理进程缓存数据包大小的最大值之和确定。
例如,其中,T为网络设备整机吞吐量,可以在设备出厂时预设,表示单位时间网络设备接收数据包的最大数量,t为数据面完成一次升级的历史经验时间,可以在设备出厂时预设,s为存储一个数据包所需的内存空间大小,可以在设备出厂时预设,α、β、γ表示网络设备运行的网络中,小数据包、中数据包、大数据包的预估比例,可以在网络设备使用时被配置,其中α+β+γ=100%,Buffer_size为数据包处理进程最多可能缓存的数据包数量,可以在设备出厂时预设,式中64表示小数据包的大小,512表示中数据包的大小,1518表示大数据包的大小,单位可以为字节,120%则为冗余系数,需要说明的是,小数据包的大小、中数据包的大小、大数据包的大小、冗余系数均可以根据实际情况设定,式中仅为示例,本发明对此不进行限定。
Mring可以根据完成一次升级所需缓存的数据包的索引大小估计值确定。
其中,T为网络设备整机吞吐量,可以在设备出厂时预设,表示单位时间网络设备接收数据包的最大数量,t为数据面完成一次升级的历史经验时间,可以在设备出厂时预设,W表示存储一个数据包的内存地址所占用的存储空间长度,α、β、γ表示网络设备运行的网络中,小数据包、中数据包、大数据包的预估比例,可以在网络设备使用时被配置,其中α+β+γ=100%,式中64表示小数据包的大小,512表示中数据包的大小,1518表示大数据包的大小,单位可以为字节,120%则为冗余系数,需要说明的是,小数据包的大小、中数据包的大小、大数据包的大小、冗余系数均可以根据实际情况设定,式中仅为示例,本发明对此不进行限定。
步骤302:第一数据包处理进程从第一共享内存区域获取数据包,并根据会话表对数据包进行处理,会话表以及处理后需要缓存的数据包保存于第二共享内存区域。
第一数据包处理进程可以表示软件升级之前正在工作的数据包处理进程,即原数据包处理进程,后续步骤中启动的第二数据包处理进程可以表示升级之后的数据包处理进程,即新数据包处理进程。
数据包处理进程承担除从网卡收发数据包以外数据面的全部功能,数据包处理进程在数据包收发进程启动完成以后开始初始化过程,并将第一共享内存区域映射到自身的进程空间中,之后创建第二共享内存区域。
数据包处理进程通过轮询的方式从正向环形缓冲队列中收取数据包在数据包内存池中的索引以获取数据包,在实际应用中,数据包处理进程中可以维护一个正在处理数据包计数器count,当收到一个数据包时,count+1,接着,解析数据包,查询会话表,跟根据会话表处理数据包,当数据包处理结束后,将count-1。处理后的数据包可能有三种结果:(1)丢弃;(2)发包:将出口信息标记在需要发出的数据包上,并将该数据包放入数据包内存池,将该数据包在数据包内存池中的索引放入反向环形缓冲队列中,等待数据包收发进程将该数据包从指定网卡发出;(3)缓存:将需要缓存的数据包缓存在第二共享内存区域中的数据包缓存区,缓存结束后,该数据包重新交给数据包处理进程继续处理,这种情况下,也要将count+1,直到该数据包再次处理结束后,count–1。
第二共享内存区域由数据包处理进程在初始化时创建,是会话表和数据包缓存区的存储空间。在本发明的一些可能的实现方式中,第二共享内存区域的大小可以根据会话表的存储区域大小以及数据包缓存区大小确定。
在实际应用中,第一共享内存区域的大小M2计算公式如下:M2=Ssession*c+Buffer_size*s,其中,c会话最大并发数量,可以在设备出厂时预设,Ssession为一个会话表项可能占用的最大存储空间,Buffer_size为数据包处理进程最多可能缓存的数据包数量,可以在设备出厂时预设,s为存储一个数据包所需的内存空间大小。
根据以上说明,在本发明的一些可能的实现方式中,第一数据包处理进程从第一共享内存区域获取数据包,并根据会话表对数据包进行处理的具体实现可以包括:
第一数据包处理进程根据正向环形缓存队列中的数据包在数据包内存池中的索引获取数据包;
根据会话表对数据包进行处理,将处理后需要丢弃的数据包丢弃,将处理后需要缓存的数据包放入第二共享内存区域,将处理后需要发出的数据包放入数据包内存池,并将需要发出的数据包在数据包内存池中的索引放入反向环形缓存队列,以使数据包收发进程根据反向环形缓存队列中的需要发出的数据包在数据包内存池中的索引获取需要发出的数据包进行发送。
第一数据包处理进程每次从第一共享内存区域获取一个数据包之后,将正在处理数据包计数器加一,在每次根据会话表对一个数据包进行处理之后,将正在处理数据包计数器减一。
步骤303:根据网络设备升级程序,第二数据包处理进程启动。
网络设备可以获得升级程序,将升级程序载入网络设备内存执行,可以实现更新后的第二数据包处理进程启动。
步骤304:第二数据包处理进程将第一共享内存区域以及第二共享内存区域映射到第二数据包处理进程的进程空间。
步骤305:第二数据包处理进程向第一数据包处理进程发送升级通知。
第二数据包处理进程通知第一数据包处理进程需要进行升级,此时数据包收发进程没有停止从网卡接收数据包,接收到的数据包正常送入第一共享内存区域,因此在这个过程中不会产生丢包。
步骤306:第一数据包处理进程收到升级通知后,停止从第一共享内存区域获取数据包,在处理完成已经获取的数据包后向第二数据包处理进程发送处理完成通知,并退出进程。
在本发明的一些可能的实现方式中,可以通过判断正在处理数据包计数器为零后确定处理完成已经获取的数据包,向第二数据包处理进程发送处理完成通知。
步骤307:第二数据包处理进程接收到处理完成通知后,变更为第一数据包处理进程。
在第一数据包处理进程处理完已经接收到的数据后,就可以由第二数据包处理进程接替第一数据包处理进程的工作,完成数据包处理的各项工作,由于会话表和数据包缓冲区位于第二共享内存区域内,所以第二数据包处理进程可以接管第一数据包处理进程的会话表及缓存的数据包,会话表和数据包都未丢失,流量也不会中断。
基于以上实施例,再说明在实际应用中,实现共享内存区域的创建与映射的过程,可以包括以下步骤:
步骤一:共享内存区域的建立者在操作系统的大页(hugepage)上,创建一个大小为m的文件file(其中m为共享内存区域的大小),并通过mmap系统调用将file映射到自身的进程空间中。这里选择在大页上建立文件,是因为大页内存不会交换到swap空间中,可以显著降低缺页、TLB miss等产生的访存开销。
步骤二:共享内存区域的建立者将file的文件名、绝对路径以及mmap的返回值addr保存在配置文件中,其中mmap的返回值就是共享内存区域在其建立者进程空间中的起始地址。
步骤三:共享内存区域的使用者读取配置文件,将file通过mmap系统调用映射到自身的进程空间。其中mmap的第一个参数指定为addr。这样,在共享内存区域的建立者进程和使用者进程的进程空间中,共享内存区域具有相同的起始地址,共享内存区域的建立者进程和使用者进程可以通过相同的地址访问共享内存区域上的数据而无需地址转换。
为便于理解,参见图4所示,以一个数据包的处理流程为例,说明在实际应用中本发明实施例各进程之间的通信与处理流程,可以包括以下步骤:
步骤401:数据包收发进程从网卡A收到一个数据包pkt。
步骤402:数据包收发进程将pkt放入数据包内存池,将pkt在数据包内存池的索引放入正向环形缓冲队列。
步骤403:第一数据包处理进程从正向环形缓冲队列获取索引并从数据包内存池收取pkt,将count+1。
步骤404:第一数据包处理进程解析数据包,并查询会话表。
步骤405:第一数据包处理进程根据会话表对pkt做安全检查。
步骤406:第一数据包处理进程根据会话表,决定将pkt从网卡B发出,将出口信息标记到pkt中,并将其放入数据包内存池将pkt在数据包内存池的索引放入反向环形缓冲队列,同时count–1。
步骤407:数据包收发进程从反向环形缓冲队列获取索引从数据包内存池收取到pkt,将其从网卡B发出。
最后,参见图5所示,说明在实际应用中网络设备数据面软件升级流程,可以包括以下步骤:
步骤501:网络设备向升级服务器发送硬件型号以及当前软件版本号,请求升级。
步骤502:升级服务器检索升级包知识库,查询是否有可用升级包,如果有,则将升级包的URL(Uniform Resource Locator,统一资源定位符)返回给网络设备。
步骤503:网络设备通过支持断点续传的传输协议下载升级包,并解包,校验升级包的数字签名是否合法,如果不合法则结束升级流程,如果合法进入步骤504。
步骤504:将升级包内的二进制升级程序存放在网络设备的程序存储空间。
步骤505:将二进制升级程序载入内存,创建第二数据包处理进程。
步骤506:第二数据包处理进程读取配置文件,分别将第一共享内存区域和第二共享内存区域映射进自身的进程空间。
步骤507:第二数据包处理进程给第一数据包处理进程发送消息,通知第一数据包处理进程开始升级。此时数据收发进程并没有停止从网卡收包,收到的数据包照常送入正向环形缓冲区中,因此不会丢包。
步骤508:第一数据包处理进程收到开始升级的消息后,停止根据正向环形缓冲区收取数据包,并继续处理已经接收的数据包,直到计数器count为0时为止。
步骤509:第一数据包处理进程给第二数据包处理进程发送消息,通知第二数据包处理进程已完成升级逻辑,并退出进程。
步骤510:第二数据包处理进程接替第一数据包处理进程,完成数据包处理的各项工作。由于会话表和数据包缓冲区位于第二共享内存区域内,所以新数据包处理进程可以接管原数据包处理进程的会话表及缓存的数据包,会话表和数据包都未丢失,流量也不会中断。
这样,本发明实施例在网络设备数据面建立数据包收发进程以及数据包处理进程,由于数据包收发进程功能简单无需升级,在网络设备软件升级时只需对数据包处理进程进行更新,在更新时启动新的数据包处理进程,第一共享内存区域和第二共享内存区域均映射到新的数据包处理进程,此时数据包收发进程没有停止接收数据包,接收到的数据包正常放入第一共享内存区域,因此不会丢包,原数据包处理进程在将已经获取的数据包处理完成后退出进程,由新的数据包处理进程接替原数据包处理进程工作,由于会话表和数据包缓存区位于第二共享内存区域内,所以新的数据包处理进程可以接管原数据包处理进程的会话表以及缓存的数据包,会话表和缓存的数据包都不会丢失,实现数据面升级过程中网络流量不中断,且不需要另外的网络设备,节约了硬件成本。
相应的,参见图6所示,本发明实施例中提供的一种网络设备中的数据处理系统实施例,可以包括:
数据包收发进程601、第一数据包处理进程602、第一共享内存区域603以及第二共享内存区域604,第一共享内存区域被映射到数据包收发进程的进程空间以及第一数据包处理进程的进程空间,第二共享内存区域被映射到第一数据包处理进程的进程空间。
数据包收发进程,用于接收数据包并将数据包放入第一共享内存区域。
第一数据包处理进程,用于从第一共享内存区域获取数据包,并根据会话表对数据包进行处理。
第二共享内存区域,用于保存会话表以及处理后需要缓存的数据包。
系统还包括第二数据包处理进程,第二数据包处理进程是根据网络设备升级程序启动的,第一共享内存区域以及第二共享内存区域被映射到第二数据包处理进程的进程空间。
第二数据包处理进程,用于向第一数据包处理进程发送升级通知。
第一数据包处理进程,还用于收到升级通知后,停止从第一共享内存区域获取数据包,在处理完成已经获取的数据包后向第二数据包处理进程发送处理完成通知,并退出进程。
第二数据包处理进程,还用于接收到处理完成通知后,变更为第一数据包处理进程。
在本发明一些可能的实现方式中,第一共享内存区域可以包括正向环形缓存队列、反向环形缓存队列以及数据包内存池;
数据包内存池,用于保存数据包收发进程接收的数据包,以及保存数据包处理进程需要发出的数据包;
正向环形缓存队列,用于保存数据包在数据包内存池中的索引;
正向环形缓存队列,用于保存需要发出的数据包在数据包内存池中的索引。
在本发明一些可能的实现方式中,第一数据包处理进程中可以包括正在处理数据包计数器;
正在处理数据包计数器,用于在第一数据包处理进程每次从第一共享内存区域获取一个数据包之后加一,在每次根据会话表对一个数据包进行处理之后减一。
在本发明一些可能的实现方式中,第一共享内存区域的大小根据数据包内存池大小、正向环形缓存队列大小以及反向环形缓存队列大小确定;第二共享内存区域的大小根据会话表的存储区域大小以及数据包缓存区大小确定。
这样,本发明实施例在网络设备数据面建立数据包收发进程以及数据包处理进程,由于数据包收发进程功能简单无需升级,在网络设备软件升级时只需对数据包处理进程进行更新,在更新时启动新的数据包处理进程,第一共享内存区域和第二共享内存区域均映射到新的数据包处理进程,此时数据包收发进程没有停止接收数据包,接收到的数据包正常放入第一共享内存区域,因此不会丢包,原数据包处理进程在将已经获取的数据包处理完成后退出进程,由新的数据包处理进程接替原数据包处理进程工作,由于会话表和数据包缓存区位于第二共享内存区域内,所以新的数据包处理进程可以接管原数据包处理进程的会话表以及缓存的数据包,会话表和缓存的数据包都不会丢失,实现数据面升级过程中网络流量不中断,且不需要另外的网络设备,节约了硬件成本。
需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种网络设备中的数据处理方法,其特征在于,所述方法应用于网络设备的数据面,所述数据面包括数据包收发进程、第一数据包处理进程、第一共享内存区域以及第二共享内存区域,所述第一共享内存区域被映射到所述数据包收发进程的进程空间以及所述第一数据包处理进程的进程空间,所述第二共享内存区域被映射到所述第一数据包处理进程的进程空间;
所述方法包括:
所述数据包收发进程接收数据包并将所述数据包放入所述第一共享内存区域;
所述第一数据包处理进程从所述第一共享内存区域获取所述数据包,并根据会话表对所述数据包进行处理,所述会话表以及处理后需要缓存的数据包保存于所述第二共享内存区域;
根据网络设备升级程序,第二数据包处理进程启动;
所述第二数据包处理进程将所述第一共享内存区域以及所述第二共享内存区域映射到所述第二数据包处理进程的进程空间;
所述第二数据包处理进程向所述第一数据包处理进程发送升级通知;
所述第一数据包处理进程收到所述升级通知后,停止从所述第一共享内存区域获取所述数据包,在处理完成已经获取的数据包后向所述第二数据包处理进程发送处理完成通知,并退出进程;
所述第二数据包处理进程接收到所述处理完成通知后,变更为所述第一数据包处理进程。
2.根据权利要求1所述的方法,其特征在于,所述第一共享内存区域包括正向环形缓存队列、反向环形缓存队列以及数据包内存池;
所述数据包收发进程接收数据包并将所述数据包放入所述第一共享内存区域,包括:
所述数据包收发进程接收数据包将所述数据包放入所述数据包内存池,并将所述数据包在所述数据包内存池中的索引放入所述正向环形缓存队列。
3.根据权利要求2所述的方法,其特征在于,所述第一数据包处理进程从所述第一共享内存区域获取所述数据包,并根据会话表对所述数据包进行处理,包括:
所述第一数据包处理进程根据所述正向环形缓存队列中的所述数据包在所述数据包内存池中的索引获取所述数据包;
所述根据会话表对所述数据包进行处理,将处理后需要丢弃的数据包丢弃,将处理后需要缓存的数据包放入所述第二共享内存区域,将处理后需要发出的数据包放入所述数据包内存池,并将所述需要发出的数据包在所述数据包内存池中的索引放入所述反向环形缓存队列,以使所述数据包收发进程根据所述反向环形缓存队列中的所述需要发出的数据包在所述数据包内存池中的索引获取所述需要发出的数据包进行发送。
4.根据权利要求1或3所述的方法,其特征在于,所述方法还包括:
所述第一数据包处理进程每次从所述第一共享内存区域获取一个数据包之后,将正在处理数据包计数器加一,在每次根据会话表对一个数据包进行处理之后,将所述正在处理数据包计数器减一。
5.根据权利要求4所述的方法,其特征在于,所述在处理完成已经获取的数据包后向所述第二数据包处理进程发送处理完成通知,包括:
在判断所述正在处理数据包计数器为零后向所述第二数据包处理进程发送处理完成通知。
6.根据权利要求2所述的方法,其特征在于,所述第一共享内存区域的大小根据所述数据包内存池大小、所述正向环形缓存队列大小以及所述反向环形缓存队列大小确定;所述第二共享内存区域的大小根据所述会话表的存储区域大小以及所述数据包缓存区大小确定。
7.一种网络设备中的数据处理系统,其特征在于,所述系统包括:
数据包收发进程、第一数据包处理进程、第一共享内存区域以及第二共享内存区域,所述第一共享内存区域被映射到所述数据包收发进程的进程空间以及所述第一数据包处理进程的进程空间,所述第二共享内存区域被映射到所述第一数据包处理进程的进程空间;
所述数据包收发进程,用于接收数据包并将所述数据包放入所述第一共享内存区域;
所述第一数据包处理进程,用于从所述第一共享内存区域获取所述数据包,并根据会话表对所述数据包进行处理;
所述第二共享内存区域,用于保存所述会话表以及处理后需要缓存的数据包;
所述系统还包括第二数据包处理进程,所述第二数据包处理进程是根据网络设备升级程序启动的,所述第一共享内存区域以及所述第二共享内存区域被映射到所述第二数据包处理进程的进程空间;
所述第二数据包处理进程,用于向所述第一数据包处理进程发送升级通知;
所述第一数据包处理进程,还用于收到所述升级通知后,停止从所述第一共享内存区域获取所述数据包,在处理完成已经获取的数据包后向所述第二数据包处理进程发送处理完成通知,并退出进程;
所述第二数据包处理进程,还用于接收到所述处理完成通知后,变更为所述第一数据包处理进程。
8.根据权利要求7所述的系统,其特征在于,所述第一共享内存区域包括正向环形缓存队列、反向环形缓存队列以及数据包内存池;
所述数据包内存池,用于保存所述数据包收发进程接收的数据包,以及保存所述数据包处理进程需要发出的数据包;
所述正向环形缓存队列,用于保存所述数据包在所述数据包内存池中的索引;
所述正向环形缓存队列,用于保存所述需要发出的数据包在所述数据包内存池中的索引。
9.根据权利要求7所述的系统,其特征在于,所述第一数据包处理进程中包括正在处理数据包计数器;
所述正在处理数据包计数器,用于在所述第一数据包处理进程每次从所述第一共享内存区域获取一个数据包之后加一,在每次根据会话表对一个数据包进行处理之后减一。
10.根据权利要求8所述的系统,其特征在于,所述第一共享内存区域的大小根据所述数据包内存池大小、所述正向环形缓存队列大小以及所述反向环形缓存队列大小确定;所述第二共享内存区域的大小根据所述会话表的存储区域大小以及所述数据包缓存区大小确定。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610784780.2A CN106161110B (zh) | 2016-08-31 | 2016-08-31 | 一种网络设备中的数据处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610784780.2A CN106161110B (zh) | 2016-08-31 | 2016-08-31 | 一种网络设备中的数据处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106161110A CN106161110A (zh) | 2016-11-23 |
CN106161110B true CN106161110B (zh) | 2019-05-17 |
Family
ID=57344264
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610784780.2A Active CN106161110B (zh) | 2016-08-31 | 2016-08-31 | 一种网络设备中的数据处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106161110B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108243118B (zh) * | 2016-12-27 | 2020-06-26 | 华为技术有限公司 | 转发报文的方法和物理主机 |
US11243790B2 (en) * | 2017-09-20 | 2022-02-08 | Huawei Technologies Co., Ltd. | Re-playable execution optimized for page sharing in a managed runtime environment |
US10474568B2 (en) | 2017-09-20 | 2019-11-12 | Huawei Technologies Co., Ltd. | Re-playable execution optimized for page sharing in a managed runtime environment |
CN107678835B (zh) * | 2017-09-30 | 2020-05-08 | 东软集团股份有限公司 | 一种数据传输方法及系统 |
CN108712298B (zh) * | 2018-08-28 | 2021-08-13 | 深信服科技股份有限公司 | 网络设备升级方法、装置、网络设备及存储介质 |
CN111464860B (zh) * | 2019-01-18 | 2021-06-08 | 中国科学院声学研究所 | 一种视频数据的缓存分配方法 |
CN109921929B (zh) * | 2019-02-27 | 2022-04-29 | 深信服科技股份有限公司 | 一种网络升级方法、装置、设备及介质 |
CN111600832B (zh) * | 2019-07-25 | 2022-09-30 | 新华三技术有限公司 | 报文处理方法及装置 |
CN112995261A (zh) * | 2019-12-17 | 2021-06-18 | 中兴通讯股份有限公司 | 业务表的配置方法、装置、网络设备和存储介质 |
CN113157467B (zh) * | 2021-05-07 | 2023-07-04 | 瑞斯康达科技发展股份有限公司 | 一种多进程数据输出方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1545216A (zh) * | 2003-11-20 | 2004-11-10 | 中兴通讯股份有限公司 | 网络处理器中核心处理器与微引擎之间的通信方法 |
CN101140549A (zh) * | 2006-09-07 | 2008-03-12 | 中兴通讯股份有限公司 | 核心处理器与微引擎的上报、下发及内存控制通信方法 |
CN102823207A (zh) * | 2012-05-18 | 2012-12-12 | 华为技术有限公司 | 一种数据包的转发方法和设备 |
CN103064711A (zh) * | 2012-12-27 | 2013-04-24 | 北京思特奇信息技术股份有限公司 | 一种基于Spread分布式应用系统的热加载方法 |
CN103391256A (zh) * | 2013-07-25 | 2013-11-13 | 武汉邮电科学研究院 | 一种基于Linux系统的基站用户面数据处理优化方法 |
CN103441831A (zh) * | 2013-08-22 | 2013-12-11 | 焦点科技股份有限公司 | 一种双进程间的全双工通信及互保方法和系统 |
EP2802109A1 (en) * | 2013-05-10 | 2014-11-12 | Arista Networks, Inc. | System and method of a shared memory hash table with notifications |
-
2016
- 2016-08-31 CN CN201610784780.2A patent/CN106161110B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1545216A (zh) * | 2003-11-20 | 2004-11-10 | 中兴通讯股份有限公司 | 网络处理器中核心处理器与微引擎之间的通信方法 |
CN101140549A (zh) * | 2006-09-07 | 2008-03-12 | 中兴通讯股份有限公司 | 核心处理器与微引擎的上报、下发及内存控制通信方法 |
CN102823207A (zh) * | 2012-05-18 | 2012-12-12 | 华为技术有限公司 | 一种数据包的转发方法和设备 |
CN103064711A (zh) * | 2012-12-27 | 2013-04-24 | 北京思特奇信息技术股份有限公司 | 一种基于Spread分布式应用系统的热加载方法 |
EP2802109A1 (en) * | 2013-05-10 | 2014-11-12 | Arista Networks, Inc. | System and method of a shared memory hash table with notifications |
CN103391256A (zh) * | 2013-07-25 | 2013-11-13 | 武汉邮电科学研究院 | 一种基于Linux系统的基站用户面数据处理优化方法 |
CN103441831A (zh) * | 2013-08-22 | 2013-12-11 | 焦点科技股份有限公司 | 一种双进程间的全双工通信及互保方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN106161110A (zh) | 2016-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106161110B (zh) | 一种网络设备中的数据处理方法及系统 | |
US20210011888A1 (en) | Intelligent layout of composite data structures in tiered storage with persistent memory | |
CN105740048B (zh) | 一种镜像管理方法、装置及系统 | |
JP5006348B2 (ja) | 応答出力キャッシュに対するマルチキャッシュ協調 | |
US9639459B2 (en) | I/O latency and IOPs performance in thin provisioned volumes | |
US10572385B2 (en) | Granting exclusive cache access using locality cache coherency state | |
US8495166B2 (en) | Optimized caching for large data requests | |
US9178839B2 (en) | Sharing buffer space in link aggregation configurations | |
US6405201B1 (en) | Method and apparatus for reducing network traffic for remote file append operations | |
CN106331148A (zh) | 一种客户端数据读取时的缓存管理方法及其装置 | |
CN103312624A (zh) | 一种消息队列服务系统和方法 | |
US20080294748A1 (en) | Proxy between network file system version three and network file system version four protocol | |
US10404823B2 (en) | Multitier cache framework | |
US11579874B2 (en) | Handling an input/output store instruction | |
CN110119304A (zh) | 一种中断处理方法、装置及服务器 | |
CN109933585A (zh) | 数据查询方法和数据查询系统 | |
CN109471843A (zh) | 一种元数据缓存方法、系统及相关装置 | |
US7376679B2 (en) | Facilitating delayed block allocation in a distributed file system | |
CN108197160A (zh) | 一种图片加载方法及装置 | |
US20090187682A1 (en) | Method for Detecting Circular Buffer Overrun | |
CN109086462A (zh) | 一种分布式文件系统中元数据的管理方法 | |
AU2011229395B2 (en) | Dual mode reader writer lock | |
US6704836B1 (en) | Method for dynamic control of concurrent extended copy tasks | |
JP2009123202A (ja) | データを処理するためのプロセッサ‐サーバ・ハイブリッド・システムおよび方法 | |
US8635384B2 (en) | Managing data movement in a cell broadband engine processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |