一种数据通信芯片报文转发的方法和装置与流程

文档序号:33000942发布日期:2023-01-18 01:13阅读:33来源:国知局
一种数据通信芯片报文转发的方法和装置与流程

1.本发明涉及通信技术领域,特别涉及一种数据通信芯片报文转发的方法和装置。


背景技术:

2.在通信领域中,报文转发包括单播转发和组播转发两种形式,顾名思义,单播转发是一对一的通讯模式,组播转发是一对多的通讯模式。
3.现有的数字通信芯片中,报文的单播转发和组播转发过程是通过软件来监测转发端口链路状态,并将监测结果刷新到单播转发表项或者组播转发表项中。现有技术在进行报文转发时,若监测到链路失效的端口时,会从转发表项和组播表项中将失效的端口删除,以此来实现不向失效的端口进行报文复制或者报文转发。但是,通过软件刷新表项是需要时间的,这样会出现表项刷新不及时的问题,进而影响转发效率。另外,如果组播组中配置了通过某一端口进行报文转发,而恰好该端口为失效端口,则需要通过软件将所有包含该端口的组播组的表项都进行刷新,这样一来还会耗费大量的cpu资源,加重cpu负担。


技术实现要素:

4.有鉴于此,本发明提供一种数据通信芯片报文转发的方法和装置,可以在报文转发时及时刷新转发端口,提高报文转发效率,节约cpu资源,减轻cpu负担。
5.为了达到上述目的,本技术第一方面提供了一种数据通信芯片报文转发的方法,包括:读取存储电路中存储的数据结构,所述数据结构用于表示数据通信芯片各输出端口的链路状态,所述链路状态包括链路失效状态和链路有效状态;根据所述各输出端口的链路状态确定是否向相应的输出端口转发报文。
6.本技术通过提供一种数据通信芯片报文转发的方法,通过设置一存储电路来存储表示数据通信芯片各输出端口的链路状态的数据结构,使得在报文转发过程中,不需要依赖于转发表所记录的端口链路信息,而是通过一存储电路直接与数据通信芯片通信,从而防止了转发表信息刷新不及时的问题,避免了存储资源的浪费。另外,由于存储电路可以及时获得端口的链路状态,那么在报文转发过程中就不会出现误发报文或者多余复制报文的问题,这些过程都是需要消耗时间的,因此,从这方面讲,可以提高报文的转发效率。再者,转发表是依赖cpu刷新来进行端口链路更新的,而本技术方案的存储电路是直接与数据通信芯片通信的,不需要依赖cpu获得端口的链路状态,因此可以节约cpu资源,减轻cpu负担。
7.作为第一方面的一种可能的实现方式,所述存储电路包括:状态寄存器和数据选择器;状态寄存器,用于存储所述数据结构;数据选择器,用于根据所述状态寄存器中存储的所述数据结构选择进行报文转发的链路对应的输出端口。
8.上述提供的存储电路的具体实现方式,可以方便的获取到端口链路状态。
9.作为第一方面的一种可能的实现方式,所述根据所述各输出端口的链路状态确定是否向相应的输出端口转发报文,包括:当所述转发为单播转发时,确定所述单播转发的输出端口的链路状态,所述链路状态为有效状态时,将所述报文转发到所述输出端口。
10.作为第一方面的一种可能的实现方式,所述根据所述各输出端口的链路状态确定是否向相应的输出端口转发报文,包括:当所述转发为组播转发时,确定所述组播转发的各输出端口对应的链路状态,通过将所述报文复制到链路状态为有效状态的输出端口的方式转发所述报文。
11.由上,当报文转发为单播转发时,仅向有效状态的链路转发报文,可以提高转发效率;当报文转发为组播转发时,仅向有效状态的链路复制报文,可以节约存储空间,同时也可以提高转发效率。
12.作为第一方面的一种可能的实现方式,所述数据结构通过bitmap结构描述;其中,所述bitmap中的bit位与所述输出端口对应,所述bit位的值用于表示所述输出端口的链路状态。
13.由上,通过bitmap结构来描述数据结构,每个bit位的值表示不同端口的链路状态,可以直观且方便的获得各端口链路状态。
14.作为第一方面的一种可能的实现方式,还包括:实时获取所述数据通信芯片各输出端口的链路状态,并将所述链路状态更新到所述存储电路。若在其他对实时性要求不高的场景中,还可以定期获取数据通信芯片各输出端口的链路状态。
15.作为第一方面的一种可能的实现方式,所述实时获取所述数据通信芯片各输出端口的链路状态,包括:通过软件查询获得所述数据通信芯片各输出端口物理层的链路状态;或者,通过硬件查询获得所述数据通信芯片各输出端口物理层的链路状态。
16.本技术第二方面提供一种数据通信芯片报文转发的装置,包括:读取模块,用于读取存储电路中存储的数据结构,所述数据结构用于表示数据通信芯片各输出端口的链路状态,所述链路状态包括链路失效状态和链路有效状态;确定模块,用于根据所述各输出端口的链路状态确定是否向相应的输出端口转发报文。
17.本方面为基于第一方面数据通信芯片报文转发的方法同一构思的装置,因此,有益效果可以参见上述第一方面的描述。
18.本技术第三方面提供一种数据通信芯片,包括通信端口、存储电路和根据上述第二方面所述的数据通信芯片报文转发的装置;所述数据通信芯片包括通信端口,所述通信端口中包括接收报文的输入端口和转发报文的输出端口;所述存储电路用于存储表示数据通信芯片各输出端口的链路状态的数据结构。
19.本技术第四方面提供一种电子装置,包括:处理器,以及存储器,其上存储有程序指令,所述程序指令当被所述处理器执行时使得所述处理器执行上述第一方面任一项所述的数据通信芯片报文转发的方法。
20.本技术的这些和其它方面在以下(多个)实施例的描述中会更加简明易懂。
附图说明
21.下面参照附图来进一步说明本技术的各个技术特征和它们之间的关系。附图为示例性的,一些技术特征并不以实际比例示出,并且一些附图中可能省略了本技术所属技术领域中惯用的且对于理解和实现本技术并非必不可少的技术特征,或是额外示出了对于理解和实现本技术并非必不可少的技术特征,也就是说,附图所示的各个技术特征的组合并不用于限制本技术。另外,在本技术全文中,相同的附图标记所指代的内容也是相同的。具
体的附图说明如下:
22.图1为本技术实施例提供的一种数据通信芯片的结构示意图;
23.图2为本技术实施例提供的一种数据通信芯片报文转发的方法的流程图;
24.图3为本技术实施例提供的数据通信芯片报文转发方法所应用的场景示意图;
25.图4为本技术实施例提供的一种数据通信芯片报文转发的装置的结构示意图;
26.图5为本技术实施例提供的一种电子装置的结构示意图;
27.图6为本技术实施例提供的另外一种电子装置的结构示意图。
具体实施方式
28.在以下的描述中,所涉及的表示步骤的标号,如s110、s120
……
等,并不表示一定会按此步骤执行,在允许的情况下可以互换前后步骤的顺序,或同时执行。
29.说明书和权利要求书中使用的术语“包括”不应解释为限制于其后列出的内容;它不排除其它的元件或步骤。因此,其应当诠释为指定所提到的所述特征、整体、步骤或部件的存在,但并不排除存在或添加一个或更多其它特征、整体、步骤或部件及其组群。因此,表述“包括装置a和b的设备”不应局限为仅由部件a和b组成的设备。
30.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。如有不一致,以本说明书中所说明的含义或者根据本说明书中记载的内容得出的含义为准。另外,本文中所使用的术语只是为了描述本技术实施例的目的,不是旨在限制本技术。
31.对本技术具体实施方式进行进一步详细说明之前,对本技术实施例中涉及的名词和属于,以及其在本技术中相应的用途\作用\功能等进行说明,本技术实施例中涉及的名词和术语适用于如下的解释:
32.1)单播:单播是主机间一对一的通讯模式。网络中的设备根据报文中包含的目的地址选择传输路径,将单播报文传送到指定的目的地。在单播中,只对接收到的数据进行转发,不会进行复制,从而能够针对每台主机及时响应。
33.2)组播:组播是主机间一对多的通讯模式。报文从一个组播源出发,被转发到一组特定接收者,其中特定接收者通过组播地址来表示,组播地址表示一个群组,需要接收组播报文的接收者都加入到这个群组。
34.如图1所示提供了一种数据通信芯片10,该数据通信芯片10包括单播转发模块110、组播转发模块120、通信端口a1~an和存储电路130。其中,单播转发模块110用于进行报文的单播转发;组播转发模块120用于进行报文的组播转发;通信端口a1~an包括用于接收报文的输入端口和用于转发报文的输出端口;存储电路130用于存储表示数据通信芯片各输出端口(即通信端口a1~an中用于转发报文的输出端口)的链路状态;存储电路130还用于根据各输出端口的链路状态来选择相应的转发接口。
35.在本实施例中,可以在该存储电路130中设置一状态寄存器用来存储表示数据通信芯片各输出端口的链路状态的数据结构,应理解,一般的,该数据结构中包含数据通信芯片中所有用于转发报文的输出端口的链路状态;还可以在存储电路130中设置一数据选择器用于根据各输出端口的链路状态来选择进行报文转发相应的转发接口。
36.作为一种实现方式,存储电路130可以设置在数据通信芯片10的外部(未图示),通
过通信端口实现二者的通信。作为再一种实现方式,存储电路130可以设置在数据通信芯片10上,从而缩短二者的通信时间,提高二者的通信效率。
37.基于本技术实施例提供的数据通信芯片,在需要对报文转发时,不再需要去查询转发表(单播转发表项或者组播组表项)来确定相应的端口链路是否有效;而在需要对报文转发时,根据存储电路中存储中各输出端口的链路状态即可确定相应的端口链路是否有效,从而可以防止转发表刷新不及时的问题。另外,通过设置存储电路来存储各端口的链路状态,则不需要通过cpu来实时对链路状态进行刷新,从而也可以节约cpu资源。
38.下面参见各图,对本技术实施例提供的一种数据通信芯片报文转发的方法进行详细说明。
39.如图2所示为本技术实施例提供的数据通信芯片报文转发的方法的流程图。该方法的实现主要包括步骤s210-s220,下面对各个步骤依次进行介绍:
40.s210:读取存储电路中存储的数据结构,所述数据结构用于表示数据通信芯片各输出端口的链路状态,所述链路状态包括链路失效状态和链路有效状态。
41.在本实施例中,存储电路设置于数据通信芯片端,可以设置于数据通信芯片的外部,也可以设置于数据通信芯片上。当存储电路设置于通信芯片外部时,可以通过通信接口来实现与数据通信芯片的通信。
42.作为一种实现方式,数据结构通过bitmap(位图)的结构来描述。每个bit位的值对应一个输出端口的链路状态。比如,数据结构通过reg[63:0]linkstatus描述,即表示状态寄存器中存在64个bit位,这样该状态寄存器则可以存储64个端口的链路状态。在本实施例中,可以用1来表示链路状态为有效状态,即链路状态为up状态。可以用0来表示链路状态为失效状态,即链路状态为down状态。
[0043]
该存储电路实时读取数据通信芯片phy(端口物理层)的链路状态,并将获取到的链路状态更新到存储电路中状态寄存器的数据结构中。应理解,这里的实时是为了使端口链路状态保持最新状态,在其他实施例中,若不需实时读取,则可以根据实际需求设置为定期读取,即每隔一段时间读取一次。
[0044]
作为再一种实现方式,还可以通过软件查询的方式来获得数据通信芯片phy(端口物理层)的链路状态,同样需要将获得的链路状态更新到存储电路中状态寄存器的数据结构中。
[0045]
s220:根据所述各输出端口的链路状态确定是否向相应的输出端口转发报文。
[0046]
在本实施例中,当转发模式为单播转发时,首先需要考虑本次单播转发所需要的输出端口的链路状态来决定是否执行本次单播转发。在相应端口链路状态为有效状态时,则将报文转发到该输出端口,从而进行报文转发。在相应端口链路状态为失效状态时,则不进行此次的报文转发。
[0047]
例如:当本次单播转发所需要的输出端口为第5号端口,而查询到存储电路中数据结构所记录的第5bit位的值为0,则表示第5号端口的链路状态为失效状态,则不进行本次报文的转发。当本次单播转发所需要的输出端口为第3号端口,而查询到存储电路中数据结构所记录的第3bit位的值为1,则表示第3号端口的链路状态为有效状态,则执行本次单播转发。
[0048]
在本实施例中,当转发模式为组播转发时,首先需要考虑本次组播转发需要用到
的输出端口的链路状态,通过将报文复制到链路状态为有效状态的输出端口来进行报文的组播转发。应理解,若在一组播组中,部分输出端口的链路状态为有效状态,另一部分输出端口的链路状态为无效状态,则仅将报文复制到有效状态输出端口对应的链路上,通过这些有效的链路实现部分组播,对于无效状态输出端口对应的链路,则不进行报文的复制,从而可以节约存储空间,提高转发效率。
[0049]
例如:本次组播组中包括第1号端口、第3号端口和第7号端口,查询到存储电路中数据结构所记录的第1bit位的值为1,则表示第1号端口的链路状态为有效状态;查询到存储电路中数据结构所记录的第3bit位的值为0,则表示第3号端口的链路状态为失效状态;查询到存储电路中数据结构所记录的第7bit位的值为1,则表示第7号端口的链路状态为有效状态;那么,在本次组播转发中,需要将报文复制到第1号端口和第7号端口进行组播转发,而不需要将报文复制到第3号端口。
[0050]
基于本技术实施例提供数据通信芯片报文转发的方法,通过设置一存储电路,并在该存储电路中存储表示数据通信芯片各输出端口的链路状态的数据结构,从而在报文转发过程中通过查询该数据结构来获知各输出端口的链路状态,从而决定向哪些端口转发或复制报文,进而提高了转发效率。
[0051]
接下来结合附图介绍本技术实施例提供的一种数据通信芯片报文转发的方法所应用的场景。
[0052]
本技术实施例提供的数据通信芯片报文转发的方法可以应用于通讯领域的报文转发场景中。具体的,如图3所示,数据通信芯片10接收到数据报文q,该数据报文q中包含有转发模式信息(即通过单播或者组播进行报文转发)和转发端口信息(即通过哪些端口进行转发)。根据报文转发模式信息和转发端口信息从存储电路中查询相关端口的链路状态,并根据获得相关端口的链路状态决定向哪些端口复制或者转发报文。其中,具体的查询方法与转发方法可以参见上述实施例的描述。
[0053]
本技术的另一实施例提供了一种数据通信芯片报文转发的装置,该装置可以由软件系统实现,也可以由硬件设备实现,还可以由软件系统和硬件设备结合来实现。
[0054]
图4示例性地展示了该数据通信芯片报文转发的装置的一种结构化示意图。如图4所示,该数据通信芯片报文转发的装置包括读取模块410和确定模块420。在一种可选的实现方式中,该数据通信芯片报文转发的装置用于执行图2示出的步骤s210-s220中描述的内容。具体的,读取模块410用于读取存储电路中存储的数据结构,所述数据结构用于表示数据通信芯片各输出端口的链路状态,所述链路状态包括链路失效状态和链路有效状态。确定模块420用于根据所述各输出端口的链路状态确定是否向相应的输出端口转发报文。
[0055]
在本实施例中,读取模块410中所涉及的存储电路包括状态寄存器和数据选择器。其中,状态寄存器用于存储所述数据结构;数据选择器用于根据所述状态寄存器中存储的所述数据结构选择进行报文转发的链路对应的输出端口。
[0056]
可选的,确定模块420还可以包括第一转发子模块和第二转发子模块。第一转发子模块用于当所述转发为单播转发时,确定所述单播转发的输出端口的链路状态,所述链路状态为有效状态时,将所述报文转发到所述输出端口。第二转发子模块用于当所述转发为组播转发时,确定所述组播转发的各输出端口对应的链路状态,通过将所述报文复制到链路状态为有效状态的输出端口的方式转发所述报文。
[0057]
其中,该实施例中各个功能模块的具体实现方式和效果可以参见上述数据通信芯片报文转发方法的实施例中的相关介绍,本实施例不再对其进行赘述。
[0058]
本技术实施例还提供一种电子装置,包括处理器,以及存储器。存储器上存储有程序指令,程序指令当被处理器执行时使得处理器执行图4对应的实施例的方法,或其中的各可选实施例。
[0059]
图5是本技术实施例提供的一种电子装置500的结构性示意性图。该电子装置500包括:处理器510、存储器520。
[0060]
应理解,图5中所示的电子装置500中还可包括通信接口530,可以用于与其他设备之间进行通信。
[0061]
其中,该处理器510可以与存储器520连接。该存储器520可以用于存储该程序代码和数据。因此,该存储器520可以是处理器510内部的存储单元,也可以是与处理器510独立的外部存储单元,还可以是包括处理器510内部的存储单元和与处理器510独立的外部存储单元的部件。
[0062]
可选的,电子装置500还可以包括总线。其中,存储器520、通信接口530可以通过总线与处理器510连接。总线可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。所述总线可以分为地址总线、数据总线、控制总线等。
[0063]
应理解,在本技术实施例中,该处理器510可以采用中央处理单元(central processing unit,cpu)。该处理器还可以是其它通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门矩阵(field programmable gate array,fpga)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。或者该处理器510采用一个或多个集成电路,用于执行相关程序,以实现本技术实施例所提供的技术方案。
[0064]
该存储器520可以包括只读存储器和随机存取存储器,并向处理器510提供指令和数据。处理器510的一部分还可以包括非易失性随机存取存储器。例如,处理器510还可以存储设备类型的信息。
[0065]
在电子装置500运行时,所述处理器510执行所述存储器520中的计算机执行指令执行上述方法的操作步骤。
[0066]
应理解,根据本技术实施例的电子装置500可以对应于执行根据本技术各实施例的方法中的相应主体,并且电子装置500中的各个模块的上述和其它操作和/或功能分别为了实现本实施例各方法的相应流程,为了简洁,在此不再赘述。
[0067]
本技术实施例还提供了另外一种电子装置,如图6所示为该实施例提供的另一种电子装置600的结构性示意性图,包括:处理器610,以及接口电路620,其中,处理器610通过接口电路620访问存储器,存储器存储有程序指令,程序指令当被处理器执行时使得处理器执行图5对应的实施例的方法。另外,该电子装置还可包括通信接口、总线等,具体可参见图5所示的实施例中的介绍,不再赘述。示例性的,该接口电路620可以为can总线或者lin总线。
[0068]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单
元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0069]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0070]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0071]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0072]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0073]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0074]
本技术实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时用于执行一种数据通信芯片报文转发的方法,该方法包括上述各个实施例所描述的方案中的至少之一。
[0075]
本技术实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0076]
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限
于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0077]
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括、但不限于无线、电线、光缆、rf等等,或者上述的任意合适的组合。
[0078]
可以以一种或多种程序设计语言或其组合来编写用于执行本技术操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0079]
注意,上述仅为本技术的较佳实施例及所运用的技术原理。本领域技术人员会理解,本技术不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本技术的保护范围。因此,虽然通过以上实施例对本技术进行了较为详细的说明,但是本技术不仅仅限于以上实施例,在不脱离本技术的构思的情况下,还可以包括更多其他等效实施例,均属于本技术的保护范畴。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1