CN101043510B - Pci-e总线分布式系统单板内及单板间数据通讯方法 - Google Patents
Pci-e总线分布式系统单板内及单板间数据通讯方法 Download PDFInfo
- Publication number
- CN101043510B CN101043510B CN2007100977990A CN200710097799A CN101043510B CN 101043510 B CN101043510 B CN 101043510B CN 2007100977990 A CN2007100977990 A CN 2007100977990A CN 200710097799 A CN200710097799 A CN 200710097799A CN 101043510 B CN101043510 B CN 101043510B
- Authority
- CN
- China
- Prior art keywords
- data
- processor
- veneer
- address
- pci
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Multi Processors (AREA)
Abstract
本发明公开了一种基于PCI-E总线分布式系统板内及板间数据通讯方法,针对现有技术中数据多次拷贝的问题而发明,包括基于PCI-E总线分布式系统板内数据发送方法、基于PCI-E总线分布式系统板内数据接收方法以及基于PCI-E总线分布式系统板间数据通信方法,采用PCI Express总线共享内存的单环行队列设计,实现了PCI Express驱动发送缓存、PCIExpress驱动接收缓存和虚拟网络上层协议栈缓存三者的复用。还提出了一种单板之间数据通讯的方法,对内采用了上述的单板内数据发送和接收方法,对外网络设计中采用了代理ARP技术,对外部主机看来单板内各处理单元如同连接在本地局域网中。本发明应用于基于PCI-E总线分布式系统。
Description
技术领域
本发明涉及一种数据通讯方法,特别是指一种PCI-E(PeripheralComponent Interconnect Express,即高速外围组件互连)总线分布式系统单板内及单板间数据通讯方法。
背景技术
在嵌入式通信领域中,高集成度和低成本日益成为设备制造商追求的目标。一个现代分布式通信系统中,通过不同的处理器实现不同的功能,通过这些处理器的分工协作来完成设计者实现整个系统功能的目的。
处理器之间如何实现高效的通信,历来是业界非常重视的问题。现有的基于以太网的通信方式,虽然提供了处理器间大流量通信的解决方案,但成本较高,且不利于空间压缩。现有基于传统PCI(Peripheral ComponentInterconnect,即外围组件互连)接口标准的通信方式,由于总线资源共享的限制,只能有限提高单板的集成度,而且数据传输速率较慢,扩展性不强。
第三代总线技术规格PCI Express(简称为PCI-E)给IT硬件的发展提供一种高性能的总线平台。PCI Express是最新的总线和接口标准,它原来的名称为“3GIO”,是由英特尔提出的,很明显英特尔的意思是它代表着下一代I/O接口标准。交由PCI-SIG(PCI特殊兴趣组织)认证发布后才改名为“PCI Express”。这个新标准将全面取代现行的PCI和AGP,最终实现总线标准的统一。
首先,PCI Express最大的优势就在于带宽的增加和灵活的扩展性能。与PCI所有设备共享同一条总线资源不同,PCI Express总线采用点对点技术,能够为每一块设备分配独享通道带宽,不需要在设备之间共享带宽,充分保障各设备的带宽资源,提高数据传输速率。其次PCI Express还具 有灵活的扩展性、热插拔、多点虚拟通道、错误处理和错误报告等等优势。
对于分布式系统,对系统内各单元的分工协作要求较高,上层应用必须工作在可靠的传输层通信协议之上。现有的使用基于可靠网络MAC帧的传输层协议(Reliable Mac Protocol,以下简称RMP)进行通信,主要应用于网络拓扑简单的局域网中,上层发送/接收的都是一条完整的数据包,无须标准IP协议的ARP解析和路由转发功能。RMP协议负责建立端到端的通信连接,实现并包、按序发送、超时重传、分片重组、链路维护的功能。该协议主要应用于网络数据传输。
现有的PCI Express总线结构如图1所示,在单板内部多个处理器之间通过PCI Express总线连接。单板上只有一个处理器(主处理器)对外出千兆网口,负责对外通信;单板上其它处理器要对外通信,必须通过主处理器的转发才能完成。
在不同通信网络中实现跨网络通信的一般方法,是采用路由技术,通过在不同网络的两台主机之间设置相关的路由来完成。该方法的缺点是不同网络上的主机必须清楚其他主机通信网络组网的细节,不能方便的进行扩展。
现有的基于PCI-E总线的分布式存储系统,基于共享内存通信的一般方法,是在驱动中构造发送和接收两个环行队列管理缓存,在发送和接收中使用多次直接的内存拷贝方式实现数据传输,非常消耗CPU的资源,效率低下。
发明内容
针对现有技术中的缺陷和不足,本发明的目的是提出一种基于PCI-E总线分布式系统板内及板间数据通讯方法,包括基于PCI-E总线分布式系统板内数据发送方法、基于PCI-E总线分布式系统板内数据接收方法以及基于PCI-E总线分布式系统板间数据通信方法,能够在降低拷贝次数或实 现0拷贝通信,降低CPU开销,提高处理器间的通讯能力。
为了达到上述目的,本发明提出了一种PCI-E总线分布式系统单板内数据发送方法,包括:
步骤1、为单板上每一处理器分配MAC地址,并为每一处理器分配一个标识;
步骤2、为每一处理器分配N-1个物理通道,其中N为单板上基于PCI-E总线的处理器的个数;每一通道具有一环形队列作为数据接收队列,每一数据接收队列由PCI-E通信的数据缓冲描述符组成,该数据缓冲描述符中至少包括了其对应的共享内存区的数据缓冲的地址和下一个数据缓冲的地址;为每一通道建立通道信息表,该通道信息表中至少包括目的处理器的标识及该处理器对应的数据接收队列控制头地址字段;
步骤3、当发送数据时,先确定目的处理器的标识,并根据该标识查询本地的通道信息表获得目的处理器的数据接收队列第一个空闲共享内存区;
步骤4、将待发送数据存储在该空闲共享内存区;
步骤5、将该空闲共享内存区标识为已用,并将控制头地址字段移动到下一可用空闲共享内存区。
其中,所述步骤3具体为:
步骤31、当发送数据时,确定目的处理器的标识;
步骤32、并根据该标识查询本地的通道信息表获得目的处理器的数据接收队列;
步骤33、判断该数据接收队列是否有空闲的共享内存区,如果是则进入步骤34;否则丢弃该数据,并返回错误信息;
步骤34、判断空闲的共享内存区的数量是否为1个,如果是则丢弃该数据,并返回错误信息;否则进入步骤4。
其中,所述步骤4具体为:
将待发送数据直接拷贝或通过直接内存存储控制器传输到上述空闲的共享内存区。
同时,本发明还提出了一种PCI-E总线分布式系统单板内数据接收方法,包括:
步骤A、为单板上每一处理器分配MAC地址,并为每一处理器分配一个标识;
步骤B、为每一处理器分配N-1个物理通道,其中N为单板上基于PCI-E总线的处理器的个数;每一通道具有一环形队列作为数据接收队列,每一数据接收队列由PCI-E通信的数据缓冲描述符组成,并为每一通道建立通道信息表,该通道信息表中至少包括目的处理器的标识及该处理器对应的数据接收队列控制头地址字段;
步骤C、当接收数据时,根据当前数据流量采用中断或定时的方式唤醒一驱动线程;
步骤D、该驱动线程将带有数据的共享内存区从环形队列中摘除;
步骤E、将上述有数据的共享内存区提交上层协议栈处理;处理完毕后归还该共享内存区。
其中,上述步骤D还包括:
该驱动线程申请新的空闲共享内存区,并用新的空闲共享内存区取代环行队列中有数据的共享内存区的位置。
同时,本发明还提出了一种PCI-E总线分布式系统单板间数据通讯方法,包括:
步骤(1)、为每一单板上的每一处理器分配MAC地址,并为每一处理器分配一个标识;
步骤(2)、为每一处理器分配N-1个物理通道,其中N为单板上基于PCI-E总线的处理器的个数;每一通道具有一环形队列作为数据接收队列,每一数据接收队列由PCI-E通信的数据缓冲描述符组成,该数据缓冲描述符中至少包括了其对应的共享内存区的数据缓冲的地址和下一个数据缓冲的地址;为每一通道建立通道信息表,该通道信息表中至少包括目的处理器的标识及该处理器对应的数据接收队列控制头地址字段;
步骤(3)、将单板上每一从处理器及外部网口配置IP地址,从处理器IP地址网段为该单板的外部网口的IP地址网段的子集,且外部网口IP地址不属于从处理器IP地址网段;将每一单板上的主处理器作为该单板内从处理器对外通信的网关;
步骤(4)、主处理器加载ARP代理服务,响应外部网络向从处理器发出的ARP解析请求。
其中,所述步骤(3)具体为:
步骤(31)、将单板上每一从处理器及外部网口配置IP地址,从处理器IP地址网段为该单板的外部网口的IP地址网段的子集,且外部网口IP地址不属于从处理器IP地址网段;
步骤(32)、从处理器启动时,建立PCI-E通信通道,主动向主处理器请求配置,获取主处理器的内部网口IP地址,并将该IP地址设置为向外部网络通信的默认网关;
步骤(33)、从处理器启动后,主动将自己的内部PCI-E虚拟网口IP地址通知主处理器。
其中,该方法可以包括:
步骤(5)、当向单板上的从处理器发送数据时,由于单板主处理器上加载了ARP代理,外部网络认为该单板的外部网口即为从处理器的实际网口,将该数据发送到该单板的外部网口;
步骤(6)、该单板的主处理器读取路由表并确定路由后将数据转发到单板内部网口,并将目的IP地址解析为目的MAC地址,并根据目的MAC地址确定目的从处理器的标识;
步骤(7)、根据该标识查询本地的通道信息表获得目的从处理器的数据接收队列第一个空闲共享内存区;
步骤(8)、将待发送数据存储在该空闲共享内存区;
步骤(9)、将该空闲共享内存区标识为已用,并将控制头地址字段移动到下一可用空闲共享内存区。
其中,上述步骤(7)具体为:
步骤(71)、当发送数据时,确定目的处理器的标识;
步骤(72)、并根据该标识查询本地的通道信息表获得目的处理器的数据接收队列;
步骤(73)、判断该数据接收队列是否有空闲的共享内存区,如果是则进入步骤(74);否则丢弃该数据,并返回错误信息;
步骤(74)、判断空闲的共享内存区的数量是否为1个,如果是则丢弃该数据,并返回错误信息;否则进入步骤(8)。
其中,该方法也可以包括:
步骤(5`)当从处理器接收数据时,根据当前数据流量采用中断或定时的方式唤醒一驱动线程;
步骤(6`)、该驱动线程将带有数据的共享内存区从环行队列中摘除;
步骤(7`)、将上述有数据的共享内存区提交上层协议栈处理;处理完毕后归还该共享内存区。
本发明提出了一种PCI-E总线分布式系统单板内数据发送方法和接收方法以及单板间数据通信方法。现有技术中,在发送和接收中使用多次直接的内存拷贝方式实现数据传输,非常消耗CPU的资源,效率低下。本发明提出的单板内的接收和发送的整个数据传输过程仅仅只经历了一次内存拷贝,如果采用DMA(Direct Memory Access,直接内存存取)技术甚至可以实现无内存拷贝,可以充分发挥PCI Express总线高效的共享内存通信的优势。其中该数据接收方法能够实现0拷贝接收。发送/接收的操作是完全独立的,由于在设计中采用PCI Express总线共享内存的单环行队列设计,实现了PCI Express驱动发送缓存、PCI Express驱动接收缓存和虚拟网络上层协议栈缓存三者的复用,在数据传送中减少了多余的内存拷贝,有利于充分发挥PCI Express总线的高带宽优势,提高了处理器间的通讯能力。
同时本发明还提出了一种单板之间数据通讯的方法,对内采用了上述的单板内数据发送和接收方法,提供特殊通信通道满足内部处理器之间高速通信;对外网络设计中采用了代理ARP技术,对外部主机看来单板内各处理单元如同连接在本地局域网中,屏蔽了单板内部PCI Express通信的差异,可以方便在外部网络对单板内各处理单元进行监控,调试和配置管理。
本发明可以将分布式系统的全部功能集成到一块或少量几块单板上,例如在电信领域中可以使用一块单板集成原先多块单板甚至一个网元的功 能,通过节省单板对外千兆网口的数量,可以有效降低设备制造商的生产成本,而且该方法对业务(上层软件)没有影响,现有的所有上层软件都可以平稳移植。
下面结合附图,对本发明的具体实施方式作进一步的详细说明。对于所属技术领域的技术人员而言,从对本发明的详细说明中,本发明的上述和其他目的、特征和优点将显而易见。
附图说明
图1是现有的基于PCI Express通信系统结构图;
图2是本发明方法中一条基于PCI Express的物理通道设计图;
图3是本发明方法中基于PCI Express共享内存通信消息结构图;
图4显示了本发明中单板内通信的协议处理框图;
图5是本发明中板间通信的网络配置图;
图6是本发明中板间通信初始化流程图。
具体实施方式
下面结合附图对本发明进行详细的说明。
实现本发明的硬件结构如图1所示,属于现有技术,单板内部处理器之间通过PCI Express总线连接。单板上只有一个处理器(主处理器)对外出千兆网口,负责单板对外网络的通信,单板上其它从处理器对外通信,都必须经过主处理器的转发。
本发明提出的一种PCI-E总线分布式系统单板内数据发送方法和数据接收方法的优选实施例如图2所示,采用一个环形队列作为接收队列。
其中,本发明提出的一种基于PCI-E总线分布式系统的数据发送方法包括:
步骤1、为单板上每一处理器分配MAC地址,并为每一处理器分配一个标识;
步骤2、为每一处理器分配N-1个物理通道,其中N为单板上基于PCI-E总线的处理器的个数;每一通道具有一环形队列作为数据接收队列,每一数据接收队列由PCI-E通信的数据缓冲描述符组成,该数据缓冲描述符的结构可以如图3所示,包括了其对应的共享内存区的数据缓冲的地址和下一个数据缓冲的地址以及消息长度和消息地址;为每一通道建立通道信息表,该通道信息表中至少包括目的处理器的标识及该处理器对应的数据接收队列控制头地址字段;
步骤3、当发送数据时,先确定目的处理器的标识,并根据该标识查询本地的通道信息表获得目的处理器的数据接收队列第一个空闲共享内存区;
步骤4、将待发送数据存储在该空闲共享内存区;
步骤5、将该空闲共享内存区标识为已用,并将控制头地址字段移动到下一可用空闲共享内存区。
需要注意,发送/接收的操作是完全独立的,但只有接收有共享内存区作为缓存,为了保证环行队列操作的正确性,发送在判断是否有空闲共享内存区时,需要保留一个共享内存区作为临界区。因此,所述步骤3具体为:
步骤31、当发送数据时,确定目的处理器的标识;
步骤32、并根据该标识查询本地的通道信息表获得目的处理器的数据接收队列;
步骤33、判断该数据接收队列是否有空闲的共享内存区,如果是则进入步骤34;否则丢弃该数据,并返回错误信息;
步骤34、判断空闲的共享内存区的数量是否为1个,如果是则丢弃该数据,并返回错误信息;否则进入步骤4。
其中,数据拷贝的方式可以是将待发送数据直接拷贝或通过直接内存存储控制器传输到上述空闲的共享内存区。
本发明提出的一种PCI-E总线分布式系统单板内数据接收方法的优选实施例中包括:
步骤A、为单板上每一处理器分配MAC地址,并为每一处理器分配一个标识;
步骤B、为每一处理器分配N-1个物理通道,其中N为单板上基于PCI-E总线的处理器的个数;为每一通道具有一数据接收队列,每个环行队列由PCI-E通信的共享内存区组成,并为每一通道建立通道信息表,该通道信息表中至少包括目的处理器的标识及该处理器对应的数据接收队列控制头地址字段;
步骤C、当接收数据时,根据当前数据流量采用中断或定时的方式唤醒一驱动线程;
步骤D、该驱动线程将带有数据的共享内存区从环行队列中摘除;
步骤E、将上述有数据的共享内存区提交上层协议栈处理;处理完毕后归还该共享内存区。
其中,上述步骤D还包括:
该驱动线程申请新的空闲共享内存区,并用新的空闲共享内存区取代环行队列中有数据的共享内存区的位置。
需要注意,驱动提供的网络设备接口是与操作系统网络部分相关的,必须注意不同操作系统对网络设备接口的差异,提供不同的接口给上层协 议栈。
还需要注意,单板内部各处理器都支持标准TCP/IP协议簇和RMP协议,底层设备接口使用上述步骤提供的标准网络设备接口,使单板内处理器工作在基于PCI Express的虚拟网络之上,可以以各种网络协议进行通信。如附图4所示,可以在板内处理器间通信时默认采用标准协议,在通信握手时根据具体物理通道协商采用哪种上层协议,当两个通信的处理器处于一个单板内且有PCI Express通道,则建立RMP通信链路,数据内容以特定的二层的网络帧类型在驱动中加以区分,和标准的协议数据不同,主要承载上层的业务单播消息。通过RMP协议实现进一步提高性能和可靠性。对多播,单板间通信以及其他方式的网络通信,按标准的TCP/IP网络协议进行处理。
本发明提出的基于PCI-E总线的分布式系统单板之间的数据通讯方法,实现的硬件结构如图5所示,每一单板只有一个对外通信的外部网口。每一处理器配置IP地址,其中每一单板的外部网口的IP地址与单板内所有处理器的IP地址不属于同一子网,且主处理器与该单板上的其他从处理器的IP地址属于同一子网。
本发明提出的基于PCI-E总线的分布式系统单板之间的数据通讯方法中,对内采用了上述的单板内数据发送和接收方法,提供特殊通信通道满足内部处理器之间高速通信;对外网络设计中采用了代理ARP技术,对外部主机看来单板内各处理单元如同连接在本地局域网中,屏蔽了单板内部PCI Express通信的差异。
本发明提出的基于PCI-E总线的分布式系统单板之间的数据通讯方法优选实施例包括:
步骤(1)、为每一单板上的每一处理器分配MAC地址,并为每一处理器分配一个标识;
步骤(2)、为每一处理器分配N-1个物理通道,其中N为单板上基于PCI-E总线的处理器的个数;为每一通道具有一数据接收队列,每一数据接收队列由PCI-E通信的数据缓冲描述符组成,该数据缓冲描述符中至少包括了其对应的共享内存区的数据缓冲的地址和下一个数据缓冲的地址;为每一通道建立通道信息表,该通道信息表中至少包括目的处理器的标识及该处理器对应的数据接收队列控制头地址字段;
步骤(3)、将单板上每一从处理器及外部网口配置IP地址,从处理器IP地址网段为该单板的外部网口的IP地址网段的子集,且外部网口IP地址不属于从处理器IP地址网段;将每一单板上的主处理器作为该单板内从处理器对外通信的网关;例如,单板外部网口IP地址的通信子网为A,单板内部处理器的IP地址的通信子网为B,则A网段包括B网段地址,B网段只是A网段的一个子集,且A和B不冲突;举例假设A网段为192.168.X.X网段,B网段为192.168.255.X网段,但A中不能配置B子网的IP地址;
步骤(4)、主处理器加载ARP服务,响应ARP解析请求。
其中,上述步骤3可以在单板启动的时候可以采用如图6所示的流程完成配置,具体步骤为:
步骤(31)、单板启动时主处理器先启动,主处理器建立PCI-E通信通道;配置单板的外部网口的IP地址和内部虚拟网口IP地址和从处理器IP地址;将单板上每一从处理器及外部网口配置IP地址,从处理器IP地址网段为该单板的外部网口的IP地址网段的子集,且外部网口IP地址不属于从处理器IP地址网段;
步骤(32)、从处理器启动时,建立PCI-E通信通道;
步骤(33)、从处理器通过PCI-E通讯主动向主处理器请求配置,获取主处理器的内部网口IP地址;
步骤(34)、从处理器将该IP地址设置为向外部网络通信的默认网关;
步骤(35)、从处理器通过虚拟网口,主动将自己的内部PCI-E虚拟网口IP地址和MAC地址通知主处理器;
步骤(36)、主处理器根据从处理器上报的IP地址和MAC信息设置ARP代理对应表。
其中,该方法在单板间通讯时,采用了代理ARP技术,对外部主机看来单板内各处理单元如同连接在本地局域网中,屏蔽了单板内部PCIExpress通信的差异。且该方法在单板间通讯的数据到达单板主处理后,可以应用上述的单板内数据发送和接收的方法进行通讯。
其中,数据发送的方法具体为:
步骤(5)、当外部网络向单板上的从处理器发送数据时,由于单板主处理器上加载了ARP代理,通过单板主处理器上的ARP代理的″欺骗″,外部网络会误认为单板外部网口就是单板从处理器的实际网口,从而将该数据发送到该单板的外部网口;
步骤(6)、该单板的主处理器读取路由表并确定路由后将数据转发到单板内部网口,并将目的IP地址解析为目的MAC地址,并根据目的MAC地址确定目的从处理器的标识;
步骤(7)、根据该标识查询本地的通道信息表获得目的从处理器的数据接收队列第一个空闲共享内存区;
步骤(8)、将待发送数据存储在该空闲共享内存区;
步骤(9)、将该空闲共享内存区标识为已用,并将控制头地址字段移动到下一可用空闲共享内存区。
其中,上述步骤(7)具体为:
步骤(71)、当发送数据时,确定目的处理器的标识;
步骤(72)、并根据该标识查询本地的通道信息表获得目的处理器的数据接收队列;
步骤(73)、判断该数据接收队列是否有空闲的共享内存区,如果是则进入步骤(74);否则丢弃该数据,并返回错误信息;
步骤(74)、判断空闲的共享内存区的数量是否为1个,如果是则丢弃该数据,并返回错误信息;否则进入步骤(8)。
其中,数据接收的方法具体为:
步骤(5`)当从处理器接收数据时,根据当前数据流量采用中断或定时的方式唤醒一驱动线程;
步骤(6`)、该驱动线程将带有数据的共享内存区从环行队列中摘除;
步骤(7`)、将上述有数据的共享内存区提交上层协议栈处理;处理完毕后归还该共享内存区。
其中,上述步骤(6`)还包括:
该驱动线程申请新的空闲共享内存区,并用新的空闲共享内存区取代环行队列中有数据的共享内存区的位置。
当然,本发明还可有其他实施例,在不背离本发明精神及其实质的情况下,所属技术领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明的权利要求的保护范围。
Claims (8)
1.PCI-E总线分布式系统单板内数据发送方法,包括:
步骤1、为单板上每一处理器分配MAC地址,并为每一处理器分配一个标识;
步骤2、为每一处理器分配N-1个物理通道,其中N为单板上基于PCI-E即高速外围组件互连总线的处理器的个数;每一通道具有一环形队列作为数据接收队列,每一数据接收队列由PCI-E通信的数据缓冲描述符组成,该数据缓冲描述符中至少包括了其对应的共享内存区的数据缓冲的地址和下一个数据缓冲的地址;为每一通道建立通道信息表,该通道信息表中至少包括目的处理器的标识及该处理器对应的数据接收队列控制头地址字段;
步骤3、当发送数据时,先确定目的处理器的标识,并根据该标识查询本地的通道信息表获得目的处理器的数据接收队列,并判断所述数据接收队列中空闲的共享内存区的数量是否大于1个,如果是获取所述数据接收队列中的第一个空闲共享内存区,否则丢弃该数据,并返回错误信息;
步骤4、将待发送数据存储在该空闲共享内存区;
步骤5、将该空闲共享内存区标识为已用,并将控制头地址字段移动到下一可用空闲共享内存区。
2.根据权利要求1所述的PCI-E总线分布式系统单板内数据发送方法,其特征在于,所述步骤4具体为:
将待发送数据直接拷贝或通过直接内存存储控制器传输到上述空闲的共享内存区。
3.PCI-E总线分布式系统单板内数据接收方法,包括:
步骤A、为单板上每一处理器分配MAC地址,并为每一处理器分配一个标识;
步骤B、为每一处理器分配N-1个物理通道,其中N为单板上基于PCI-E即高速外围组件互连总线的处理器的个数;每一通道具有一环形队列作为数据接收队列,每一数据接收队列由PCI-E通信的数据缓冲描述符组成,并为每一通道建立通道信息表,该通道信息表中至少包括目的处理器的标识及该处理器对应的数据接收队列控制头地址字段;
步骤C、当接收数据时,根据当前数据流量采用中断或定时的方式唤醒一驱动线程;
步骤D、该驱动线程将带有数据的共享内存区从环形队列中摘除;
步骤E、将上述有数据的共享内存区提交上层协议栈处理;处理完毕后归还该共享内存区。
4.根据权利要求3所述的PCI-E总线分布式系统单板内数据接收方法,其特征在于,上述步骤D还包括:
该驱动线程申请新的空闲共享内存区,并用新的空闲共享内存区取代环行队列中有数据的共享内存区的位置。
5.PCI-E总线分布式系统单板间数据通讯方法,包括:
步骤(1)、为每一单板上的每一处理器分配MAC地址,并为每一处理器分配一个标识;
步骤(2)、为每一处理器分配N-1个物理通道,其中N为单板上基于PCI-E即高速外围组件互连总线的处理器的个数;每一通道具有一环形队列作为数据接收队列,每一数据接收队列由PCI-E通信的数据缓冲描述符组成,该数据缓冲描述符中至少包括了其对应的共享内存区的数据缓冲的地址和下一个数据缓冲的地址;为每一通道建立通道信息表,该通道信息表中至少包括目的处理器的标识及该处理器对应的数据接收队列控制头地址字段;
步骤(3)、将单板上每一从处理器及外部网口配置IP地址,从处理器IP地址网段为该单板的外部网口的IP地址网段的子集,且外部网口IP地址不属于从处理器IP地址网段;将每一单板上的主处理器作为该单板内从处理器对外通信的网关;
步骤(4)、主处理器加载ARP代理服务,响应外部网络向从处理器发出的ARP解析请求。
6.根据权利要求5所述的PCI-E总线分布式系统单板间数据通讯方法,其特征在于,所述步骤(3)具体为:
步骤(31)、单板启动时主处理器先启动,主处理器建立PCI-E通信通道;配置单板的外部网口的IP地址和内部虚拟网口IP地址和从处理器IP地址;从处理器IP地址网段为该单板的外部网口的IP地址网段的子集,且外部网口IP地址不属于从处理器IP地址网段;
步骤(32)、从处理器启动时,建立PCI-E通信通道,主动向主处理器请求配置,获取主处理器的内部虚拟网口IP地址,并将该IP地址设置为向外部网络通信的默认网关;
步骤(33)、从处理器启动后,主动将自己的内部PCI-E虚拟网口IP地址通知主处理器。
7.根据权利要求5或6所述的PCI-E总线分布式系统单板间数据通讯方法,其特征在于,该方法还包括:
步骤(5)、当外部网络向单板上的从处理器发送数据时,由于单板主处理器上加载了ARP代理,外部网络认为单板外部网口就是单板从处理器的实际网口,将该数据发送到该单板的外部网口;
步骤(6)、该单板的主处理器读取路由表并确定路由后将数据转发到单板内部网口,并将目的IP地址解析为目的MAC地址,并根据目的MAC地址确定目的从处理器的标识;
步骤(7)、根据该标识查询本地的通道信息表获得目的从处理器的数据接收队列,并判断所述数据接收队列中空闲的共享内存区的数量是否大于1个,如果是获取所述数据接收队列中的第一个空闲共享内存区,否则丢弃该数据,并返回错误信息;
步骤(8)、将待发送数据存储在该空闲共享内存区;
步骤(9)、将该空闲共享内存区标识为已用,并将控制头地址字段移动到下一可用空闲共享内存区。
8.根据权利要求5或6所述的PCI-E总线分布式系统单板间数据通讯方法,其特征在于,该方法还包括:
步骤(5`)当从处理器接收数据时,根据当前数据流量采用中断或定时的方式唤醒一驱动线程;
步骤(6`)、该驱动线程将带有数据的共享内存区从环行队列中摘除;
步骤(7`)、将上述有数据的共享内存区提交上层协议栈处理;处理完毕后归还该共享内存区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007100977990A CN101043510B (zh) | 2007-04-29 | 2007-04-29 | Pci-e总线分布式系统单板内及单板间数据通讯方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007100977990A CN101043510B (zh) | 2007-04-29 | 2007-04-29 | Pci-e总线分布式系统单板内及单板间数据通讯方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101043510A CN101043510A (zh) | 2007-09-26 |
CN101043510B true CN101043510B (zh) | 2012-03-07 |
Family
ID=38808696
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007100977990A Expired - Fee Related CN101043510B (zh) | 2007-04-29 | 2007-04-29 | Pci-e总线分布式系统单板内及单板间数据通讯方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101043510B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101533360B (zh) * | 2009-04-13 | 2012-01-25 | 华为技术有限公司 | 多核环境下的数据处理方法及单板 |
CN101883388B (zh) * | 2009-05-08 | 2013-07-03 | 傲世通科技(苏州)有限公司 | 快速处理MAC-hs包数据的方法 |
CN101931605B (zh) | 2009-06-18 | 2014-03-19 | 中兴通讯股份有限公司 | 板间通信控制装置及板间通信的消息发送、接收方法 |
CN101764760B (zh) * | 2010-03-24 | 2011-11-16 | 深圳市中科新业信息科技发展有限公司 | 多链路报文捕获方法、多链路报文处理方法及系统 |
TWI466499B (zh) * | 2011-06-27 | 2014-12-21 | Via Tech Inc | 網路系統及網路至網路橋接器 |
CN102299823A (zh) * | 2011-09-05 | 2011-12-28 | 大唐移动通信设备有限公司 | 一种通信设备中板间处理器的互通方法及装置 |
CN102546400A (zh) * | 2011-12-20 | 2012-07-04 | 福建星网锐捷网络有限公司 | 一种卡间通信的方法、通信卡及网络转发设备 |
CN103036817A (zh) * | 2012-12-14 | 2013-04-10 | 华为技术有限公司 | 一种服务器单板、服务器单板实现方法及主处理器 |
CN103176941B (zh) * | 2013-04-09 | 2016-08-03 | 华为技术有限公司 | 核间通信方法和代理装置 |
CN103532807B (zh) * | 2013-10-12 | 2017-10-03 | 丁贤根 | 一种用于pcie数据服务质量管理的方法 |
CN104993959A (zh) * | 2015-06-29 | 2015-10-21 | 山东超越数控电子有限公司 | 一种管理板与业务板之间网络通讯方法 |
CN108459987B (zh) * | 2017-02-17 | 2020-12-11 | 杭州海康威视数字技术股份有限公司 | 多cpu的数据交互方法和多cpu联网设备 |
CN110943939B (zh) * | 2019-12-13 | 2021-10-22 | 北京劲群科技有限公司 | 一种网卡单元、分布式网络交换机系统与组网方法 |
CN112100093B (zh) * | 2020-08-18 | 2023-11-21 | 海光信息技术股份有限公司 | 保持多处理器共享内存数据一致性的方法和多处理器系统 |
CN112565425B (zh) * | 2020-12-03 | 2021-08-06 | 南京机敏软件科技有限公司 | 在多个跨云服务器主机会话的云应用程序间进行拷贝粘贴的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1522415A (zh) * | 2001-06-29 | 2004-08-18 | 英特尔公司 | 虚拟pci设备装置和方法 |
CN1529256A (zh) * | 2003-10-17 | 2004-09-15 | 中兴通讯股份有限公司 | 基于双环形队列、非中断式pci通信方法 |
EP1750202A1 (en) * | 2005-07-11 | 2007-02-07 | Nvidia Corporation | Combining packets for a packetized bus |
-
2007
- 2007-04-29 CN CN2007100977990A patent/CN101043510B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1522415A (zh) * | 2001-06-29 | 2004-08-18 | 英特尔公司 | 虚拟pci设备装置和方法 |
CN1529256A (zh) * | 2003-10-17 | 2004-09-15 | 中兴通讯股份有限公司 | 基于双环形队列、非中断式pci通信方法 |
EP1750202A1 (en) * | 2005-07-11 | 2007-02-07 | Nvidia Corporation | Combining packets for a packetized bus |
Also Published As
Publication number | Publication date |
---|---|
CN101043510A (zh) | 2007-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101043510B (zh) | Pci-e总线分布式系统单板内及单板间数据通讯方法 | |
US8031632B2 (en) | Method and system of implementing virtual local area networks (VLANS) with teamed communication ports | |
US20060274744A1 (en) | Dynamic VLAN ID assignment and packet transfer apparatus | |
CN100493086C (zh) | 一种实现虚拟网际协议的方法 | |
CN102546778B (zh) | 基于代理跨平台的无线网络接入控制器板间通信方法 | |
CN102160328A (zh) | 用于协调分布式虚拟网络交换环境中的多播消息传送的中央控制器 | |
US20130272292A1 (en) | Multi-communications-media network device | |
US20100290391A1 (en) | Apparatus and method for accessing multiple wireless networks | |
CN101257447A (zh) | 一种负载分担的方法、系统及路由装置 | |
WO2011147312A1 (zh) | 一种业务接入路由器的端口备份方法、装置和系统 | |
CN101478496A (zh) | 一种数据报文的转发方法和交换设备 | |
WO2013154400A1 (en) | Method and apparatus for communicating data packets in a cloud cell | |
JP2010177752A (ja) | ネットワーク通信装置 | |
US7385966B2 (en) | Method for the automatic configuration of a IP telephony device and/or data, system and device implementing same | |
WO2022135064A1 (zh) | 一种有线通信总线通信方法及系统 | |
CN1859376A (zh) | 一种基于路由的链路备份方法 | |
CN1859175A (zh) | 内部可靠互连的通信设备 | |
JP2003244185A (ja) | Vlan及びvlanフレームスイッチング装置 | |
CN1302642C (zh) | 基于虚拟局域网的组播实现方法 | |
CN100359875C (zh) | 在地址解析协议代理上实现负载均摊的方法 | |
JPH10308791A (ja) | データ通信方法、データ通信装置、およびデータ通信プログラム記録媒体 | |
WO2008128464A1 (fr) | Dispositif et procédé pour réaliser le transfert d'un flux unique par de multiples unités de traitement en réseau | |
CN102355415A (zh) | 一种cpu间报文传输方法及装置 | |
CN1980223A (zh) | 一种实现两种不同协议间转换的装置和方法 | |
JP2011072045A (ja) | データ中継方法、その装置およびその装置を用いたデータ中継システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20070926 |
|
CI01 | Correction of invention patent gazette |
Correction item: Rejection of patent application Correct: Dismiss False: Reject Number: 32 Volume: 26 |
|
ERR | Gazette correction |
Free format text: CORRECT: PATENT APPLICATION REJECTION OF AFTER PUBLICATION; FROM: REJECTION TO: REVOCATION REJECTED |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120307 Termination date: 20160429 |