CN105610730B - Cpu与网络设备之间的消息交互方法及系统 - Google Patents
Cpu与网络设备之间的消息交互方法及系统 Download PDFInfo
- Publication number
- CN105610730B CN105610730B CN201410665153.8A CN201410665153A CN105610730B CN 105610730 B CN105610730 B CN 105610730B CN 201410665153 A CN201410665153 A CN 201410665153A CN 105610730 B CN105610730 B CN 105610730B
- Authority
- CN
- China
- Prior art keywords
- preset
- message
- descriptor
- cpu
- state identifier
- 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
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种CPU与网络设备之间的消息交互方法,包括以下步骤:CPU在待发送的消息中加入从预设描述符中获取的序列号生成封装消息,并对所述预设描述符的状态标识符更新后将所述预设描述符加入预设的发送流队列;CPU将所述封装消息发送至网络设备;网络设备对所述封装消息进行处理,并将预设的发送流队列中所述预设描述符的状态标识符进行更新;CPU获取并分析预设的发送流队列中所述预设描述符的状态标识符,并基于所述预设描述符的状态标识符从网络设备中读取所述封装消息内容。本发明提升了消息的传输效率,满足CPU与网络设备存在大量消息交互时的性能要求。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种CPU与网络设备之间的消息交互方法及系统。
背景技术
随着网络技术的极速发展,网络流量随之增长并出现了许多新的网络业务,需要网络设备具有线速和灵活的处理能力。网络设备如网络处理器等凭借其高速的处理能力及灵活的编程能力在网络交换领域得到了广泛应用。
网络处理器在运行过程中,中央处理器(Central Processing Unit,简称CPU)的控制层软件会频繁的与网络处理器进行交互,读写网络处理器外部、内部的表项、内部寄存器等。目前在有的网络处理器中,其表项及寄存器配置是通过CPU与网络处理器进行消息交互实现的,比如读一个外部SRAM地址的表项内容,就是通过CPU向网络处理器发送一条读消息来实现。
由于每条消息在网络处理器中的处理延时不同,如果CPU采用异步方式来发送消息,经过在网络处理器中的处理后,CPU接收的消息就会乱序。因此,现有的解决消息收发乱序的问题通常是采用同步方式来发送消息,即CPU发送一条消息,在接收完后再发送下一条。虽然采用同步方式发送消息可以解决消息收发乱序的问题,但会导致消息收发的效率低下,不能满足CPU与网络处理器存在大量消息交互时的性能要求。
发明内容
本发明的主要目的在于提供一种CPU与网络设备之间的消息交互方法及系统,以解决现有的CPU与网络设备之间同步传输消息效率低下的技术问题。
为实现上述目的,本发明提供的一种CPU与网络设备之间的消息交互方法,所述方法包括以下步骤:
CPU在待发送的消息中加入从预设描述符中获取的序列号生成封装消息,并对所述预设描述符的状态标识符更新后将所述预设描述符加入预设的发送流队列;
CPU将所述封装消息发送至网络设备;
网络设备对所述封装消息进行处理,并将预设的发送流队列中所述预设描述符的状态标识符进行更新;
CPU获取并分析预设的发送流队列中所述预设描述符的状态标识符,并基于所述预设描述符的状态标识符从网络设备中读取所述封装消息内容。
优选地,所述CPU在待发送的消息中加入从预设描述符中获取的序列号生成封装消息,并对所述预设描述符的状态标识符更新后将所述预设描述符加入预设的发送流队列的步骤之前还包括:
网络设备预先建立一描述符资源池,以供CPU在发送消息时,从所述描述符资源池中获取描述符,及CPU在读取消息后,将描述符释放至所述描述符资源池中。
优选地,所述预设描述符中的状态标识符至少包括:
发送接收状态标记位、处理出错标记位、消息地址标记位。
优选地,所述CPU获取并分析预设的发送流队列中所述预设描述符的状态标识符,并基于所述预设描述符的状态标识符从网络设备中读取所述封装消息内容的步骤包括:
当CPU根据预设的发送流队列中所述预设描述符的状态标识符分析所述封装消息处于接收状态,且在网络设备中的处理过程没有出错,则CPU根据所述状态标识符中的消息地址从网络设备中读取所述封装消息内容,并将所述预设描述符中的状态标识符初始化后从预设的发送流队列中释放所述预设描述符。
优选地,所述CPU获取并分析预设的发送流队列中所述预设描述符的状态标识符,并基于所述预设描述符的状态标识符从网络设备中读取所述封装消息内容的步骤还包括:
当CPU根据预设的发送流队列中所述预设描述符的状态标识符分析所述封装消息处于发送状态,则延迟预设时间后再次根据所述状态标识符判断所述封装消息的发送接收状态,若分析所述封装消息仍处于发送状态,则将所述预设描述符中的状态标识符初始化后重新加入预设的发送流队列。
优选地,所述CPU获取并分析预设的发送流队列中所述预设描述符的状态标识符,并基于所述预设描述符的状态标识符从网络设备中读取所述封装消息内容的步骤还包括:
当CPU根据预设的发送流队列中所述预设描述符的状态标识符分析所述封装消息处于接收状态,且在网络设备中的处理过程出错,则将预设描述符中的状态标识符初始化后重新加入预设的发送流队列。
此外,为实现上述目的,本发明还提供一种消息交互系统,所述系统包括:CPU及网络设备,其中,
所述CPU,用于在待发送的消息中加入从预设描述符中获取的序列号生成封装消息,并对所述预设描述符的状态标识符更新后将所述预设描述符加入预设的发送流队列;将所述封装消息发送至网络设备;获取并分析预设的发送流队列中所述预设描述符的状态标识符,并基于所述预设描述符的状态标识符从网络设备中读取所述封装消息内容;
所述网络设备,用于对所述封装消息进行处理,并将预设的发送流队列中所述预设描述符的状态标识符进行更新。
优选地,所述网络设备还用于:
预先建立一描述符资源池,以供CPU在发送消息时,从所述描述符资源池中获取描述符,及CPU在读取消息后,将描述符释放至所述描述符资源池中。
优选地,所述预设描述符中的状态标识符至少包括:
发送接收状态标记位、处理出错标记位、消息地址标记位。
优选地,所述CPU还用于:
当根据预设的发送流队列中所述预设描述符的状态标识符分析所述封装消息处于接收状态,且在网络设备中的处理过程没有出错,则根据所述状态标识符中的消息地址从网络设备中读取所述封装消息内容,并将所述预设描述符中的状态标识符初始化后从预设的发送流队列中释放所述预设描述符。
优选地,所述CPU还用于:
当根据预设的发送流队列中所述预设描述符的状态标识符分析所述封装消息处于发送状态,则延迟预设时间后再次根据所述状态标识符判断所述封装消息的发送接收状态,若分析所述封装消息仍处于发送状态,则将所述预设描述符中的状态标识符初始化后重新加入预设的发送流队列。
优选地,所述CPU还用于:
当根据预设的发送流队列中所述预设描述符的状态标识符分析所述封装消息处于接收状态,且在网络设备中的处理过程出错,则将预设描述符中的状态标识符初始化后重新加入预设的发送流队列。
本发明提出的一种CPU与网络设备之间的消息交互方法及系统,通过在待发送的消息中加入从预设描述符中获取的序列号来对消息进行封装,并将该序列号对应的预设描述符加入预设的发送流队列中,在CPU将封装消息发送至网络设备进行处理后,网络设备可根据处理情况将预设的发送流队列中预设描述符的状态标识符进行更新,CPU根据预设的发送流队列中更新后的状态标识符即可获知封装消息的相关状态,并从网络设备中读取所述封装消息内容,由于每个消息中都封装了对应的序列号,使得CPU能将发送至网络设备及接收的消息通过序列号来进行关联识别,避免了CPU与网络设备之间在进行异步消息交互时,因消息乱序而无法将发送消息与接收消息进行识别,造成消息收发混乱的情况发生,使得CPU与网络设备之间进行消息交互时可同时发送多个消息至网络设备,CPU与网络设备之间通过异步方式来进行消息交互提升了消息的传输效率,满足CPU与网络设备存在大量消息交互时的性能要求。
附图说明
图1为本发明CPU与网络设备之间的消息交互方法第一实施例的流程示意图;
图2为本发明CPU与网络设备之间的消息交互方法第二实施例的流程示意图;
图3为本发明消息交互系统一实施例的结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种CPU与网络设备之间的消息交互方法。
需要说明的是,本发明实施例中,该网络设备可以是具有高速处理能力及灵活编程能力的网络处理设备,如交换机、网络处理器等,本发明实施例中仅以网络设备为网络处理器为例进行说明,当然,也不限定该网络设备为其他设备。
参照图1,图1为本发明CPU与网络设备之间的消息交互方法第一实施例的流程示意图。
在第一实施例中,该CPU与网络设备之间的消息交互方法包括:
步骤S10,CPU在待发送的消息中加入从预设描述符中获取的序列号生成封装消息,并对所述预设描述符的状态标识符更新后将所述预设描述符加入预设的发送流队列;
本实施例中,CPU要发送消息时,在消息中加入从预设描述符中获取的序列号生成封装消息,其中,预设描述符中包括自定义的序列号(Sequence ID,简称SID)字段,及状态标识符。CPU在待发送的消息头中加入预设描述符中的序列号,以通过预设描述符中的序列号对每个发送的封装消息进行区分识别。
本实施例中预设描述符中的状态标识符包括标记封装消息在消息交互过程中各种状态的对应状态标记位,其中,所述预设描述符中的状态标识符至少包括:发送接收状态标记位transmit、处理出错标记位fail、消息地址标记位buffer。transmit标记位用于标记封装消息是处于发送状态还是接收状态,如可在封装消息处于发送状态时将transmit标记位置1,在封装消息处于接收状态时将transmit标记位置0,以此来区分封装消息的发送接收状态。fail标记位用于标记网络处理器在处理封装消息时是否出错,如可在封装消息出错时将fail标记位置1,否则置0。buffer标记位用于标记封装消息在网络处理器中存储的地址。将所述预设描述符的状态标识符加入预设的发送流队列中,以对封装消息在消息交互过程中的各种状态进行管理,如CPU在完成对待发送的消息封装后,可将封装消息的序列号对应的预设描述符中状态标识符进行更新,如可将状态标识符的transmit标记位置1,并将预设描述符加入预设的发送流队列,即可根据预设描述符中状态标识符的transmit标记对封装消息进行发送。需要说明的是,为了发送流队列管理的方便,在将预设描述符加入预设的发送流队列时,将预设描述符加入预设的发送流队列尾部,这样,在同时传输多个消息时,CPU接收网络处理器返回的消息时,直接获取发送流队列头部的预设描述符进行分析即可,当然,本实施例中也不限定发送流队列为其他的管理方式。
步骤S20,CPU将所述封装消息发送至网络设备;
CPU完成消息的封装后,将生成的封装消息通过总线发送至网络处理器。
步骤S30,网络设备对所述封装消息进行处理,并将预设的发送流队列中所述预设描述符的状态标识符进行更新;
网络处理器收到CPU发送的封装消息后,对封装消息进行处理,包括写表、读寄存器等操作,并将预设的发送流队列中所述预设描述符的状态标识符进行更新。其中,网络处理器会为每一封装消息处理后的消息内容分配一内存,将该消息内容拷贝至分配的内存地址中,同时,网络处理器将分配的内存地址赋给预设的发送流队列中与封装消息的序列号对应的预设描述符中的buffer标记位;若网络处理器在对封装消息进行处理过程中出错,如写表失败、读寄存器失败等,则网络处理器将预设的发送流队列中与封装消息的序列号对应的预设描述符中的fail标记位置1,标记该封装消息处理过程出错,否则,将fail标记位置0;同时,网络处理器将预设的发送流队列中与封装消息的序列号对应的预设描述符中的transmit标记位置0,以使CPU接收网络处理器处理完的消息。
步骤S40,CPU获取并分析预设的发送流队列中所述预设描述符的状态标识符,并基于所述预设描述符的状态标识符从网络设备中读取所述封装消息内容。
CPU可在发送流队列头部获取与封装消息的序列号对应的预设描述符的状态标识符,并对预设描述符的状态标识符进行分析,获知封装消息经网络处理器处理后的各种状态,如处理过程中是否出错等,并根据所述预设描述符的状态标识符buffer标记位中的地址信息从网络处理器分配的内存中读取所述封装消息内容,完成CPU与网络处理器之间的消息交互。
本实施例通过在待发送的消息中加入从预设描述符中获取的序列号来对消息进行封装,并将该序列号对应的预设描述符加入预设的发送流队列中,在CPU将封装消息发送至网络设备进行处理后,网络设备可根据处理情况将预设的发送流队列中预设描述符的状态标识符进行更新,CPU根据预设的发送流队列中更新后的状态标识符即可获知封装消息的相关状态,并从网络设备中读取所述封装消息内容,由于每个消息中都封装了对应的序列号,使得CPU能将发送至网络设备及接收的消息通过序列号来进行关联识别,避免了CPU与网络设备之间在进行异步消息交互时,因消息乱序而无法将发送消息与接收消息进行识别,造成消息收发混乱的情况发生,使得CPU与网络设备之间进行消息交互时可同时发送多个消息至网络设备,CPU与网络设备之间通过异步方式来进行消息交互提升了消息的传输效率,满足CPU与网络设备存在大量消息交互时的性能要求。
具体地,上述步骤S40可以包括:
当CPU根据预设的发送流队列中所述预设描述符的状态标识符分析所述封装消息处于接收状态,且在网络处理器中的处理过程没有出错,如transmit标记位置0,且fail标记位置0,则CPU根据所述状态标识符中buffer标记位中的消息地址从网络处理器中的内存中读取所述封装消息内容,完成该封装消息内容的接收,并将所述预设描述符中的状态标识符初始化后从预设的发送流队列中释放所述预设描述符,结束此次封装消息的发送接收过程,避免根据预设的发送流队列中的所述预设描述符重复发送。
在其他实施例中,上述步骤S40还可以包括:
当CPU根据预设的发送流队列中所述预设描述符的状态标识符分析所述封装消息处于发送状态,如transmit标记位置1,则延迟预设时间后再次根据所述状态标识符中的transmit标记位判断所述封装消息的发送接收状态,若延迟预设时间后transmit标记位仍置1,则所述封装消息仍处于发送状态,并极有可能在传输过程中发生意外如所述封装消息丢失的情况,则将所述预设描述符中的状态标识符初始化后重新加入预设的发送流队列尾部,以根据重新加入预设的发送流队列的所述预设描述符来对封装有所述预设描述符中序列号的封装消息进行重新发送和接收,这样,在发现封装消息传输过程中丢失时,重新发送该封装消息,保证了CPU与网络处理器之间消息传输的可靠性。
在其他实施例中,上述步骤S40还可以包括:
当CPU根据预设的发送流队列中所述预设描述符的状态标识符分析所述封装消息处于接收状态,且在网络处理器中的处理过程出错,如transmit标记位置1,且fail标记位置1,则说明该封装消息在网络处理器中的处理过程出错,需要进行重新发送,则将所述预设描述符中的状态标识符初始化后重新加入预设的发送流队列尾部,以根据重新加入预设的发送流队列的所述预设描述符来对封装有所述预设描述符中序列号的封装消息进行重新发送和接收,这样,在发现封装消息在传输过程中出错时,重新发送该封装消息,进一步地保证了CPU与网络处理器之间消息传输的可靠性。
如图2所示,本发明第二实施例提出一种CPU与网络设备之间的消息交互方法,在上述第一实施例的基础上,在上述步骤S10之前还包括:
步骤S50,网络设备预先建立一描述符资源池,以供CPU在发送消息时,从所述描述符资源池中获取描述符,及CPU在读取消息后,将描述符释放至所述描述符资源池中。
本实施例与上述第一实施例的区别在于,本实施例还包括网络设备预先建立一描述符资源池的操作。
在实际应用中,本实施例网络设备会预先建立一描述符资源池,描述符资源池包含若干不同序列号的描述符,其中,不同描述符中的序列号可取值0-N,N的取值可根据需要进行设定,描述符资源池中利用链表来管理各个描述符。CPU需要在待发送的消息中加入序列号时,可直接从建立的描述符资源池中获取一描述符,将获取的描述符中的序列号加入待发送的消息中以进行消息封装,而无需由CPU来预先设定或生成描述符,更加方便,且CPU在读取消息后,还可将已用完的描述符释放至所述描述符资源池中,供下次使用,这样,即可利用描述符资源池来对描述符也即封装消息中的序列号进行循环管理,减轻了系统负担,进一步地提升了CPU与网络设备之间消息交互的效率。
本发明进一步提供一种消息交互系统。
参照图3,图3为本发明消息交互系统一实施例的结构示意图。
在一实施例中,该消息交互系统包括:CPU1及网络设备2,其中,
所述CPU1,用于在待发送的消息中加入从预设描述符中获取的序列号生成封装消息,并对所述预设描述符的状态标识符更新后将所述预设描述符加入预设的发送流队列;将所述封装消息发送至网络设备2;获取并分析预设的发送流队列中所述预设描述符的状态标识符,并基于所述预设描述符的状态标识符从网络设备2中读取所述封装消息内容。
所述网络设备2,用于对所述封装消息进行处理,并将预设的发送流队列中所述预设描述符的状态标识符进行更新。
本实施例中,CPU1要发送消息时,在消息中加入从预设描述符中获取的序列号生成封装消息,其中,预设描述符中包括自定义的序列号(Sequence ID,简称SID)字段,及状态标识符。CPU1在待发送的消息头中加入预设描述符中的序列号,以通过预设描述符中的序列号对每个发送的封装消息进行区分识别。
本实施例中预设描述符中的状态标识符包括标记封装消息在消息交互过程中各种状态的对应状态标记位,其中,所述预设描述符中的状态标识符至少包括:发送接收状态标记位transmit、处理出错标记位fail、消息地址标记位buffer。transmit标记位用于标记封装消息是处于发送状态还是接收状态,如可在封装消息处于发送状态时将transmit标记位置1,在封装消息处于接收状态时将transmit标记位置0,以此来区分封装消息的发送接收状态。fail标记位用于标记网络处理器在处理封装消息时是否出错,如可在封装消息出错时将fail标记位置1,否则置0。buffer标记位用于标记封装消息在网络处理器中存储的地址。将所述预设描述符的状态标识符加入预设的发送流队列中,以对封装消息在消息交互过程中的各种状态进行管理,如CPU1在完成对待发送的消息封装后,可将封装消息的序列号对应的预设描述符中状态标识符进行更新,如可将状态标识符的transmit标记位置1,并将预设描述符加入预设的发送流队列,即可根据预设描述符中状态标识符的transmit标记对封装消息进行发送。需要说明的是,为了发送流队列管理的方便,在将预设描述符加入预设的发送流队列时,将预设描述符加入预设的发送流队列尾部,这样,在同时传输多个消息时,CPU1接收网络处理器返回的消息时,直接获取发送流队列头部的预设描述符进行分析即可,当然,本实施例中也不限定发送流队列为其他的管理方式。
CPU1完成消息的封装后,将生成的封装消息通过总线发送至网络处理器。
网络处理器收到CPU1发送的封装消息后,对封装消息进行处理,包括写表、读寄存器等操作,并将预设的发送流队列中所述预设描述符的状态标识符进行更新。其中,网络处理器会为每一封装消息处理后的消息内容分配一内存,将该消息内容拷贝至分配的内存地址中,同时,网络处理器将分配的内存地址赋给预设的发送流队列中与封装消息的序列号对应的预设描述符中的buffer标记位;若网络处理器在对封装消息进行处理过程中出错,如写表失败、读寄存器失败等,则网络处理器将预设的发送流队列中与封装消息的序列号对应的预设描述符中的fail标记位置1,标记该封装消息处理过程出错,否则,将fail标记位置0;同时,网络处理器将预设的发送流队列中与封装消息的序列号对应的预设描述符中的transmit标记位置0,以使CPU1接收网络处理器处理完的消息。
CPU1可在发送流队列头部获取与封装消息的序列号对应的预设描述符的状态标识符,并对预设描述符的状态标识符进行分析,获知封装消息经网络处理器处理后的各种状态,如处理过程中是否出错等,并根据所述预设描述符的状态标识符buffer标记位中的地址信息从网络处理器分配的内存中读取所述封装消息内容,完成CPU1与网络处理器之间的消息交互。
本实施例通过在待发送的消息中加入从预设描述符中获取的序列号来对消息进行封装,并将该序列号对应的预设描述符加入预设的发送流队列中,在CPU1将封装消息发送至网络设备2进行处理后,网络设备2可根据处理情况将预设的发送流队列中预设描述符的状态标识符进行更新,CPU1根据预设的发送流队列中更新后的状态标识符即可获知封装消息的相关状态,并从网络设备2中读取所述封装消息内容,由于每个消息中都封装了对应的序列号,使得CPU1能将发送至网络设备2及接收的消息通过序列号来进行关联识别,避免了CPU1与网络设备2之间在进行异步消息交互时,因消息乱序而无法将发送消息与接收消息进行识别,造成消息收发混乱的情况发生,使得CPU1与网络设备2之间进行消息交互时可同时发送多个消息至网络设备2,CPU1与网络设备2之间通过异步方式来进行消息交互提升了消息的传输效率,满足CPU1与网络设备2存在大量消息交互时的性能要求。
具体地,所述CPU1还用于:
当CPU1根据预设的发送流队列中所述预设描述符的状态标识符分析所述封装消息处于接收状态,且在网络处理器中的处理过程没有出错,如transmit标记位置0,且fail标记位置0,则CPU1根据所述状态标识符中buffer标记位中的消息地址从网络处理器中的内存中读取所述封装消息内容,完成该封装消息内容的接收,并将所述预设描述符中的状态标识符初始化后从预设的发送流队列中释放所述预设描述符,结束此次封装消息的发送接收过程,避免根据预设的发送流队列中的所述预设描述符重复发送。
在其他实施例中,所述CPU1还用于:
当CPU1根据预设的发送流队列中所述预设描述符的状态标识符分析所述封装消息处于发送状态,如transmit标记位置1,则延迟预设时间后再次根据所述状态标识符中的transmit标记位判断所述封装消息的发送接收状态,若延迟预设时间后transmit标记位仍置1,则所述封装消息仍处于发送状态,并极有可能在传输过程中发生意外如所述封装消息丢失的情况,则将所述预设描述符中的状态标识符初始化后重新加入预设的发送流队列尾部,以根据重新加入预设的发送流队列的所述预设描述符来对封装有所述预设描述符中序列号的封装消息进行重新发送和接收,这样,在发现封装消息传输过程中丢失时,重新发送该封装消息,保证了CPU1与网络处理器之间消息传输的可靠性。
在其他实施例中,所述CPU1还用于:
当CPU1根据预设的发送流队列中所述预设描述符的状态标识符分析所述封装消息处于接收状态,且在网络处理器中的处理过程出错,如transmit标记位置1,且fail标记位置1,则说明该封装消息在网络处理器中的处理过程出错,需要进行重新发送,则将所述预设描述符中的状态标识符初始化后重新加入预设的发送流队列尾部,以根据重新加入预设的发送流队列的所述预设描述符来对封装有所述预设描述符中序列号的封装消息进行重新发送和接收,这样,在发现封装消息在传输过程中出错时,重新发送该封装消息,进一步地保证了CPU1与网络处理器之间消息传输的可靠性。
在其他实施例中,所述网络设备2还用于:
预先建立一描述符资源池,以供CPU1在发送消息时,从所述描述符资源池中获取描述符,及CPU1在读取消息后,将描述符释放至所述描述符资源池中。
本实施例与上述第一实施例的区别在于,本实施例还包括网络设备2预先建立一描述符资源池的操作。
在实际应用中,本实施例网络设备2会预先建立一描述符资源池,描述符资源池包含若干不同序列号的描述符,其中,不同描述符中的序列号可取值0-N,N的取值可根据需要进行设定,描述符资源池中利用链表来管理各个描述符。CPU1需要在待发送的消息中加入序列号时,可直接从建立的描述符资源池中获取一描述符,将获取的描述符中的序列号加入待发送的消息中以进行消息封装,而无需由CPU1来预先设定或生成描述符,更加方便,且CPU1在读取消息后,还可将已用完的描述符释放至所述描述符资源池中,供下次使用,这样,即可利用描述符资源池来对描述符也即封装消息中的序列号进行循环管理,减轻了系统负担,进一步地提升了CPU1与网络设备2之间消息交互的效率。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (12)
1.一种CPU与网络设备之间的消息交互方法,其特征在于,所述方法包括以下步骤:
CPU在待发送的消息中加入从预设描述符中获取的序列号生成封装消息,并对所述预设描述符的状态标识符更新后将所述预设描述符加入预设的发送流队列;
CPU将所述封装消息发送至网络设备;
网络设备对所述封装消息进行处理,并将预设的发送流队列中所述预设描述符的状态标识符进行更新;
CPU获取并分析预设的发送流队列中所述预设描述符的状态标识符,并基于所述预设描述符的状态标识符从网络设备中读取所述封装消息内容。
2.如权利要求1所述的CPU与网络设备之间的消息交互方法,其特征在于,所述CPU在待发送的消息中加入从预设描述符中获取的序列号生成封装消息,并对所述预设描述符的状态标识符更新后将所述预设描述符加入预设的发送流队列的步骤之前还包括:
网络设备预先建立一描述符资源池,以供CPU在发送消息时,从所述描述符资源池中获取描述符,及CPU在读取消息后,将描述符释放至所述描述符资源池中。
3.如权利要求1所述的CPU与网络设备之间的消息交互方法,其特征在于,所述预设描述符中的状态标识符包括以下任一或组合:
发送接收状态标记位、处理出错标记位、消息地址标记位。
4.如权利要求1至3中任一项所述的CPU与网络设备之间的消息交互方法,其特征在于,所述CPU获取并分析预设的发送流队列中所述预设描述符的状态标识符,并基于所述预设描述符的状态标识符从网络设备中读取所述封装消息内容的步骤包括:
当CPU根据预设的发送流队列中所述预设描述符的状态标识符分析所述封装消息处于接收状态,且在网络设备中的处理过程没有出错,则CPU根据所述状态标识符中的消息地址从网络设备中读取所述封装消息内容,并将所述预设描述符中的状态标识符初始化后从预设的发送流队列中释放所述预设描述符。
5.如权利要求1至3中任一项所述的CPU与网络设备之间的消息交互方法,其特征在于,所述CPU获取并分析预设的发送流队列中所述预设描述符的状态标识符,并基于所述预设描述符的状态标识符从网络设备中读取所述封装消息内容的步骤还包括:
当CPU根据预设的发送流队列中所述预设描述符的状态标识符分析所述封装消息处于发送状态,则延迟预设时间后再次根据所述状态标识符判断所述封装消息的发送接收状态,若分析所述封装消息仍处于发送状态,则将所述预设描述符中的状态标识符初始化后重新加入预设的发送流队列。
6.如权利要求1至3中任一项所述的CPU与网络设备之间的消息交互方法,其特征在于,所述CPU获取并分析预设的发送流队列中所述预设描述符的状态标识符,并基于所述预设描述符的状态标识符从网络设备中读取所述封装消息内容的步骤还包括:
当CPU根据预设的发送流队列中所述预设描述符的状态标识符分析所述封装消息处于接收状态,且在网络设备中的处理过程出错,则将预设描述符中的状态标识符初始化后重新加入预设的发送流队列。
7.一种消息交互系统,其特征在于,所述系统包括:CPU及网络设备,其中,
所述CPU,用于在待发送的消息中加入从预设描述符中获取的序列号生成封装消息,并对所述预设描述符的状态标识符更新后将所述预设描述符加入预设的发送流队列;将所述封装消息发送至网络设备;获取并分析预设的发送流队列中所述预设描述符的状态标识符,并基于所述预设描述符的状态标识符从网络设备中读取所述封装消息内容;
所述网络设备,用于对所述封装消息进行处理,并将预设的发送流队列中所述预设描述符的状态标识符进行更新。
8.如权利要求7所述的系统,其特征在于,所述网络设备还用于:
预先建立一描述符资源池,以供CPU在发送消息时,从所述描述符资源池中获取描述符,及CPU在读取消息后,将描述符释放至所述描述符资源池中。
9.如权利要求7所述的系统,其特征在于,所述预设描述符中的状态标识符包括以下任一或组合:
发送接收状态标记位、处理出错标记位、消息地址标记位。
10.如权利要求7至9中任一项所述的系统,其特征在于,所述CPU还用于:
当根据预设的发送流队列中所述预设描述符的状态标识符分析所述封装消息处于接收状态,且在网络设备中的处理过程没有出错,则根据所述状态标识符中的消息地址从网络设备中读取所述封装消息内容,并将所述预设描述符中的状态标识符初始化后从预设的发送流队列中释放所述预设描述符。
11.如权利要求7至9中任一项所述的系统,其特征在于,所述CPU还用于:
当根据预设的发送流队列中所述预设描述符的状态标识符分析所述封装消息处于发送状态,则延迟预设时间后再次根据所述状态标识符判断所述封装消息的发送接收状态,若分析所述封装消息仍处于发送状态,则将所述预设描述符中的状态标识符初始化后重新加入预设的发送流队列。
12.如权利要求7至9中任一项所述的系统,其特征在于,所述CPU还用于:
当根据预设的发送流队列中所述预设描述符的状态标识符分析所述封装消息处于接收状态,且在网络设备中的处理过程出错,则将预设描述符中的状态标识符初始化后重新加入预设的发送流队列。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410665153.8A CN105610730B (zh) | 2014-11-19 | 2014-11-19 | Cpu与网络设备之间的消息交互方法及系统 |
PCT/CN2015/077532 WO2016078334A1 (zh) | 2014-11-19 | 2015-04-27 | Cpu与网络设备之间的消息交互方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410665153.8A CN105610730B (zh) | 2014-11-19 | 2014-11-19 | Cpu与网络设备之间的消息交互方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105610730A CN105610730A (zh) | 2016-05-25 |
CN105610730B true CN105610730B (zh) | 2020-03-13 |
Family
ID=55990272
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410665153.8A Active CN105610730B (zh) | 2014-11-19 | 2014-11-19 | Cpu与网络设备之间的消息交互方法及系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105610730B (zh) |
WO (1) | WO2016078334A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110362587A (zh) * | 2019-07-12 | 2019-10-22 | 上海瀚银信息技术有限公司 | 一种数据交换方法 |
CN112448898A (zh) * | 2019-08-28 | 2021-03-05 | 无锡江南计算技术研究所 | 基于序列号机制的消息保序方法 |
CN112306928B (zh) * | 2020-11-19 | 2023-02-28 | 山东云海国创云计算装备产业创新中心有限公司 | 一种面向流传输的直接内存访问方法以及dma控制器 |
CN112887196B (zh) * | 2021-01-20 | 2023-03-24 | 远景智能国际私人投资有限公司 | 消息发送方法、系统、装置、设备及可读存储介质 |
CN114911581B (zh) * | 2022-07-19 | 2022-09-23 | 深圳星云智联科技有限公司 | 数据通信方法及相关产品 |
CN114968264B (zh) * | 2022-07-28 | 2022-10-25 | 新华三半导体技术有限公司 | 一种网络处理器交互系统、方法、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101009649A (zh) * | 2006-01-24 | 2007-08-01 | 三星电子株式会社 | 网络处理器中的队列管理 |
CN101175033A (zh) * | 2007-11-27 | 2008-05-07 | 中兴通讯股份有限公司 | 报文保序方法及其装置 |
CN101291546A (zh) * | 2008-06-11 | 2008-10-22 | 清华大学 | 核心路由器交换结构协处理器 |
CN101882089A (zh) * | 2009-05-07 | 2010-11-10 | 中兴通讯股份有限公司 | 一种采用多线程处理业务会话应用的方法及装置 |
JP2012222441A (ja) * | 2011-04-05 | 2012-11-12 | Denso Corp | 車載通信装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102201992B (zh) * | 2011-05-25 | 2013-09-25 | 上海理工大学 | 面向流处理器并行环境的数据流通信系统及其通信方法 |
-
2014
- 2014-11-19 CN CN201410665153.8A patent/CN105610730B/zh active Active
-
2015
- 2015-04-27 WO PCT/CN2015/077532 patent/WO2016078334A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101009649A (zh) * | 2006-01-24 | 2007-08-01 | 三星电子株式会社 | 网络处理器中的队列管理 |
CN101175033A (zh) * | 2007-11-27 | 2008-05-07 | 中兴通讯股份有限公司 | 报文保序方法及其装置 |
CN101291546A (zh) * | 2008-06-11 | 2008-10-22 | 清华大学 | 核心路由器交换结构协处理器 |
CN101882089A (zh) * | 2009-05-07 | 2010-11-10 | 中兴通讯股份有限公司 | 一种采用多线程处理业务会话应用的方法及装置 |
JP2012222441A (ja) * | 2011-04-05 | 2012-11-12 | Denso Corp | 車載通信装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2016078334A1 (zh) | 2016-05-26 |
CN105610730A (zh) | 2016-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105610730B (zh) | Cpu与网络设备之间的消息交互方法及系统 | |
US10868767B2 (en) | Data transmission method and apparatus in optoelectronic hybrid network | |
CN111512603B (zh) | 一种数据传输方法及第一设备 | |
WO2017067391A1 (zh) | 虚拟机的数据共享方法及装置 | |
CN110380970B (zh) | 一种适用于异构网络的自适应数据报文转发方法及装置 | |
CN110061914B (zh) | 一种报文转发方法及装置 | |
CN112039796B (zh) | 数据包传输方法和装置、存储介质和电子设备 | |
CN113778611B (zh) | 数据传输方法、装置、系统及存储介质 | |
CN111209240B (zh) | 数据传输的方法、电子设备及存储介质 | |
CN110636124A (zh) | Vpp集群管理方法及装置、电子设备及存储介质 | |
CN113891396A (zh) | 数据包的处理方法、装置、计算机设备和存储介质 | |
WO2021134418A1 (zh) | 一种数据校验方法及装置 | |
CN111224895B (zh) | 一种hsr网络中时间敏感报文传输方法、装置及设备 | |
CN111026324A (zh) | 转发表项的更新方法及装置 | |
US11196792B2 (en) | Method, device and system for transmitting data | |
CN110247926B (zh) | 一种交互方法和系统 | |
CN105656994B (zh) | 一种业务加速方法和装置 | |
CN115550250B (zh) | 小流报文重传方法、系统、电子设备及存储介质 | |
US20160261719A1 (en) | Information processing system, control program, and control method | |
CN108595270B (zh) | 一种内存资源的回收方法及装置 | |
US8914550B2 (en) | System and method for transferring data between components of a data processor | |
CN107181657B (zh) | 一种wtb链路层接口适配器及其实现方法 | |
WO2017107083A1 (zh) | 数据发送方法、接收方法、装置及系统 | |
CN114125080A (zh) | 一种报文链终端协议栈构建方法和解析方法、装置及终端 | |
CN111865884B (zh) | 一种报文处理方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |