WO2016078334A1 - Cpu与网络设备之间的消息交互方法及系统 - Google Patents
Cpu与网络设备之间的消息交互方法及系统 Download PDFInfo
- Publication number
- WO2016078334A1 WO2016078334A1 PCT/CN2015/077532 CN2015077532W WO2016078334A1 WO 2016078334 A1 WO2016078334 A1 WO 2016078334A1 CN 2015077532 W CN2015077532 W CN 2015077532W WO 2016078334 A1 WO2016078334 A1 WO 2016078334A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- preset
- descriptor
- message
- cpu
- network device
- Prior art date
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、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
如上所述,本发明实施例提供的一种CPU与网络设备之间的消息交互方法及
系统,具有以下有益效果:由于每个消息中都封装了对应的序列号,使得CPU能将发送至网络设备及接收的消息通过序列号来进行关联识别,避免了CPU与网络设备之间在进行异步消息交互时,因消息乱序而无法将发送消息与接收消息进行识别,造成消息收发混乱的情况发生,使得CPU与网络设备之间进行消息交互时可同时发送多个消息至网络设备,CPU与网络设备之间通过异步方式来进行消息交互提升了消息的传输效率,满足CPU与网络设备存在大量消息交互时的性能要求。
Claims (12)
- 一种CPU与网络设备之间的消息交互方法,所述方法包括以下步骤:CPU在待发送的消息中加入从预设描述符中获取的序列号生成封装消息,并对所述预设描述符的状态标识符更新后将所述预设描述符加入预设的发送流队列;CPU将所述封装消息发送至网络设备;网络设备对所述封装消息进行处理,并将预设的发送流队列中所述预设描述符的状态标识符进行更新;CPU获取并分析预设的发送流队列中所述预设描述符的状态标识符,并基于所述预设描述符的状态标识符从网络设备中读取所述封装消息内容。
- 如权利要求1所述的CPU与网络设备之间的消息交互方法,其中,所述CPU在待发送的消息中加入从预设描述符中获取的序列号生成封装消息,并对所述预设描述符的状态标识符更新后将所述预设描述符加入预设的发送流队列的步骤之前还包括:网络设备预先建立一描述符资源池,以供CPU在发送消息时,从所述描述符资源池中获取描述符,及CPU在读取消息后,将描述符释放至所述描述符资源池中。
- 如权利要求1所述的CPU与网络设备之间的消息交互方法,其中,所述预设描述符中的状态标识符至少包括:发送接收状态标记位、处理出错标记位、消息地址标记位。
- 如权利要求1至3中任一项所述的CPU与网络设备之间的消息交互方法,其中,所述CPU获取并分析预设的发送流队列中所述预设描述符的状态标识符,并基于所述预设描述符的状态标识符从网络设备中读取所述封装消息内容的步骤包括:当CPU根据预设的发送流队列中所述预设描述符的状态标识符分析所述封装消息处于接收状态,且在网络设备中的处理过程没有出错,则CPU根据所述状态标识符中的消息地址从网络设备中读取所述封装消息内容,并将所述预 设描述符中的状态标识符初始化后从预设的发送流队列中释放所述预设描述符。
- 如权利要求1至3中任一项所述的CPU与网络设备之间的消息交互方法,其中,所述CPU获取并分析预设的发送流队列中所述预设描述符的状态标识符,并基于所述预设描述符的状态标识符从网络设备中读取所述封装消息内容的步骤还包括:当CPU根据预设的发送流队列中所述预设描述符的状态标识符分析所述封装消息处于发送状态,则延迟预设时间后再次根据所述状态标识符判断所述封装消息的发送接收状态,若分析所述封装消息仍处于发送状态,则将所述预设描述符中的状态标识符初始化后重新加入预设的发送流队列。
- 如权利要求1至3中任一项所述的CPU与网络设备之间的消息交互方法,其中,所述CPU获取并分析预设的发送流队列中所述预设描述符的状态标识符,并基于所述预设描述符的状态标识符从网络设备中读取所述封装消息内容的步骤还包括:当CPU根据预设的发送流队列中所述预设描述符的状态标识符分析所述封装消息处于接收状态,且在网络设备中的处理过程出错,则将预设描述符中的状态标识符初始化后重新加入预设的发送流队列。
- 一种消息交互系统,所述系统包括:CPU及网络设备,其中,所述CPU,设置为在待发送的消息中加入从预设描述符中获取的序列号生成封装消息,并对所述预设描述符的状态标识符更新后将所述预设描述符加入预设的发送流队列;将所述封装消息发送至网络设备;获取并分析预设的发送流队列中所述预设描述符的状态标识符,并基于所述预设描述符的状态标识符从网络设备中读取所述封装消息内容;所述网络设备,设置为对所述封装消息进行处理,并将预设的发送流队列中所述预设描述符的状态标识符进行更新。
- 如权利要求7所述的系统,其中,所述网络设备还设置为:预先建立一描述符资源池,以供CPU在发送消息时,从所述描述符资源池中获取描述符,及CPU在读取消息后,将描述符释放至所述描述符资源池中。
- 如权利要求7所述的系统,其中,所述预设描述符中的状态标识符至少包括:发送接收状态标记位、处理出错标记位、消息地址标记位。
- 如权利要求7至9中任一项所述的系统,其中,所述CPU还设置为:当根据预设的发送流队列中所述预设描述符的状态标识符分析所述封装消息处于接收状态,且在网络设备中的处理过程没有出错,则根据所述状态标识符中的消息地址从网络设备中读取所述封装消息内容,并将所述预设描述符中的状态标识符初始化后从预设的发送流队列中释放所述预设描述符。
- 如权利要求7至9中任一项所述的系统,其中,所述CPU还设置为:当根据预设的发送流队列中所述预设描述符的状态标识符分析所述封装消息处于发送状态,则延迟预设时间后再次根据所述状态标识符判断所述封装消息的发送接收状态,若分析所述封装消息仍处于发送状态,则将所述预设描述符中的状态标识符初始化后重新加入预设的发送流队列。
- 如权利要求7至9中任一项所述的系统,其中,所述CPU还设置为:当根据预设的发送流队列中所述预设描述符的状态标识符分析所述封装消息处于接收状态,且在网络设备中的处理过程出错,则将预设描述符中的状态标识符初始化后重新加入预设的发送流队列。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410665153.8A CN105610730B (zh) | 2014-11-19 | 2014-11-19 | Cpu与网络设备之间的消息交互方法及系统 |
CN201410665153.8 | 2014-11-19 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2016078334A1 true WO2016078334A1 (zh) | 2016-05-26 |
Family
ID=55990272
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2015/077532 WO2016078334A1 (zh) | 2014-11-19 | 2015-04-27 | Cpu与网络设备之间的消息交互方法及系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105610730B (zh) |
WO (1) | WO2016078334A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112448898A (zh) * | 2019-08-28 | 2021-03-05 | 无锡江南计算技术研究所 | 基于序列号机制的消息保序方法 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110362587A (zh) * | 2019-07-12 | 2019-10-22 | 上海瀚银信息技术有限公司 | 一种数据交换方法 |
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 (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101009649A (zh) * | 2006-01-24 | 2007-08-01 | 三星电子株式会社 | 网络处理器中的队列管理 |
CN101291546A (zh) * | 2008-06-11 | 2008-10-22 | 清华大学 | 核心路由器交换结构协处理器 |
CN101882089A (zh) * | 2009-05-07 | 2010-11-10 | 中兴通讯股份有限公司 | 一种采用多线程处理业务会话应用的方法及装置 |
CN102201992A (zh) * | 2011-05-25 | 2011-09-28 | 上海理工大学 | 面向流处理器并行环境的数据流通信系统及其通信方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101175033B (zh) * | 2007-11-27 | 2010-06-16 | 中兴通讯股份有限公司 | 报文保序方法及其装置 |
JP5708165B2 (ja) * | 2011-04-05 | 2015-04-30 | 株式会社デンソー | 車載通信装置 |
-
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 (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101009649A (zh) * | 2006-01-24 | 2007-08-01 | 三星电子株式会社 | 网络处理器中的队列管理 |
CN101291546A (zh) * | 2008-06-11 | 2008-10-22 | 清华大学 | 核心路由器交换结构协处理器 |
CN101882089A (zh) * | 2009-05-07 | 2010-11-10 | 中兴通讯股份有限公司 | 一种采用多线程处理业务会话应用的方法及装置 |
CN102201992A (zh) * | 2011-05-25 | 2011-09-28 | 上海理工大学 | 面向流处理器并行环境的数据流通信系统及其通信方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112448898A (zh) * | 2019-08-28 | 2021-03-05 | 无锡江南计算技术研究所 | 基于序列号机制的消息保序方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105610730B (zh) | 2020-03-13 |
CN105610730A (zh) | 2016-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2016078334A1 (zh) | Cpu与网络设备之间的消息交互方法及系统 | |
US10868767B2 (en) | Data transmission method and apparatus in optoelectronic hybrid network | |
US11765074B2 (en) | System and method for facilitating hybrid message matching in a network interface controller (NIC) | |
CN110351156B (zh) | 一种测试方法和装置 | |
US9019978B2 (en) | Port mirroring at a network interface device | |
CN108432194B (zh) | 一种拥塞处理的方法、主机及系统 | |
US10880204B1 (en) | Low latency access for storage using multiple paths | |
US10348680B2 (en) | UDP-based control command transmission method, sender and receiver | |
BR112019014107A2 (pt) | Método de controle de transmissão de mídia de downlink, servidor de mídia e meio de armazenamento legível em computador | |
US9864856B2 (en) | Efficient hardware trust verification in data communication systems that comprise network interface cards, central processing units, and data memory buffers | |
WO2019170083A1 (zh) | 报文处理方法、控制器以及转发设备 | |
US20160345283A1 (en) | Method and apparatus for adjacent node registration, and method and system for cross-node registration | |
JP2018525948A (ja) | ネットワークサービス記述子をオンボードするための方法及び装置 | |
US20210391950A1 (en) | Methods and Apparatus for Cross-Layer Transport Awareness | |
TW201621699A (zh) | 透過主動訊息支持遠端記憶體存取(rma)應用程式介面(api) | |
WO2021134418A1 (zh) | 一种数据校验方法及装置 | |
CN111224895B (zh) | 一种hsr网络中时间敏感报文传输方法、装置及设备 | |
CN113891396A (zh) | 数据包的处理方法、装置、计算机设备和存储介质 | |
US20190124183A1 (en) | Mptcp path setting method for improving reliability | |
CN110417707A (zh) | 数据发送保护方法、装置、系统及计算机可读存储介质 | |
CN104184729A (zh) | 一种报文处理方法和装置 | |
CN108595270B (zh) | 一种内存资源的回收方法及装置 | |
CN115550250B (zh) | 小流报文重传方法、系统、电子设备及存储介质 | |
WO2018133828A1 (zh) | 用于客户端的数据处理方法和装置 | |
US20140281043A1 (en) | System and method for transferring data between components of a data processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 15860094 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 15860094 Country of ref document: EP Kind code of ref document: A1 |