热启动过程中保持协议报文不中断的方法及装置与流程

文档序号:32940319发布日期:2023-01-14 08:54阅读:31来源:国知局
热启动过程中保持协议报文不中断的方法及装置与流程

1.本发明是关于报文收发领域,特别是关于一种热启动过程中保持协议报文不中断的方法及装置。


背景技术:

2.热启动是在硬件运行而不中断数据转发的情况下重新启动设备驱动程序软件。随着互联网的高速发展,数据中心的不断崛起,目前对于网络设备的安全性和可靠性要求都很高。那么在设备面临驱动程序升级和软件挂死等情况下,又需要保证数据转发层面不中断,热启动技术应运而生。
3.在软件热启动过程中,需要cpu重新初始化,内存资源重新分配,当前协议报文收发大部分都是依靠dma来实现,在内存重新初始化的前提下,dma控制器需要重新初始化,在dma控制器重新初始化的过程中,网络设备是无法进行收发报文,导致协议报文的中断,进一步引起整个系统的协议异常。
4.目前现有技术中,在热启动过程中不采用dma控制器收发报文,使用传统的网络口做cpumac进行协议报文的收发,此时只要保证硬件正常运行报文就能通过cpumac上送至协议栈进行处理。此方法需要预留网络口做cpumac,需要额外的物理端口。
5.公开于该背景技术部分的信息仅仅旨在增加对本发明的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域一般技术人员所公知的现有技术。


技术实现要素:

6.本发明的目的在于提供一种热启动过程中保持协议报文不中断的方法及装置,解决现有技术中在软件热启动过程下,dma控制器需要重新初始化导致协议报文的中断,进一步引起整个系统的协议异常的问题。
7.为实现上述目的,本发明的实施例提供了一种热启动过程中保持协议报文不中断的方法及装置。
8.在本发明的一个或多个实施方式中,一种热启动过程中保持协议报文不中断的方法,其特征在于,所述方法包括:在接收报文时,进行协议报文识别,判断cpu是否进行热启动;若否,将不需要保持不中断的协议报文放入dma控制器的单独通道中,经由dma控制器上送到用户态协议栈处理,在用户态进行协议报文上送和下发流程工作;若是,将需要保持不中断的协议报文放入dma控制器的另一单独通道中,经由dma控制器上送到knet模块处理,在kernel态进行协议报文上送和下发流程工作;其中所述单独通道和所述另一单独通道为互相物理隔离的通道。
9.在本发明的一个或多个实施方式中,所述在接收报文时,进行协议报文识别,包括:在接收报文时,进行协议报文识别,为所述协议报文配置协议报文映射表。
10.在本发明的一个或多个实施方式中,所述由dma控制器上送到用户态协议栈处理,在用户态进行协议报文上送和下发流程工作,包括:配置协议报文映射表,将所述协议报文
映射到dma控制器rx方向的通道0或通道1,经由dma控制器上送到cpu协议栈处理。
11.在本发明的一个或多个实施方式中,所述由dma控制器上送到用户态协议栈处理,在用户态进行协议报文上送和下发流程工作,包括:cpu协议栈通过dma控制器tx方向的通道0或通道1下发报文到网络口,进行报文发送。
12.在本发明的一个或多个实施方式中,所述经由dma控制器上送到knet模块处理,在kernel态进行协议报文上送和下发流程工作,包括:配置协议报文映射表,将所述协议报文映射到dma控制器rx方向的通道2或通道3,将协议报文上送到knet模块处理。
13.在本发明的一个或多个实施方式中,所述经由dma控制器上送到knet模块处理,在kernel态进行协议报文上送和下发流程工作,包括:cpu协议栈下发报文切换到dma控制器tx方向的通道2或通道3,通过knet模块下发协议报文到网络口,进行报文发送。
14.在本发明的一个或多个实施方式中,所述方法还包括:若报文的识别结果是数据报文,则将所述数据报文进行正常转发。
15.在本发明的另一个方面当中,提供了一种热启动过程中保持协议报文不中断的装置,其包括报文识别模块和判断模块。
16.报文识别模块,用于在报文读取接收时,配置协议报文映射表。
17.判断模块,用于判断cpu是否进行热启动。
18.用户态报文收发模块,用于将不需要保持不中断的协议报文放入dma控制器的单独通道中,经由dma控制器上送到用户态协议栈处理,在用户态进行协议报文上送和下发流程工作。
19.kernel态报文收发模块,用于将需要保持不中断的协议报文放入dma控制器的另一单独通道中,经由dma控制器上送到knet模块处理,在kernel态进行协议报文上送和下发流程工作。
20.在本发明的一个或多个实施方式中,所述报文识别模块还用于:在接收报文时,进行协议报文识别,为所述协议报文配置协议报文映射表。
21.在本发明的一个或多个实施方式中,所述判断模块还用于:若报文的识别结果是数据报文,则将所述数据报文进行正常转发。
22.在本发明的一个或多个实施方式中,所述用户态报文收发模块还用于:配置协议报文映射表,将所述协议报文映射到dma控制器rx的通道0或通道1,经由dma控制器上送到cpu协议栈处理。
23.在本发明的一个或多个实施方式中,所述用户态报文收发模块还用于:cpu协议栈通过dma控制器tx方向的通道0或通道1下发报文到网络口,进行报文发送。
24.在本发明的一个或多个实施方式中,所述kernel态报文收发模块还用于:配置协议报文映射表,将所述协议报文映射到dma控制器rx方向的通道2或通道3,将协议报文上送到knet模块处理。
25.在本发明的一个或多个实施方式中,所述kernel态报文收发模块还用于:cpu协议栈下发报文切换到dma控制器tx方向的通道2或通道3,通过knet模块下发协议报文到网络口,进行报文发送。
26.在本发明的另一个方面当中,提供了一种电子设备,包括:至少一个处理器;以及存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一
个处理器执行如上所述的热启动过程中保持协议报文不中断的方法。
27.在本发明的另一个方面当中,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如所述的热启动过程中保持协议报文不中断的方法的步骤。
28.与现有技术相比,根据本发明实施方式的热启动过程中保持协议报文不中断的方法及装置,其能够在现有网络设备的基础上,通过将dma控制器rx方向和tx方向的通道做物理隔离,并分离出不同的通道分别工作中用户态进程和kernel态knet进程中,实现软件和物理两级隔离。在不需要重新增加物理网络口的基础上,实现了在热启动过程中保持协议报文不中断的效果。对一些心跳检测,以及实时性要求很高的协议报文,在热启动前后完全保持协议的正常运行。
附图说明
29.图1是根据本发明一实施方式的热启动过程中保持协议报文不中断的方法的流程图;
30.图2是根据本发明一实施方式的热启动过程中保持协议报文不中断的方法的整体流程结构图;
31.图3是根据本发明一实施方式的热启动过程中保持协议报文不中断的方法的用户态流程图;
32.图4是根据本发明一实施方式的热启动过程中保持协议报文不中断的方法的用户态流程结构图;
33.图5是根据本发明一实施方式的热启动过程中保持协议报文不中断的方法的内核态流程图;
34.图6是根据本发明一实施方式的热启动过程中保持协议报文不中断的方法的内核态流程结构图;
35.图7是根据本发明一实施方式的热启动过程中保持协议报文不中断的装置的结构图;
36.图8是根据本发明一实施方式的热启动过程中保持协议报文不中断的计算设备的硬件结构图。
具体实施方式
37.下面结合附图,对本发明的具体实施方式进行详细描述,但应当理解本发明的保护范围并不受具体实施方式的限制。
38.除非另有其它明确表示,否则在整个说明书和权利要求书中,术语“包括”或其变换如“包含”或“包括有”等等将被理解为包括所陈述的元件或组成部分,而并未排除其它元件或其它组成部分。
39.实施例1
40.如图1至图2所示,介绍本发明的一个实施例中热启动过程中保持协议报文不中断的方法,该方法包括如下步骤。
41.在步骤s101中,在接收报文时,进行协议报文识别,判断cpu是否进行热启动。
42.热启动是在硬件运行而不中断数据转发的情况下重新启动设备驱动程序软件。随着互联网的高速发展,数据中心的不断崛起,目前对于网络设备的安全性和可靠性要求很高。在设备面临驱动程序升级和软件挂死等情况下,又需要保证数据转发层面不中断,由此产生了热启动技术。
43.在软件热启动过程中,需要cpu重新初始化,内存资源重新分配,当前协议报文收发大部分都是依靠dma来实现,在内存重新初始化的前提下,dma控制器需要重新初始化,在dma控制器重新初始化的过程中,网络设备是无法进行收发报文,导致协议报文的中断,进一步引起整个系统的协议异常。
44.在现有的技术方案中,热启动过程不采用dma控制器收发报文,使用传统的网络口做cpumac进行协议报文的收发,此时只要保证硬件正常运行报文就能通过cpumac上送至协议栈进行处理。但此方案需要预留网络口做cpumac,需要额外的物理端口。
45.协议报文,即各种网络协议报文,此报文区别于用户数据报文。在本实施例中,在接收报文时,进行协议报文识别,而将数据报文进行正常转发,为协议报文配置协议报文映射表。
46.在步骤s102中,若cpu不进行热启动,将不需要保持不中断的协议报文放入dma控制器的单独通道中,经由dma控制器上送到用户态协议栈处理,在用户态进行协议报文上送和下发流程工作。
47.具体的,配置协议报文映射表,将所述协议报文映射到dma控制器rx方向的通道0或通道1,经由dma控制器上送到cpu协议栈处理。cpu协议栈通过dma控制器tx方向的通道0或通道1下发报文到网络口,进行报文发送。
48.在步骤s103中,若cpu进行热启动,将需要保持不中断的协议报文放入dma控制器的另一单独通道中,经由dma控制器上送到knet模块处理,在kernel态进行协议报文上送和下发流程工作。
49.在本实施例中,所述需要保持不中断的协议报文,即实时性要求很高的协议报文,需要在热启动前后完全保持协议的正常运行。例如心跳报文,用于监视机器网络存储器的运行状态,一次发送字符串信息表示网络存储器的运行状态,以udp广播或单播方式发送。其对于在热启动前后完全保持正常运行有较高的需求。
50.具体的,配置协议报文映射表,将所述协议报文映射到dma控制器rx方向的通道2或通道3,将协议报文上送到knet模块处理。cpu协议栈下发报文切换到dma控制器tx方向的通道2或通道3,通过knet模块下发协议报文到网络口,进行报文发送。
51.实施例2
52.如图3至图4所示,介绍本发明的一个实施例中热启动过程中保持协议报文不中断的方法,该方法包括如下步骤。
53.在步骤s301中,在接收报文时,进行协议报文识别,判断cpu是否进行热启动。
54.在步骤s302中,cpu不进行热启动,将所述协议报文放入发送队列中。
55.当网卡接收到报文时将会产生硬件中断,通知dma控制器接收报文。dma控制器会从网卡接收队列中将报文拷贝到硬件接收空间即描述符空间指向的地址位置。
56.在步骤s303中,所述协议报文映射到dma控制器rx方向的通道0或通道1,经由dma控制器上送到用户态协议栈处理。
57.dma控制器是直接内存访问控制器,通过dma控制器,交换机可以高效完成报文的收发,dma控制器直接完成将报文写入cpu内存或从cpu内存中将报文取走并完成发送。dma控制器必须具有以下功能:1)能向cpu发出系统保持(hold)信号,提出总线接管请求;2)当cpu发出允许接管信号后,负责对总线的控制,进入dma方式;3)能对存储器寻址及能修改地址指针,实现对内存的读写;4)能决定本次dma传送的字节数,判断dma传送是否借宿;5)发出dma结束信号,使cpu恢复正常工作状态。
58.用户态网络协议栈是一套协议的规范,比如http-》tcp-》ip,通过一个http请求,先转化成tcp数据包,然后再转化成ip数据包,再通过网卡传输出去;接收方通过网卡接收到ip数据包,去掉ip数据头,检测到是一个tcp数据包,就把tcp数据包传到tcp协议处理层,去掉tcp数据头,检测到是一个http数据包,就把http数据包传到http协议处理层。因为所有的网络数据都是通过这样一层层的堆叠起来的协议来传送的,这一过程叫用户态网络协议栈。
59.在步骤s304中,cpu协议栈通过dma控制器tx方向的通道0或通道1下发报文到网络口。
60.dma传输通道的每个通道都可以在有固定地址的外设寄存器和存储器地址之间执行dma传输。dma传输的数据量是可编程的,包含要传输的数据项数量的寄存器,在每次传输后递减。
61.本实施例中,dma控制器接收协议报文是在rx方向上的通道0和通道1,发送协议报文是在tx方向上的通道0和通道1,实现了多通道物理隔离,用户态进程独立于kernel态进程。
62.在步骤s305中,进行报文的发送。
63.在本实施例中,配置协议报文映射表,将所述协议报文映射到dma控制器rx的通道0或通道1,经由dma控制器上送到cpu协议栈处理。cpu协议栈通过dma控制器tx方向的通道0或通道1下发报文到网络口,进行报文发送。
64.实施例3
65.如图5至图6所示,介绍本发明的一个实施例中热启动过程中保持协议报文不中断的方法,该方法包括如下步骤。
66.在步骤s501中,在接收报文时,进行协议报文识别,判断cpu是否进行热启动。
67.在步骤s502中,cpu进行热启动,将所述协议报文放入发送队列中。
68.在步骤s503中,所述协议报文映射到dma控制器rx方向的通道2或通道3,经由dma控制器上送到knet模块处理。
69.内核(kernel)态与用户态是操作系统的两种运行级别,当程序运行在3级特权级上时,就可以称之为运行在用户态。这是最低特权级,是普通的用户进程运行的特权级,大部分用户直接面对的程序都是运行在用户态;当程序运行在0级特权级上时,就可以称之为运行在内核态。运行在用户态下的程序不能直接访问操作系统内核数据结构和程序。当我们在系统中执行一个程序时,大部分时间是运行在用户态下的,在其需要操作系统帮助完成某些它没有权力和能力完成的工作时就会切换到内核态。这两种状态的主要差别是处于用户态执行时,进程所能访问的内存空间和对象受到限制,其所处于占有的处理器是可被抢占的处于内核态执行时,则能访问所有的内存空间和对象,且所占有的处理器是不允许
被抢占的。
70.knet模块是指kernel态报文收发模块,使用dma控制器收发报文,可以直接在用户态完成报文的收发,交换机sdk驱动软件在大多数厂商的应用中也都是运行在用户态。knet可以实现在sdk驱动软件运行在用户态的情况下,单独在kernel态实现报文收发。
71.在步骤s504中,cpu协议栈下发报文切换到dma控制器tx方向的通道2或通道3,通过knet模块下发协议报文到网络口。
72.具体的,在cpu进行热启动时,用户态进程进行重新初始化,dma控制器rx方向的通道0和通道1,以及dma控制器tx方向的通道0和通道1做重新初始化;dma控制器rx方向的通道2和通道3,以及dma控制器tx方向的通道2和通道3不受用户态通道重新初始化的影响,继续保持运行状态,knet进程保持收发报文正常运行。
73.本实施例中,dma控制器接收协议报文是在rx方向上的通道2和通道3,发送协议报文是在tx方向上的通道2和通道3,实现了多通道物理隔离,kernel态进程独立于用户态进程。
74.在步骤s505中,进行报文的发送。
75.在本实施例中,配置协议报文映射表,将所述协议报文映射到dma控制器rx方向的通道2或通道3,将协议报文上送到knet模块处理。cpu协议栈下发报文切换到dma控制器tx方向的通道2或通道3,通过knet模块下发协议报文到网络口,进行报文发送。
76.本发明通过在kernel态实现knet模块,将在热启动过程中需要保证正常运行的一些协议报文识别后送到knet模块处理。从而实现将这些协议报文的处理和用户态sdk分离,当用户态sdk由于做热启动,重新做软表以及部分dma控制器初始化时,不影响这些协议报文的收发。
77.具体的,dma控制器在接收方向rx和发送方向tx上实现了多通道物理隔离,软件实现在用户态和kernel态两个独立的进程中分别实现收发报文的功能,将kernel态收发报文完全独立于用户态运行,做到软件隔离。
78.根据本发明实施方式的热启动过程中保持协议报文不中断的方法及应用,其能够在现有网络设备的基础上,通过将dma控制器rx方向和tx方向的通道做物理隔离,并分离出不同的通道分别工作中用户态进程和kernel态knet进程中,实现软件和物理两级隔离。在不需要重新增加物理网络口的基础上,实现了在热启动过程中保持协议报文不中断的效果。对一些心跳检测,以及实时性要求很高的协议报文,在热启动前后完全保持协议的正常运行。
79.如图7所示,介绍根据本发明具体实施方式的热启动过程中保持协议报文不中断的装置。
80.在本发明的实施方式中,热启动过程中保持协议报文不中断的装置包括报文识别模块701、判断模块702、用户态报文收发模块703、kernel态报文收发模块704。
81.报文识别模块701,用于在报文读取接收时,配置协议报文映射表。
82.判断模块702,用于判断cpu是否进行热启动。
83.用户态报文收发模块703,用于将不需要保持不中断的协议报文放入dma控制器的单独通道中,经由dma控制器上送到用户态协议栈处理,在用户态进行协议报文上送和下发流程工作。
84.kernel态报文收发模块704,用于将需要保持不中断的协议报文放入dma控制器的另一单独通道中,经由dma控制器上送到knet模块处理,在kernel态进行协议报文上送和下发流程工作。
85.报文识别模块701还用于:在接收报文时,进行协议报文识别,将数据报文进行正常转发,为协议报文配置协议报文映射表。
86.判断模块702还用于:若报文的识别结果是数据报文,则将所述数据报文进行正常转发。
87.用户态报文收发模块703还用于:配置协议报文映射表,将所述协议报文映射到dma控制器rx方向的通道0或通道1,经由dma控制器上送到cpu协议栈处理。
88.用户态报文收发模块703还用于:cpu协议栈通过dma控制器tx方向的通道0或通道1下发报文到网络口,进行报文发送。
89.kernel态报文收发模块704还用于:配置协议报文映射表,将所述协议报文映射到dma控制器rx方向的通道2或通道3,将协议报文上送到knet模块处理。
90.kernel态报文收发模块704还用于:cpu协议栈下发报文切换到dma控制器tx方向的通道2或通道3,通过knet模块下发协议报文到网络口,进行报文发送。
91.图8示出了根据本说明书的实施例的用于热启动过程中保持协议报文不中断的计算设备80的硬件结构图。如图8所示,计算设备80可以包括至少一个处理器801、存储器802(例如非易失性存储器)、内存803和通信接口804,并且至少一个处理器801、存储器802、内存803和通信接口804经由总线805连接在一起。至少一个处理器801执行在存储器802中存储或编码的至少一个计算机可读指令。
92.应该理解,在存储器802中存储的计算机可执行指令当执行时使得至少一个处理器801进行本说明书的各个实施例中以上结合图1-8描述的各种操作和功能。
93.在本说明书的实施例中,计算设备80可以包括但不限于:个人计算机、服务器计算机、工作站、桌面型计算机、膝上型计算机、笔记本计算机、移动计算设备、智能电话、平板计算机、蜂窝电话、个人数字助理(pda)、手持装置、消息收发设备、可佩戴计算设备、消费电子设备等等。
94.根据一个实施例,提供了一种比如机器可读介质的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中以上结合图1-8描述的各种操作和功能。具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
95.根据本发明实施方式的热启动过程中保持协议报文不中断的方法及装置,其能够在现有网络设备的基础上,通过将dma控制器rx方向和tx方向的通道做物理隔离,并分离出不同的通道分别工作中用户态进程和kernel态knet进程中,实现软件和物理两级隔离。在不需要重新增加物理网络口的基础上,实现了在热启动过程中保持协议报文不中断的效果。对一些心跳检测,以及实时性要求很高的协议报文,在热启动前后完全保持协议的正常运行。
96.本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序
产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
97.本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
98.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
99.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
100.前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本发明限定为所公开的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。本发明的范围意在由权利要求书及其等同形式所限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1