报文收发的方法及装置与流程

文档序号:33128009发布日期:2023-02-01 06:18阅读:50来源:国知局
报文收发的方法及装置与流程

1.本技术属于通信设计技术领域,具体涉及一种报文收发的方法及装置。


背景技术:

2.dma(direct memory access)直接内存访问,是一种cpu与外设交互的一种方式。dma和cpu交互是通过描述符完成的,描述符存放在一块固定格式内存中。以cpu接收报文角度来说,dma根据描述符中的信息,将从芯片收到的报文存放到指定的内存中,然后通知cpu,cpu根据描述符的信息可以去解析指定内存的信息。在以太网络环境中,各设备之间协议报文的收发基本都是通过cpu与dma的交互完成。
3.目前市场上有大端序和小端序两种不同字节序的cpu,而芯片中dma往往是以大端序或一种固定字节序在传输数据的。若cpu的字节序和dma不一致的,则需要进行字节序转换。现有技术中在cpu侧进行字节序转换,当需要转换的字节越多时,cpu的收报性能就会越慢,在需要cpu高效收发报文的应用场景里会给cpu带来极大的性能瓶颈。


技术实现要素:

4.本技术的目的在于提供一种报文收发的方法及装置,以解决现有技术中存在的在cpu侧进行字节序转换,当需要转换的字节越多时,cpu的收报性能就会越慢,在需要cpu高效收发报文的应用场景里会,给cpu带来极大的性能瓶颈的技术问题。
5.为实现上述目的,本技术采用的一个技术方案是:
6.提供了一种报文收发的方法,包括:
7.在dma控制器的第一通道内对第一报文进行字节序转换,得到第二报文,所述第一报文由端口收取至所述第一通道,所述第一报文和第二报文分别以第一字节序和第二字节序排列;
8.将所述第二报文传送至中央处理器;
9.在dma控制器的第二通道内对第三报文进行字节序转换,得到第四报文,所述第三报文由中央处理器对所述第二报文进行处理得到,所述第四报文以第一字节序排列;
10.将所述第四报文传送至端口发出。
11.在一个或多个实施方式中,所述在dma控制器的第一通道内对第一报文进行字节序转换,得到第二报文的步骤具体包括:
12.为dma控制器的第一通道配置与多个特征值对应的多个字节序转换参数组,所述字节序转换参数组用于描述字节序的转换方式;
13.为所述第一报文分配特征值;
14.基于所述第一报文的特征值索引对应的字节序转换参数组,以对所述第一报文进行字节序转换。
15.在一个或多个实施方式中,所述参数组包括第一参数、第二参数和第三参数,所述第一参数用于描述字节序是否需要转换,所述第二参数用于描述字节序转换的起始点,所
述第三参数用于描述字节序转换的终止点。
16.在一个或多个实施方式中,所述为所述第一报文分配特征值步骤具体包括:
17.获取所述第一报文的字节信息,所述字节信息由访问控制列表、cpu reasonid和dma queueid中的一个或多个提供;
18.基于所述第一报文的字节信息,判断所述第一报文是否需要转换;若否,为所述第一报文分配第一特征值,所述第一特征值对应的所述第一参数的数值用于描述无需转换;若是,则:
19.识别所述第一报文的转换起始位置值,判断所述第一报文是否需要转换至标志sop位置;若否,识别所述第一报文的转换终止位置值,为所述第一报文分配第二特征值,所述第二特征值对应的所述第一参数的数值用于描述需要转换,所述第二特征值对应的所述第二参数的数值用于描述字节序转换的起始点位置,所述第二特征值对应的所述第三参数的数值用于描述字节序转换的终止点位置;若是,则:
20.为所述第一报文分配第三特征值,所述第三特征值对应的所述第一参数的数值用于描述需要转换,所述第三特征值对应的所述第二参数的数值用于描述字节序转换的起始点位置,所述第三特征值对应的所述第三参数的数值用于描述字节序转换至标志sop位置。
21.在一个或多个实施方式中,所述为所述第一报文分配特征值的步骤之后还包括:
22.将所述第一报文的特征值嵌入所述第一报文内。
23.在一个或多个实施方式中,所述第一报文包括数据段和包头段,所述特征值嵌入所述包头段中。
24.在一个或多个实施方式中,所述在dma控制器的第二通道内对所述第三报文进行字节序转换,得到第四报文的步骤具体包括:
25.基于嵌入所述第三报文的所述特征值对第三报文进行字节序转换。
26.为实现上述目的,本技术采用的另一个技术方案是:
27.提供一种报文收发的装置,包括:
28.第一转换模块,用于在dma控制器的第一通道内对第一报文进行字节序转换得到第二报文,所述第一报文由端口收取至所述第一通道,所述第一报文和第二报文分别以第一字节序和第二字节序排列;
29.第一传送模块,用于将所述第二报文传送至中央处理器;
30.第二转换模块,用于在dma控制器的第二通道内对第三报文进行字节序转换得到第四报文,所述第三报文由中央处理器对所述第二报文进行处理得到,所述第四报文以第一字节序排列;
31.第二传送模块,用于将所述第四报文传送至端口发出。
32.为实现上述目的,本技术采用的又一个技术方案是:
33.提供一种电子设备,包括至少一个处理器;以及
34.存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如上述任一实施方式所述的报文收发的方法。
35.为实现上述目的,本技术采用的又一个技术方案是:
36.提供一种机器可读存储介质,其存储有可执行指令,所述指令当被执行时使得所述机器执行如上述任一实施方式所述的报文收发的方法。
37.区别于现有技术,本技术的有益效果是:
38.本技术通过在dma控制器的通道内配置与多个特征值对应的多个字节序转换参数组,并为报文分配特征值,能够实现在dma控制器的通道内进行报文字节序转换,从而无需在cpu中再进行字节序转换,能够有效减少对cpu的性能占用,极大提升了cpu的收发报文效率。
附图说明
39.图1是本技术报文收发的方法一实施方式的流程示意图;
40.图2是图1中步骤s100对应的一实施方式的流程示意图;
41.图3是图2中步骤s102对应的一实施方式的流程示意图;
42.图4是本技术报文收发的装置一实施方式的结构框图;
43.图5是本技术电子设备一实施方式的结构图。
具体实施方式
44.下面结合附图,对本发明的具体实施方式进行详细描述,但应当理解本发明的保护范围并不受具体实施方式的限制。
45.除非另有其它明确表示,否则在整个说明书和权利要求书中,术语“包括”或其变换如“包含”或“包括有”等等将被理解为包括所陈述的元件或组成部分,而并未排除其它元件或其它组成部分。
46.在以太网络环境中,各设备之间协议报文的收发基本都是通过中央处理器cpu与直接内存访问dma控制器的交互完成。
47.目前市场上有大端序和小端序两种不同字节序的cpu,而芯片中dma控制器往往是以大端序或一种固定字节序在传输数据的。这使得当dma控制器的字节序与cpu的字节序不同时,需要对字节序进行转换,以使cpu和dma控制器之间能够完成对报文的交互操作。
48.一种场景中,报文的字节序转换在cpu内部进行,报文经过dma控制器传输至cpu内部时,cpu首先对报文的字节序转换,之后再对报文进行基于协议栈的处理,处理完成后再将报文的字节序转换至与dma控制器相同,发送给dma控制器发送。上述交互过程占用了cpu较多的性能,当需要转换的字节越多时,cpu的收报性能就会越慢。特别是,在需要cpu高效收发报文的应用场景里会给cpu带来极大的性能瓶颈。
49.为了解决上述问题,申请人提出了一种能够在dma控制器内进行报文字节序转换的方法,从而有效减少对cpu的性能占用,极大提升cpu的收发报文效率。请参阅图1,图1是本技术报文收发的方法一实施方式的流程示意图。
50.该方法包括:
51.s100、在dma控制器的第一通道内对第一报文进行字节序转换,得到第二报文。
52.具体地,第一报文是通过端口收取至第一通道内的,端口是与外界通讯交流的进出口,其可以是虚拟端口,也可以是物理端口。第一通道在本实施方式中可以理解为dma控制器的收件通道。
53.当第一报文由端口传输至dma控制器内部的第一通道时,在第一通道中之间进行字节转换,生成第二报文,其中第一报文和第二报文分别以第一字节序和第二字节序排列。
54.第二字节序与cpu传输数据的字节序相同,从而无需在cpu中再进行字节序转换,能够有效减少对cpu的性能占用,极大提升cpu的收发报文效率。
55.请参阅图2,图2是图1中步骤s100对应的一实施方式的流程示意图。
56.在一个实施方式中,在dma控制器的第一通道内对第一报文进行字节序转换的步骤包括:
57.s101、为dma控制器的第一通道配置与多个特征值对应的多个字节序转换参数组。
58.具体地,字节序转换参数组用于描述字节序的转换方式,每一个字节序转换参数组均代表一种字节序的转换方式,一个特征值对应一个字节序转换参数组,即可以理解为当获取到一个特征值后既能够根据其对应的字节序转换参数组获取到一种字节序的转换方式。
59.在一个应用场景中,字节序转换参数组可以包括第一参数valid、第二参数start和第三参数end。其中,第一参数valid用于描述是否需要做字节序转换,例如当valid=0时可以代表无需进行字节序转换,当valid=1时可以代表需要进行字节序转换;第二参数start用于描述字节序转换的起始点,例如当start=1时可以代表从一段字节的第一个字节开始进行字节序转换;第三参数end用于描述字节序转换的终止点,例如当end=0时可以代表需要进行字节序转换直至报文的标志sop位置,当end=5时可以代表需要进行字节序转换直至第5个字节。
60.可以理解的,通过上述三个参数能够清楚获取到如何针对一段字节进行字节序转换。在其他应用场景中,也可以设置多个用于描述字节序转换的起始点和终止点的参数,或者也可以采用其他参数,能够清楚描述一种字节序的转换方式即可。
61.在一个应用场景中,上述多个特征值和多个字节序转换参数组的对应关系可以存储在dma控制器的寄存器中,存储的数据可以表示为g_{0

n}_valid、g_{0

n}_start、g_{0

n}_end的字段,其中0

n即为特征值,每一特征值对应的一个参数有具体的选值,从而为每一特征值赋予对应的字节序转换方式。
62.在其他应用场景中,也可以存储在其他dma控制器的其他位置,或者存储在能够供dma控制器调用的存储模块中,均能够实现本实施方式的效果。
63.s102、为第一报文分配特征值。
64.当第一报文进入第一通道后,在第一通道内部能够基于第一通道内部存储的多个特征值和多个字节序转换参数组的对应关系为第一报文分配特征值。可以理解的,当第一报文被分配特征值后,其的字节序转换方式即能够确定。
65.请参阅3,图3是图2中步骤s102对应的一实施方式的流程示意图。
66.在一个实施方式中,为第一报文分配特征值的步骤具体包括:
67.s1021、获取第一报文的字节信息。
68.在一个应用场景中,第一报文的字节信息可以通过访问控制列表acl提供,acl是一种基于包过滤的访问控制技术,它可以根据设定的条件对接口上的数据包进行过滤,允许其通过或丢弃。可以利用入口访问控制列表i-acl(ingress access control list)模块或出口访问控制列表e-acl(egress access control list)模块,获取报文的字节信息并匹配特征值。
69.在其他应用场景中,针对协议报文或其他自定义上cpu的报文类型,第一报文的字
节信息可以通过报文内的cpu reasonid提供。cpu reasonid携带在包头段内以供cpu识别判断是由于何种原因上报报文,可根据cpu reasonid获取字节信息以分配特征值。
70.另外,第一报文的字节信息也可以通过报文的dma queueid提供,即dma队列号。通过dma上送cpu的报文都需要入dma队列,每个dma队列对应一个queueid,因为上cpu的报文有很多,reasonid也会有很多,有一些是高优先级的,如pdu协议报文,有一些是低优先级的报文,如镜像报文,分不同queueid上cpu可以针对不同queueid做限速和高低优先级调度,因此可根据queueid获取报文的字节信息并分配特征值。
71.s1022、判断第一报文是否需要转换。
72.基于第一报文的字节信息,首先判断第一报文是否需要转换,若不需要转换,则执行步骤s1023,若需要转换,则执行步骤s1024。
73.s1023、为第一报文分配第一特征值。
74.具体地,第一特征值对应的第一参数的数值用于描述无需转换,在一个应用场景中,第一特征值对应的第一参数的数值可以为0,即代表无需转换,此时无需进一步分析转换的起始和终止点。
75.s1024、识别第一报文的转换起始位置值,判断第一报文是否需要转换至标志sop位置。
76.当确定第一报文需要转换时,首先识别转换起始位置值,之后判断是否转换至标志sop位置,即是否需要对转换起始位置值之后的报文均进行转换,若否则执行步骤s1025,若是则执行步骤s1026。
77.s1025、识别第一报文的转换终止位置值,为第一报文分配第二特征值。
78.具体地,此时第一报文需要进行部分转换,识别第一报文的转换终止位置值后,能够基于识别的转换起始位置值和转换终止位置值,为第一报文分配第二特征值。
79.第二特征值对应的第一参数的数值用于描述需要转换,在一个应用场景中,第一参数的数值可以为1以描述需要转换;第二特征值对应的第二参数的数值用于描述字节序转换的起始点位置,例如第二参数的数值可以为1以描述需要从第一个字节位置开始进行字节序转换;第二特征值对应的第三参数的数值用于描述字节序转换的终止点位置,例如第三参数的数值可以为5以描述需要转换至第五个字节位置。
80.s1026、为第一报文分配第三特征值。
81.具体地,此时第一报文需要转换至标志sop位置,即需要将转换起始位置之后的报文全部转换,可以基于识别的转换起始位置值直接为第一报文分配第三特征值。
82.第三特征值对应的第一参数的数值用于描述需要转换,在一个应用场景中,第一参数的数值可以为1以描述需要转换;第三特征值对应的第二参数的数值用于描述字节序转换的起始点位置,例如第二参数的数值可以为2以描述需要从第二个字节位置开始进行字节序转换;第三特征值对应的第三参数的数值用于描述字节序转换至标志sop位置,在一个应用场景中第三参数的数值可以为0以描述需要字节序转换至标志sop位置。
83.s103、基于第一报文的特征值索引对应的字节序转换参数组,以对第一报文进行字节序转换。
84.具体地,当第一报文被分配特征值后,根据特征值索引对应的字节序转换参数组,能够获取第一报文的字节序转换方法,从而进行字节序转换,得到第二报文。
85.s200、将第二报文传送至中央处理器。
86.第一报文经过字节序转换后,得到以第二字节序排列的第二报文,第二字节序与cpu传输数据的字节序相同,因此可直接将第二报文传输给中央处理器。
87.s300、在dma控制器的第二通道内对第三报文进行字节序转换,得到第四报文。
88.具体地,第三报文是由cpu对第二报文进行处理得到的,cpu的处理可以是替换或修改报文里的某个字段,cpu处理后可将第三报文发送给dma控制器的第二通道。
89.第二通道可以为dma控制器的发送通道,由于cpu处理过程中并未改变报文的字节序,因此第三报文和第二报文均以第二字节序排列,但dma控制器以第一字节序传输数据,因此需在dma控制器内将报文的字节序还原为第一字节序。
90.在一个应用场景中,可以基于上述在第一通道内字节序转换的方式将第三报文的字节序调整为第一字节序,并得到第四报文。即重新为第二通道配置与多个特征值对应的多个字节序转换参数组;为第三报文分配特征值;基于第三报文的特征值索引对应的字节序转换参数组,以对第三报文进行字节序转换,得到第四报文。
91.在另一个应用场景中,为了提高第三报文的字节序转换效率,避免重复运算,还可以对在第一通道中为第一报文分配的特征值进行重复利用。
92.具体地,可以在上述步骤s102之后,将第一报文的特征值嵌入第一报文内,特征值可以跟随第二报文传输至cpu,并跟随第三报文返回dma控制器的第二通道内。
93.在第二通道内,基于第三报文内嵌入的特征值索引对应的字节序转换参数组,可以获取将第三报文的字节序转换为第一字节序的方法,从而能够将第三报文转换为第四报文,以实现在dma控制器以及端口内的输出传输。
94.一般报文包括数据段和设置在数据段头端的packetheader包头段,包头段并非网络传输的帧格式中的二层头或三层头,而是厂商自定义的一段数据,其目的是携带报文在芯片中转发产生的关键信息,这些关键信息可以是报文的入口、出口、队列等信息。本实施方式中,可以将特征值嵌入在包头段中,从而在不影响数据段数据和字节序转换的同时,使得特征值能够随报文传输,以便于在第二通道内将报文的字节序还原。
95.s400、将第四报文传送至端口发出。
96.当第三报文经过字节序转换后,得到以第一字节序排列的第四报文,可以将第四报文经过端口发出,完成报文的一次收发操作。
97.可以理解的,在报文的一次收发操作中,cpu仅负责对报文进行处理,报文的字节序转换分别在dma控制器的第一通道和第二通道内进行,有效减少对cpu的性能占用,从而极大提升cpu的收发报文效率。
98.本技术还提供了一种报文收发的装置,请参阅图4,图4是本技术报文收发的装置一实施方式的结构框图。
99.该装置包括第一转换模块21,第一传送模块22,第二转换模块23和第二传送模块24。
100.其中,第一转换模块21用于在dma控制器的第一通道内对第一报文进行字节序转换得到第二报文,第一报文由端口收取至第一通道,第一报文和第二报文分别以第一字节序和第二字节序排列。
101.第一传送模块22用于将第二报文传送至中央处理器。
102.第二转换模块23用于在dma控制器的第二通道内对第三报文进行字节序转换得到第四报文,第三报文由中央处理器对第二报文进行处理得到,第四报文以第一字节序排列。
103.第二传送模块24用于将第四报文传送至端口发出。
104.在一个实施方式中,第一转换模块21具体包括配置单元211、分配单元212和转换单元213。其中,配置单元211用于为dma控制器的第一通道配置与多个特征值对应的多个字节序转换参数组,字节序转换参数组用于描述字节序的转换方式;分配单元212用于为第一报文分配特征值;转换单元213用于基于第一报文的特征值索引对应的字节序转换参数组,以对第一报文进行字节序转换。
105.如上参照图1到图2,对根据本说明书实施例报文收发的方法进行了描述。在以上对方法实施例的描述中所提及的细节,同样适用于本说明书实施例的报文收发的装置。上述的报文收发的装置可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。
106.图5示出了根据本说明书的实施例的电子设备的硬件结构图。如图5所示,电子设备30可以包括至少一个处理器31、存储器32(例如非易失性存储器)、内存33和通信接口34,并且至少一个处理器31、存储器32、内存33和通信接口34经由总线35连接在一起。至少一个处理器31执行在存储器32中存储或编码的至少一个计算机可读指令。
107.应该理解,在存储器32中存储的计算机可执行指令当执行时使得至少一个处理器31进行本说明书的各个实施例中以上结合图1-图2描述的各种操作和功能。
108.在本说明书的实施例中,电子设备30可以包括但不限于:个人计算机、服务器计算机、工作站、桌面型计算机、膝上型计算机、笔记本计算机、移动电子设备、智能电话、平板计算机、蜂窝电话、个人数字助理(pda)、手持装置、消息收发设备、可佩戴电子设备、消费电子设备等等。
109.根据一个实施例,提供了一种比如机器可读介质的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中以上结合图1-图2描述的各种操作和功能。具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
110.在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的可读存储介质构成了本说明书的一部分。
111.可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如cd-rom、cd-r、cd-rw、dvd-rom、dvd-ram、dvd-rw、dvd-rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。
112.本领域技术人员应当理解,上面公开的各个实施例可以在不偏离发明实质的情况下做出各种变形和修改。因此,本说明书的保护范围应当由所附的权利要求书来限定。
113.需要说明的是,上述各流程和各系统结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理客户实现,或者,有些单元可能分由多个物理客户实现,或者,可以
由多个独立设备中的某些部件共同实现。
114.以上各实施例中,硬件单元或模块可以通过机械方式或电气方式实现。例如,一个硬件单元、模块或处理器可以包括永久性专用的电路或逻辑(如专门的处理器,fpga或asic)来完成相应操作。硬件单元或处理器还可以包括可编程逻辑或电路(如通用处理器或其它可编程处理器),可以由软件进行临时的设置以完成相应操作。具体的实现方式(机械方式、或专用的永久性电路、或者临时设置的电路)可以基于成本和时间上的考虑来确定。
115.上面结合附图阐述的具体实施方式描述了示例性实施例,但并不表示可以实现的或者落入权利要求书的保护范围的所有实施例。在整个本说明书中使用的术语“示例性”意味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。
116.本公开内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本公开内容。对于本领域普通技术人员来说,对本公开内容进行的各种修改是显而易见的,并且,也可以在不脱离本公开内容的保护范围的情况下,将本文所对应的一般性原理应用于其它变型。因此,本公开内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1