CN102971723A - 一种分布式多进程通信方法和装置 - Google Patents

一种分布式多进程通信方法和装置 Download PDF

Info

Publication number
CN102971723A
CN102971723A CN2011800015073A CN201180001507A CN102971723A CN 102971723 A CN102971723 A CN 102971723A CN 2011800015073 A CN2011800015073 A CN 2011800015073A CN 201180001507 A CN201180001507 A CN 201180001507A CN 102971723 A CN102971723 A CN 102971723A
Authority
CN
China
Prior art keywords
message
target
shared queue
address
kernel state
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.)
Granted
Application number
CN2011800015073A
Other languages
English (en)
Other versions
CN102971723B (zh
Inventor
王志刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN102971723A publication Critical patent/CN102971723A/zh
Application granted granted Critical
Publication of CN102971723B publication Critical patent/CN102971723B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/60Router architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例公开了一种分布式多进程通信方法和装置,该方法包括:可编程硬件组件接收来自源进程的报文,所述报文中包括源进程地址和目标进程地址;所述可编程硬件组件根据所述报文中的源进程地址、目标进程地址和本地存储的路由分发信息将所述报文写入目标进程对应的目标共享队列,使所述目标进程根据所述目标共享队列获取所述报文。采用本发明,可高效的实现各种进程之间的通信。

Description

一种分布式多进程通信方法和装置 技术领域
本发明涉及处理器系统领域, 尤其涉及一种分布式多进程通信方法和装置。 背景技术
多内核 ( multicore chips ), 或称多核芯片是指在一枚处理器 ( chip ) 中集成 两个或多个完整的计算引擎(内核)。 对应用多核芯片的计算机, 其对计算机操 作系统的要求也与传统系统不同。 多核操作系统最大的特点是将内存、 输入输 出 (Input Output, 10 ) 外设资源共享给多个内核使用。 如基于对称多处理 ( Symmetrical Multi-Processing , SMP ) 内核的 Linux操作系统是一种目前广泛 使用的多核操作系统。
基于 SMP内核的 Linux操作系统也越来越广泛地应用于通信系统中, 在通 信系统中通常利用 Linux操作系统亲和性将进程绑定到特定的硬件核上。但由于 Linux进程的用户访问空间是独立的, 两个进程互相不能访问对方的用户空间, 这就存在进程之间互相通信的问题。例如,在一个 Linux操作系统内的多个用户 进程之间、一个单板的 Linux系统用户进程和其他单板的 Linux系统用户进程之 间、一个单板的 Linux系统用户进程和其他单板其他操作系统(如实时操作系统 vxworks等)之间都存在进程间通信的需要求,这也是分布式多进程通信的情况。
在现有的 Linux操作系统中, 为进程之间的通信提供了包括管道、先进先出 ( First In First Out, FIFO )、消息队列、信号量、共享内存、信号、套接字( SOCKET ) 机制等方式。
总的来说上述的进程间通信机制使用简单, 不适使用多进程之间多参数的 通信, 只适用于一个 Linux SMP系统中的不同进程之间的通信, 无法实现位于 不同单板不同操作系统之间进程间通信。
而基于 Linux网卡驱动的零拷贝技术也存在诸多问题。在该技术中,用户进 程将整个报文物理内存映射到用户进程空间, 使用网卡驱动和用户进程之间的 共享队列实现报文交互的零拷贝, 将网卡接收到所有报文捕获到用户进程。 在 用户态上运行一个转发进程, 用于识别送往各个不同用户进程的报文, 再通过 位于用户态的共享队列和各个用户进程通信。 当用户要发送报文时候, 先将报 文发送到转发进程, 由转发进程发送到网卡驱动最后出网卡硬件。
该技术采用网卡驱动底层报文捕获方法, 将所有报文接收到转发进程, 由 于传输控制协议( Transmission Control Protocol , TCP )通信的报文需要使用 Linux 的内核协议栈进行处理。这样需要转发进程识别后再下送到 Linux协议栈, Linux 协议栈处理完成后再由内核协议栈交给用户态进程处理。 这种方式实现困难而 且效率较低。 由于没有 SOCKET编程接口, 给应用程序带来很多移植性问题。 同时, 内核态的网卡驱动通过中断方式接收来自网卡的报文, 频繁的中断和软 中断严重影响了 Linux内核性能。 另外中断的处理需要绑定到一个核上, 浪费了 有限的中央处理器(Central Processing Unit, CPU ) 资源, 使得位于内核态的网 卡驱动升级更新困难。 发明内容
本发明实施例所要解决的技术问题在于, 提供一种用分布式多进程通信方 法和装置。 可高效的实现各种进程之间的通信。
为了解决上述技术问题, 本发明实施例提供了一种分布式多进程通信方法, 包括:
可编程硬件组件接收来自源进程的报文 , 所述报文中包括源进程地址和目 标进程地址;
所述可编程硬件组件根据所述> ^文中的源进程地址、 目标进程地址和本地 存储的路由分发信息将所述报文写入目标进程对应的目标共享队列, 使所述目 标进程根据所述目标共享队列获取所述报文。
本发明实施例还提供了一种分布式多进程通信方法, 包括:
可编程硬件组件从源共享队列中获取报文, 所述报文是源进程写入与所述 源进程对应的源共享队列的报文, 且所述 · ^文包括源进程地址和目标进程地址; 可编程硬件组件根据所述报文中的源进程地址、 目标进程地址和本地存储 的路由分发信息对所述报文进行转发。
相应的, 本发明实施例还提供了一种用于分布式多进程通信的装置, 包含 可编程硬件组件, 该可编程硬件组件包括:
接收模块, 用于接收来自源进程的报文, 其中, 所述报文中包括源进程地 址和目标进程地址; 写入模块, 用于根据所述报文中的源进程地址、 目标进程地址和本地存储 的路由分发信息将所述报文写入目标进程对应的目标共享队列, 使所述目标进 程根据所述目标共享队列获取所述报文。
相应的, 本发明实施例还包括一种用于分布式多进程通信的装置, 包含可 编程硬件组件, 该可编程硬件组件包括:
获取模块, 用于从所述源共享队列中获取报文, 所述报文是源进程写入与 所述源进程对应的源共享队列, 且所述 ·艮文包括源进程地址和目标进程地址; 转发模块, 用于根据所述报文中的源进程地址、 目标进程地址和本地存储 的路由分发信息对所述报文进行转发。
本发明实施例还提供了一种通信装置, 可进行分布式多进程通信, 所述装 置包括:
可编程硬件组件, 用于接收来自源进程的报文, 并根据所述报文中的源进 程地址、 目标进程地址和本地存储的路由分发信息将所述 ~¾文写入目标进程对 应的目标共享队列, 其中, 所述^ 中包括源进程地址和目标进程地址;
至少一个进程组件, 用于根据所述目标共享队列获取所述报文。
相应的, 本发明实施例还提供了一种通信装置, 可进行分布式多进程通信, 该装置包括:
至少一个进程组件, 用于将报文写入与所述进程组件对应的源共享队列, 所述报文包括源进程地址和目标进程地址;
可编程硬件组件, 用于从所述源共享队列中获取所述报文, 并根据所述报 文中的源进程地址、 目标进程地址和本地存储的路由分发信息对所述报文进行 转发。
在本发明实施例中, 新设置一可编程硬件组件, 其根据本地路由分发信息 进行进程间报文的转发, 可以通过灵活的配置路由分发信息来实现对特定进程 报文的接收、 屏蔽不想要的垃圾报文, 同时采用目标共享队列交互报文, 实现 了内存零拷贝, 减少了系统调用, 减少了 CPU的占有率。 附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案, 下面将对实施 例或现有技术描述中所需要使用的附图作筒单地介绍, 显而易见地, 下面描述 中的附图仅仅是本发明的一些实施例, 对于本领域普通技术人员来讲, 在不付 出创造性劳动性的前提下, 还可以根据这些附图获得其他的附图。
图 1是本发明实施例中的分布式多进程通信方法的一个具体流程示意图; 图 2是本发明实施例中的三种报文的一个具体格式示意图;
图 3是本发明实施例中的分布式多进程通信方法的另一个具体流程示意图; 图 4是存储在可编程硬件组件中的路由转发信息的内容示意图;
图 5是本发明实施例中的报文发送方向的一个具体处理流程的示意图; 图 6是本发明实施例中的接收方向的内核侧一个具体处理流程的示意图; 图 7是本发明实施例中的报文接收方向的用户侧的一个具体处理流程示意 图;
图 8是本发明实施例中的主备进程倒换时的示意图;
图 9是本发明实施例中的分布式多进程通信装置的一个具体组成示意图; 图 10是本发明实施例中的可编程硬件组件的一个具体组成示意图; 图 11 是本发明实施例中的分布式多进程通信装置的另一个具体组成示意 图;
图 12 是本发明实施例中的分布式多进程通信装置的另一个具体组成示意 图。 具体实施方式
下面将结合本发明实施例中的附图, 对本发明实施例中的技术方案进行清 楚、 完整地描述, 显然, 所描述的实施例仅仅是本发明一部分实施例, 而不是 全部的实施例。 基于本发明中的实施例, 本领域普通技术人员在没有作出创造 性劳动前提下所获得的所有其他实施例, 都属于本发明保护的范围。
在本发明实施例中通过设置运行在操作系统之外的可编程硬件组件, 如 FPGA逻辑组件)来对报文进行分发处理, 可以在增加极低的硬件成本的基础上 实现不依赖于操作系统的进程间通讯。 同时, 为进一步提高效率, 可采用用户 态驱动接收来自 FPGA的用户数据报文(User Internet Protocol, UIP )报文, 内 核态虚拟网卡驱动接收来自 FPGA的 TCP报文等, 以实现用户报文的零拷贝, 且充分利用用户态驱动, 具有调试方便, 容易升级修改, 不易导致内核挂死等 优点。 同时由内核协议栈进行处理后再交给用户态进程处理, 充分发挥操作系 统中内核丰富的网络协议栈功能。
同时, 本发明实施例可运用在 Linux操作系统中, 但不限于 Linux操作系 统,也可以应用于 windows/vxworks等操作系统, 或者是无操作系统的裸核应用 中。
如图 1 所示, 为本发明实施例中的分布式多进程通信方法的一个具体流程 示意图, 在该实施例中, 以可编程硬件组件进行 4艮文接收后对 4艮文进行分发处 理为例进行说明, 该方法包括如下步驟。
101、 可编程硬件组件接收来自源进程的报文, 所述报文中包括源进程地址 和目标进程地址。 所述可编程硬件组件可以是可进行编程的逻辑电路, 如, 运 行在操作系统之外的 FPGA逻辑等 , 只要该逻辑电路可以实现所需的编程功能。
可编程硬件组件通过通讯接口 , 如每秒万兆以太网连接单元 ( X Ethernet Attachment Unit Interface, XAUI )接口、 SPi4接口、 serdes接口或者 Rgmii接 口等, 接收来自其他单板的以太网报文, 或是通过共享队列获得单板内的某一 进程发送给单板内的其他进程的报文。 因而, 此处描述的源进程可以是与可编 程硬件组件运行在同一单板上的进程, 也可以是另一单板运行的进程。
上述分布式多进程交互的报文通常有如下几种类型: 实现和服务器单板的 可靠通信的 TCP 报文、 实现进程之间点对点的通信的进程间通信 ( Inter-Process Communication, ΙΡθ · ^文、 实现进程之间业务数据传递的 UIP 报文、 还有 ARP报文、 ICMP报文、 Ping报文等。 其中, ARP协议和 ICMP协 议是常用的 TCP/IP底层协议, 是在对网络故障进行诊断的时候最常用的协议。 ARP协议负责将某个 IP地址解析成对应的媒体访问控制( Media Access Control, MAC )地址。 ICMP 报文提供针对网络层的错误诊断、 拥塞控制、 路径控制和 查询服务四项大的功能。 Ping 命令通过向计算机发送 ICMP 回应报文并且监听 回应报文的返回, 以校验与远程计算机或本地计算机的连接。
报文的物理传输采用以太网数据帧封装, 报文开头为目标进程和源进程的 MAC地址,如图 2所示,为本发明实施例中的三种报文的一个具体格式示意图, 在报文中包括源进程地址、 目标进程地址、 报文类型和相应通信报文。 其中进 程全局唯一地址是整个系统中唯一标识进程的标识号。 本例中只用了 2个字节 , 将进程地址的内容和 MAC地址对应起来。这样进程地址的高 2字节就固定不变 , 同样 MAC地址的高 4字节固定不变。 其中和服务器单板的可靠通信报文是承载在 TCP之上的, 用于下载进程的 配置数据、 进程节点之间的拓朴关系、 以及进程接收多播报文需要加入的多播 组。 该报文由 MAC头、 IP头、 TCP头以及静荷组成, 这种类型报文数据较少。
进程之间点对点的通信 IPC报文, 采用自定义一种以太网帧, MAC头中的 帧类型设置为私有类型。 该通信报文用于两个进程之间可靠滑动窗口、 确认重 发方式的通信。 该报文由 MAC头以及静荷组成, 这种类型报文数量较多。
进程之间业务数据 UIP报文, 承载在 IP报文之上, 采用一种自定义的 IP 协议号。 该通信报文包括用于两个进程之间的单播业务数据报文和一对多个进 程之间的多播业务数据报文。 该报文由 MAC头、 IP头以及静荷组成, 这种类型 报文数量最多。
102、 可编程硬件组件根据所述报文中的源进程地址、 目标进程地址和本地 存储的路由分发信息将所述报文写入目标进程对应的目标共享队列, 使所述目 标进程根据所述目标共享队列获取所述报文。 一般, 一个目标进程对应有自己 的目标共享队列, 其可以从该队列中获取4艮文。 当然, 对于其他未配置路由转 发表信息的报文将被可编程硬件组件丟弃。
在本步骤中, 由于用户态驱动具有容易在线升级等优点, 可将报文根据具 体类型由用户态驱动和内核态驱动分别处理, 当然, 也可以不做区分而全部由 内核态处理。
若采用分别处理的方案, 则将报文分为两种类型: 用户态类型和内核态类 型, 目标共享队列则分为与用户态驱动共享队列 (或称用户进程共享队列) 和 与内核态驱动共享队列 (或称内核共享队列)。 这样一来, 本步骤具体可包括: 所述可编程硬件组件识别所述报文类型; 所述可编程硬件组件根据所述报文中 的源进程地址、 目标进程地址和本地存储的路由分发信息将用户态类型报文写 入与所述目标进程对应的用户进程共享队列, 将内核态类型报文写入与内核态 驱动组件对应的内核共享队列。
在区别哪些报文由用户态驱动处理, 哪些报文由内核态驱动处理时, 可按 如下方式, 即用户态类型报文包括进程间通讯报文和 /或用户数据报文, 内核态 类型报文包括 TCP (传输控制)报文、 ARP报文、 ICMP报文中的一种或多种。
同时, 在本例中, 在将报文写入内核共享队列, 由内核态驱动进行报文传 递时, 可包括: 所述可编程硬件组件根据所述报文中的源进程地址、 目标进程 地址和本地存储的路由分发信息将所述报文写入与内核态驱动组件对应的内核 共享队列; 所述内核态驱动组件获取所述内核共享队列的报文, 并将所述报文 发送至 Linux协议栈; 所述 Linux协议栈将4艮文写入 SOCKET接收緩冲区, 以 便所述目标进程从所述 SOCKET接收緩冲区中获得所述报文。
那么从目标进程侧获取报文的过程来看, 相应上述的不同报文的区别处理 方式, 使目标进程根据所述目标共享队列获取所述报文则可包括: 使所述目标 进程中的用户态驱动组件从所述用户进程共享队列获取所述用户态类型报文并 转发给所述目标进程中的用户态类型报文处理模块进行报文解析处理; 所述内 核态驱动组件从所述内核共享队列获取所述内核态类型报文, 并将所述内核态 类型报文发送给所述目标进程 (如, 对于由内核态虚拟网卡驱动组成的内核态 驱动组件来说, 可由内核态虚拟网卡驱动将报文转发内核协议栈处理, 再通过 SOCKET接口交给目标进程 ),使所述目标进程中的内核态类型报文处理模块接 收并进行"¾文解析处理。
上述步骤中, 主要描述了可编程硬件组件接收报文后的处理过程, 相应的 , 可编程硬件组件也可进行报文发送。 那么相应于上述流程, 假定一个单板具有 一个可编程硬件组件 (当然, 也可以有多个可编程硬件组件, 每个可编程硬件 组件负责单板中部分进程的通信), 若报文是同一单板内进程发送给另一进程 时 , 则处理艮文发送的可编程硬件组件和处理 ^艮文接收的可编程硬件组件可为 同一对象, 若报文是另一单板内的进程发送给本单板中的进程时, 则报文发送 的可编程硬件组件和处理报文接收的可编程硬件組件为不同对象。
如图 3 所示, 为本发明实施例中的分布式多进程通信方法的另一具体流程 示意图。 在该实施例中, 以可编程硬件組件进行源进程报文的发送处理为例进 行说明, 该方法包括如下步骤。
301、 可编程硬件组件从源共享队列中获取报文, 所述报文是源进程写入与 所述源进程对应的源共享队列的报文, 且所述报文包括源进程地址和目标进程 地址。
302、 可编程硬件组件根据所述 ^艮文中的源进程地址、 目标进程地址和本地 存储的路由分发信息对所述报文进行转发。 当然, 具体的转发根据报文的目的 进程所在位置有所区别, 若目的进程与源进程处于同一单板, 且其报文转发的 可编程硬件组件为同一对象, 则本步骤中所描述的转发, 是指将报文写入相应 的目标共享队列中; 若目的进程与源进程处于不同单板, 则此处的转发是指可 编程硬件组件将 4艮文发送至相应的接口, 如, 前述的 XAUI接口、 SPi4接口、 serdes接口或者 Rgmii接口等, 通过这些接口转发至目标单板, 再由目标单板 上的相应的可编程硬件组采取前述图 1所描述的方式进行报文处理。
与前述实施例相同的, 本例中的报文类型也可以包括多种, 如报文类型包 括用户态类型和内核态类型, 则在步骤 301 之前还包括: 所述源进程将用户态 类型报文发送给所述源进程对应的用户进程共享队列; 所述源进程将内核态类 型报文发送给所述源进程对应的内核态驱动组件, 所述内核态驱动组件将所述 内核态类型报文写入与源进程对应的内核共享队列。
同时, 上述各实施例中的报文也可包括单播报文、 多播报文和广播报文, 相应的路由分发信息中存储有所述单播报文的目的进程信息和所述多播报文的 多个目的进程信息。 在接收报文和发送报文时, 需要区别报文为单播报文、 多 播报文还是广播报文。 单播是在网络中从源地到目的地转发通信的过程。 仅有 一个发送者, 和一个接受者, 如可称为点对点通信; 多播是在一个网络上一单 个发送者和多个接收者之间的通信, 多播技术在很多接收者同时想收听或看相 同的源通过递送一单个信息流给很多接收者时被用于减少网络通信; "广播" 可 以理解为一个人通过广播喇叭对在场的全体说话, 这样做的好处是通话效率高, 信息一下子就可以传递到全体。
以下以示例说明多播报文和单播报文的格式, 以及对应的路由转发信息的 内容。
如图 2所示,单播通信的 MAC帧头地址最后两个字节设置为进程地址的最 后两个字节, 其他剩余字节内容为固定为 00-eO-fc-fc; 多播通信的 MAC帧头地 址最后两个字节设置为进程地址的最后两个字节, 最高 4 字节固定为多播地址 01-00-5e-58-58„ 多播地址根据最后一个字节划分为 256个多播组, 加入每个多 播组的进程能够接收该地址多播报文。
如图 4 所示, 为存储在可编程硬件组件中的路由转发信息 (本例中, 以路 由转发表的形式存储) 的内容示意图。
单播地址至少还有一列, 另一列应该是进程号(标识入哪个队列)。 多播匹 配位图就是一列, 每个进程占有一位, 如果为 1表示需要复制到该进程队列中, 为不复制。 这里定义了最大 32个进程。 其实可以扩展多于 32个进程。 当然, 该表中也可包括目标进程地址, 源进程地址, 报文协议类型, 掩码匹配等等。
FPGA进行转发表掩码与匹配, 如果成功匹配则写入指定的进程中。
如图所示, 由单播 MAC地址匹配表和多播组匹配位图表组成。 单播 MAC 地址匹配表的数目由单板要运行的进程数目决定的, 需要大于后者; 多播 MAC 地址的匹配采用位图形式,将通讯的多播 MAC地址按最后一个字节划分 256个 多播组, 每个组设置一个匹配位图长字。 这样每个要运行的进程对应位图长字 中的一位, 设置为 1 表示该进程要接收该多播报文, 反之不接收。 多播通信的 报文是一对多的方式, 这样匹配长字的各个位就表示对应的进程是否要接收。
相应于多播报文, 在进行报文转发时需要根据情况对报文进行复制, 即所 述硬件逻辑组件识别所述报文为多播报文, 根据所述多播报文的多个目的进程 信息对所述多播报文进行复制; 将复制获得的多个所述多播报文放入对应的目 标共享队列中。
在源进程对应的硬件逻辑组件进行报文转发时也类似, 若报文是发往不同 的单板, 则所述硬件逻辑组件识别所述报文为多播报文后, 也要根据所述多播 报文的多个目的进程信息对所述多播报文进行复制, 并将复制获得的多个所述 多播报文通过接口进行对应的转发。
为了更详细的描述上述流程, 以下分别 ΛΜ艮文发送和 文接收两个方面来 详细描述本发明的具体实施例。
如图 5 所示, 本发明实施例中的报文发送方向的处理流程示意图。 本例中 应用的系统为 Linux系统。
501、 当 Linux用户进程发送 IPC和 UIP报文时, 进程中的 IPC和 UIP报文 处理模块将报文写入用户进程共享队列的进程发送队列中。 FPGA逻辑定时查询 该队列, 如果发现有报文要发送, 则检查该报文的目标 MAC地址。 对于单播报 文则转步骤 502处理, 否则为多播报文转步骤 503进行处理。 图 5中仅示例了, 当 Linux用户进程发送 IPC和 UIP报文时的 FPGA逻辑组件执行的流程示意图。
当 Linux用户进程发送 TCP报文时, 进程中的 TCP报文处理模块通过创建 的 SOCKET发送到 Linux系统内核的 Linux协议栈进行处理, Linu 协议栈处理 完成后通过内核态驱动 (如, 调用网卡驱动的发送函数) 将处理后的报文发送 到 FPGA逻辑组件 (即 FPGA芯片)处理。 由于 Linux协议栈采用 SKB方式的 内存管理, 和网卡驱动使用的硬件共享内存不同, 这里由网卡驱动进行一次报 文拷贝。 (图中未示)
502、 对于单播报文, 提取其目标 MAC地址和单播路由分发表进行匹配, 如杲匹配成功则将该报文写入路由分发表指示的接收进程的接收共享队列中, 如杲匹配失败表明目标进程为另一单板中的进程, 则将报文发送到 XAUI接口 出单板。
503、 对于多播报文, 提取其目标 MAC地址获得多播组号, 获得路由分发 表中的多播组分发位图。如果该多播组分发位图为零则直接将报文发送到 XAUI 接口出单板。 否则循环处理将报文依次写入多播组位图指示的接收进程的接收 共享队列中, 同时报文引用计数加一, 处理完成后还需要将报文发送到 XAUI 接口出单板。 因为多播接收者进程也可能存在于另一单板中。
如图 6所示 , 本发明实施例中的报文接收方向的内核侧 (即 FPGA逻辑组 件和其他内核驱动)的处理流程示意图。 本例中应用的系统仍为 Linux系统, 假 定报文来自另一单板。
601、 FPGA逻辑组件从 XAUI接口接收到报文后, 首先分析其 MAC头的 报文类型域, 如果是 IPC报文则转步骤 602处理, 否则继续检查是否为 UIP类 型报文,如果是 UIP报文则转步骤 602继续处理, 其他的类型报文则转步骤 603 进行处理。
602、 对于 IPC和 UIP类型报文, 其与上述发送报文的用户进程处理的流程 类似。 FPGA逻辑首先检查报文的目标 MAC地址, 如果是单播类型报文则转步 骤 604进行路由分发处理; 否则为多播类型报文转步骤 605继续处理。
603、 对于非 IPC、 UIP类型的报文, FPGA逻辑写入网卡接收队列中, 位 于内核态的网卡驱动程序定时查询网卡接收队列, 发现存在报文后将其上送 Linux协议栈。 由于 Linux协议栈采用 SKB方式的内存管理, 和 FPGA逻辑处 理的硬件共享内存不同, 这里需要进行一次报文拷贝。 Linux协议栈中 TCP协 议处理完成后将报文写入 SOCKET接收緩冲区,用户进程从 SOCKET连接的接 收緩冲区中得到通信报文。
604、 对于单播类型的报文, 提取其目标 MAC地址和单播路由分发表进行 匹配, 如果匹配成功则将该报文写入路由分发表指示的接收进程的接收共享队 列中。 否则将艮文丢弃。
605、 对多播类型的报文, 提取其目标 MAC地址获得多播组号, 获得路由 分发表中的多播分发位图。 如杲该多播分发位图为零则将该报文丢弃; 否则循 环处理将报文依次写入多播位图指示的接收线程的接收共享队列中, 同时报文 引用计数加一。
如图 7所示, 本发明实施例中的报文接收方向的用户侧的处理流程示意图。 本例为相应于图 6中的内核侧处理后的用户侧的处理。
701、 Linux用户态驱动组件 (程序) 定时查询自己的报文接收共享队列。
702、 判断是否存在报文, 如果存在报文则需要分析报文类型, 对于 IPC类 型报文递交给上层 IPC接收函数处理; 对于 UIP类型报文递交给上层 UIP接收 函数处理; 如果共享队列中没有^ ^文则进行睡眠 1ms处理。
所述进程包括主用进程和备用进程, 当进行主备进程切换时, 将所述路由 分发信息中的主用进程地址对应为备用进程地址, 或将备用进程地址对应为主 用进程地址。 如图 8所示, 为本发明实施例中的主备进程倒换时的示意图。
如图所示, 业务处理板 HI上运行有进程 A H11和进程 B H12, 业务处理单 板 H3运行有进程 C H31和进程 D H32。 其中进程 B H12和进程 D H32是主备 配置关系, 进程 B H12是主, 进程 D H32是备。 主用进程处理业务数据包, 而 备用进程不处理, 主备进程之间进行数据的同步操作。 H2为多个业务板之间通 信需要进行报文交换的单板, 类似于常见的以太网交换机 /Hub等。
业务处理单板上的每个进程启动后,通过 TCP连接建立和槽位维护单板 H4 之间的链接, 下载进程通信关系的拓朴表。 每个进程根据下载的拓朴关系表配 置到本单板的路由转发表中。 配置的内容有本进程的通讯 MAC地址,要加入的 多播组位图等。
当进程关系发生主备倒换的时候, 主用进程 B H12倒换为备用进程, 备用 进程 D H32倒换为主用进程。 主备倒换的具体操作步骤为:
D11 : 操作维护单板 H4向主用进程 B H12发出倒换命令, 主用进程修改路 由转发表 H13 , 将本进程的通讯 MAC地址修改为备用进程的 MAC地址, 完成 主用进程降为备用进程操作。 来自其他进程的业务数据包到达业务处理板 HI 后, 由于 FPGA逻辑查询路由转发表 H13失败, 报文被丢弃, 这样进程 B H12 将接收不到业务数据报文。
D12: 操作维护单板 H4向备用进程 D H32发出倒换命令, 备用进程 D H32 修改路由转发表 H33 , 将本机的通讯 MAC地址修改为主用进程的 MAC地址, 完成备用进程升级为主用进程操作。 来自其他进程的业务数据包到达业务处理 板 H3后, 由于 FPGA逻辑查询路由转发表 H33成功, 报文被转发, 这样进程 D H32就能接收到业务数据包, 可见, 无需发送进程的参与, 倒换过程比较简单, 只需要修改路由转发表就行。
相应的, 本发明实施例还提供了一种通信装置, 可进行分布式多进程通信, 如图 9 所示, 本例中通信装置用于报文的接收, 该装置包括: 可编程硬件组件 80, 用于接收来自源进程的报文, 并根据所述报文中的源进程地址、 目标进程 地址和本地存储的路由分发信息将所述报文写入目标进程对应的目标共享队 列, 其中, 所述报文中包括源进程地址和目标进程地址; 至少一个进程组件 82, 用于根据所述目标共享队列获取所述报文。 当然, 对于运行有多个进程的系统, 则相应的包括多个进程组件。
相应的, 若通信装置用于报文的发送时, 该装置 (未图示) 包括: 至少一 个进程组件, 用于将报文写入与所述进程组件对应的源共享队列, 所述报文包 括源进程地址和目标进程地址; 可编程硬件组件, 用于从所述源共享队列中获 取所述 ^艮文, 并根据所述 4艮文中的源进程地址、 目标进程地址和本地存储的路 由分发信息对所述报文进行转发。
其中,如图 10所示,本发明实施例中提供的用于分布式多进程通信的装置, 可包括可编程硬件组件 80, 该可编程硬件组件 80可包括: 接收模块 800, 用于 接收来自源进程的 艮文, 其中, 所述 4艮文中包括源进程地址和目标进程地址; 写入模块 802, 用于根据所述报文中的源进程地址、 目标进程地址和本地存储的 路由分发信息将所述报文写入目标进程对应的目标共享队列, 使所述目标进程 根据所述目标共享队列获取所述报文。
若, 将报文分为内核态处理报文和用户态处理报文, 则可编程硬件組件 80 可进一步包括(图 10中虚线所示): 识别模块 804, 用于识别所述报文类型, 所 述"¾文类型包括用户态类型和内核态类型; 相应的, 所述写入模块 802还用于 根据所述报文中的源进程地址、 目标进程地址和本地存储的路由分发信息将所 述用户态类型报文写入与所述目标进程对应的用户进程共享队列, 将所述内核 态类型报文写入与内核态驱动组件对应的内核共享队列。
当然, 若所述报文包括单播报文、 多播报文和广播报文, 所述路由分发信 息中存储有所述单播报文的目的进程信息、 所述多播报文的多个目的进程信息; 则所述识别模块 804还用于识别所述报文为多播报文; 所述写入模块 802还用 于根据所述多播报文的多个目的进程信息对所述多播报文进行复制, 并将复制 获得的多个所述多播报文放入对应的目标共享队列中。
当分布式多进程通信的装置用于源进程的报文转发时, 其包括的可编程硬 件组件 (未图示) 可包括获取模块, 用于从所述源共享队列中获取报文, 所述 报文是源进程写入与所述源进程对应的源共享队列, 且所述报文包括源进程地 址和目标进程地址; 转发模块, 用于根据所述报文中的源进程地址、 目标进程 地址和本地存储的路由分发信息对所述报文进行转发。
当 艮文类型包括用户态类型和内核态类型, 相应的, 如图 11所示, 该进程 组件 82可包括: 用户态驱动组件 820 , 用于从所述用户进程共享队列获取用户 态类型报文并转发给用户态类型报文处理模块 822; 用户态类型报文处理模块 822, 用于接收所述用户态类型报文, 并进行报文解析处理; 内核态类型报文处 理模块 824, 用于接收内核态驱动组件 84从所述内核共享队列获取后发送来的 内核态类型报文, 并进行报文解析处理。
相应的, 所述装置 8还包括内核态驱动组件 84, 用于从所述内核共享队列 获取的所述内核态类型报文, 并将所述内核态类型报文发送至所述内核态报文 处理模块。
同样的, 当可编程硬件组件进行源进程的报文转发时, 则所述用户态驱动 组件 82还用于将用户态类型 · ^文写入与所述可编程硬件組件共享的用户进程共 享队列; 所述内核态类型报文处理模块 824还用于将内核态类型报文发送至所 述内核态驱动组件; 所述内核态驱动组件 84还用于获取并将所述内核态类型报 文写入与所述可编程硬件组件共享的内核共享队列; 所述可编程硬件組件 80还 用于从所述用户进程共享队列和所述内核共享队列获取相应的报文, 将根据本 地存储的路由分发信息对所述报文进行转发。
上述装置中的各术语和功能与前述方法实施例中的类似, 此处不做赞述。 如图 12所示, 为本发明实施例中的通信装置的另一个具体组成示意图。 本 例中, 该装置采用 Linux操作系统, FPGA逻辑组件通过 XAUI接口收发以太网 报文。
该装置由位于 Linux内核态的内核态驱动组件 Gll、位于 Linux用户态的用 户态驱动组件 G15 , Linux操作系统协议栈 G12以及 FPGA逻辑组件 G20组成。 运行于 Linux系统中的进程通过自己的用户态驱动组件处理 IPC和 UIP报 文, 通过 Linux协议栈处理 TCP报文。 每个进程管理自己在用户态的软件共享 内存区 G18 , FPGA逻辑管理自己的硬件共享内存 G22。 这样, 硬件 FPGA接 收到报文后用自己管理的内存, 用户进程发送报文的时候用自己的内存, 可以 实现各自管理自己的内存, 各自管理自己的内存具有简单、 交互少、 效率高等 优点。
用户态驱动组件 G15和 PGA逻辑组件 G20之间通过用户进程共享队列 G16 接收和发送报文。 对应于前述的报文处理流程, 本例中的处理步驟如下。
All : Linux操作系统启动后装入内核态驱动组件(即虛拟网卡驱动) G11 , 映射用户进程共享队列 G16、 软件共享内存 G18和硬件共享内存 G22。 同时将 FPGA操作的寄存器地址映射到用户态, 建立用户态驱动组件 G15的程序环境。
这是由于, 在 Linux 下进程采用虚拟内存机制, 用户进程要从 FPGA中读 取报文就需要一个队列, 该队列中存储的是报文的地址不是内容。 即需要将共 享队列 G16的地址映射到进程自己的虚拟地址空间中。 这里是 G18、 G22这块 内存用来存储报文内容的。 为了处理效率分成两个物理内存区。 这里需要注意 的是所有 Linux进程映射这两块空间的虚拟地址是一样的,这样进程之间通信不 会产生访问异常。 而 FPGA使用的是物理地址, 用户态进程使用的是虚拟地址, 这个工作由用户态驱动来转换。同时,由于 Linux内核态与用户态之间是隔离的, 只有 Linux态运行在特权级别可以访问芯片的物理寄存器。用户态进程没有特权 无法访问, 但是用户态进程通过把寄存器的地址映射到用户空间使得用户态代 码可以直接访问硬件寄存器。
A12: 用户进程启动后, 初始化映射用户进程共享队列、 软件共享内存区和 硬件共享内存区的地址空间。 用户进程通过 TCP通信模块 G13连接操作维护中 心, 下载进程节点配置关系。 最后将本进程的地址信息写入路由分发表 G21中。
A13 : 来自 XAUI口的以太网报文由 FPGA逻辑组件 G20接收处理, 根据 路由分发表 G21 中配置的信息, 分析接收到的以太网报文。 如果为 IPC或 UIP 报文则写入用户进程共享队列 G16中, 由用户态驱动组件 G15接收, 最后交给 UIP处理模块 G14和 IPC处理模块 G17。 对于其他类型报文写入网卡接收队列 (即内核共享队列) G19中, 由网卡驱动 G11查询到后交给 Linux协议栈 G12 处理, 再通过 SOCKET接口交给进程的 TCP通信模块 G13接收。
A14:用户态进程 UIP处理模块 G14和 IPC处理模块 G17需要发送报文时, 从共享内存 G18申请空间,由用户态驱动 G15写入进程发送队列 G16中。 FPGA 逻辑组件 G20查询到用户进程报文后从进程发送队列 G16中获取报文并发送到 XAUI接口。 对于 TCP发送报文通过 TCP通信模块 G13建立的 SOCKET接口 发送到 Linux内核协议栈 G12, 再调用内核态驱动组件 G11的发送函数写入网 卡发送队列 (即内核共享队列) G19, 最后由 FPGA逻辑组件 G20查询到后发 送到 XAUI接口。
其中, PGA逻辑组件 G20需要接收来自 XAUI接口的报文时候, 从硬件共 享内存区 G22申请内存; FPGA逻辑组件 G20释放内存时候, 将内存归还到硬 件共享内存区。用户态进程组件 G15需要发送报文时候,从软件共享内存区 G18 分配内存; 用户态进程 G15释放内存时候, 将内存归还到软件共享内存区。
当 FPGA逻辑组件需要释放来自用户态进程产生的报文时候, 构造一条报 文释放消息写入到用户进程共享队列 G16中。 当用户态驱动组件 G15查询到该 条释放消息后, 将报文内存释放到软件内存共享区 G18。 当用户进程需要释放 来自 FPGA逻辑组件接收的报文时候, 构造一条报文释放消息写入到用户进程 发送队列 G16中。 当 FPGA逻辑查询到该条释放消息后, 将报文内存释放到硬 件共享内存区 G22中。
当内核态驱动 G11需要申请 FPGA逻辑的硬件内存时候, 从网卡緩存队列 当内核态驱动 G11需要释放 FPGA逻辑的硬件内存时候, 构造一条报文释放消 息写入到网卡发送队列 G16中。 当 FPGA逻辑查询到该条释放消息后, 将报文 内存释放到硬件共享内存区 G22中。
在本发明实施例中, 设置可编程硬件組件根据本地路由分发信息进行进程 间报文的转发, 可以通过灵活的配置路由分发信息来实现对特定进程报文的接 收、 屏蔽不想要的垃圾报文, 同时采用目标共享队列交互报文, 实现了内存零 拷贝, 减少了系统调用, 减少了 CPU的占有率。 进一步的, 将报文分为用户态 处理和内核态处理, 有效利用了用户态驱动容易进行在线升级、 容易管理的优 势。
采用可编程硬件组件管理硬件内存, 用户态进程管理软件内存( 即可编程 硬件组件接收后的报文要写入内存, 该块内存的申请释放由可编程硬件组件管 理, 所以这片内存叫硬件内存, 同样进程管理的那片内存叫软件内存)。, 各自 管理自己的内存区, 互不影响。 有效地解决了用户进程和可编程硬件组件竟争 内存资源的互锁问题。 使用不同单板的路由转发表的机制可以很容易实现主备 进程倒换, N+1备份方式以及进程迁移。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程, 是可以通过计算机程序来指令相关的硬件来完成, 所述的程序可存储于一计算 机可读取存储介质中, 该程序在执行时, 可包括如上述各方法的实施例的流程。 其中, 所述的存储介质可为磁碟、 光盘、 只读存储记忆体(Read-Only Memory, ROM ) 或随机存储记忆体(Random Access Memory, RAM ) 等。
以上所揭露的仅为本发明一种较佳实施例而已, 当然不能以此来限定本发 明之权利范围, 因此依本发明权利要求所作的等同变化, 仍属本发明所涵盖的 范围。

Claims (19)

  1. 权 利 要 求
    1、 一种分布式多进程通信方法, 其特征在于, 所述方法包括:
    可编程硬件组件接收来自源进程的报文, 所述报文中包括源进程地址和目 标进程地址;
    所述可编程硬件组件根据所述 4艮文中的源进程地址、 目标进程地址和本地 存储的路由分发信息将所述报文写入目标进程对应的目标共享队列, 使所述目 标进程根据所述目标共享队列获取所述报文。
  2. 2、 如权利要求 1所述的分布式多进程通信方法, 其特征在于, 所述可编程 硬件组件根据路由分发信息将所述报文写入目标共享队列包括:
    所述可编程硬件组件识别所述 文类型 , 所述 4艮文类型包括用户态类型和 内核态类型;
    所述可编程硬件组件根据所述> ^文中的源进程地址、 目标进程地址和本地 存储的路由分发信息将所述用户态类型报文写入与所述目标进程对应的用户进 程共享队列, 将所述内核态类型报文写入与内核态驱动组件对应的内核共享队 列。
  3. 3、 如权利要求 1所述的分布式多进程通信方法, 其特征在于, 所述可编程 硬件组件根据路由分发信息将所述报文写入目标共享队列包括:
    所述可编程硬件组件根据所述> ^文中的源进程地址、 目标进程地址和本地 存储的路由分发信息将所述报文写入与内核态驱动組件对应的内核共享队列; 所述内核态驱动组件获取所述内核共享队列的报文, 并将所述报文发送至 Linu 协议栈;
    所述 Linux协议栈将报文写入 SOCKET接收緩冲区, 以便所述目标进程从 所述 SOCKET接收緩冲区中获得所述报文。
  4. 4、 如权利要求 2所述的分布式多进程通信方法, 其特征在于, 使所述目标 进程根据所述目标共享队列获取所述报文包括: 使所述目标进程中的用户态驱 动组件从所述用户进程共享队列获取所述用户态类型报文并转发给所述目标进 程中的用户态类型报文处理模块进行报文解析处理;
    所述内核态驱动组件从所述内核共享队列获取所述内核态类型报文, 并将 所述内核态类型报文发送给所述目标进程, 使所述目标进程中的内核态类型报 文处理模块接收并进行报文解析处理。
  5. 5、如权利要求 1至 4中任一项所述的分布式多进程通信方法,其特征在于, 所述用户态类型报文包括进程间通讯报文和 /或用户数据报文, 所述内核态类型 报文包括 TCP报文、 ARP报文、 ICMP报文中的一种或多种。
  6. 6、如权利要求 1至 5中任一项所述的分布式多进程通信方法,其特征在于, 所述报文包括单播报文、 多播报文和广播报文, 所述路由分发信息中存储有所 述单播报文的目的进程信息、 所述多播报文的多个目的进程信息。
  7. 7、 如权利要求 6所述的分布式多进程通信方法, 其特征在于, 所述方法还 包括:
    所述硬件逻辑组件识别所述报文为多播报文, 根据所述多播报文的多个目 的进程信息对所述多播报文进行复制;
    将复制获得的多个所述多播报文放入对应的目标共享队列中。
  8. 8、 如权利要求 1至 7中任一项所述分布式多进程通信方法, 其特征在于, 所述目标进程包括主用进程和备用进程, 当进行主备进程切换时, 将所述路由 分发信息中的主用进程地址对应为备用进程地址, 或将备用进程地址对应为主 用进程地址。
  9. 9、 一种分布式多进程通信方法, 其特征在于, 所述方法包括:
    可编程硬件组件从源共享队列中获取报文, 所述报文是源进程写入与所述 源进程对应的源共享队列的报文, 且所述 4艮文包括源进程地址和目标进程地址; 可编程硬件组件根据所述报文中的源进程地址、 目标进程地址和本地存储 的路由分发信息对所述报文进行转发。 10、 如权利要求 9所述的分布式多进程通信方法, 其特征在于, 所述报文 类型包括用户态类型和内核态类型, 所述方法还包括:
    所述源进程将用户态类型报文发送给所述源进程对应的用户进程共享队 列;
    所述源进程将内核态类型报文发送给所述源进程对应的内核态驱动组件, 所述内核态驱动组件将所述内核态类型报文写入与源进程对应的内核共享队 列。
  10. 11、 如权利要求 9至 10中任一项所述的分布式多进程通信方法, 其特征在 于, 所述用户态类型报文包括进程间通讯报文和 /或用户数据报文, 所述内核态 类型报文包括 TCP报文、 ARP报文、 ICMP报文中的一种或多种。
  11. 12、 一种用于分布式多进程通信的装置, 包含可编程硬件组件, 其特征在 于, 所述可编程硬件组件包括:
    接收模块, 用于接收来自源进程的报文, 其中, 所述报文中包括源进程地 址和目标进程地址;
    写入模块, 用于根据所述报文中的源进程地址、 目标进程地址和本地存储 的路由分发信息将所述报文写入目标进程对应的目标共享队列, 使所述目标进 程根据所述目标共享队列获取所述报文。
  12. 13、如权利要求 12所述的装置, 其特征在于, 所述可编程硬件组件还包括: 识别模块, 用于识别所述报文类型, 所述报文类型包括用户态类型和内核 态类型;
    所述写入模块还用于根据所述 · ^文中的源进程地址、 目标进程地址和本地 存储的路由分发信息将所述用户态类型报文写入与所述目标进程对应的用户进 程共享队列, 将所述内核态类型报文写入与内核态驱动组件对应的内核共享队 列。
  13. 14、 如权利要求 12至 13 中任一项中所述的装置, 其特征在于, 所述报文 包括单播报文、 多播报文和广播报文, 所述路由分发信息中存储有所述单播报 文的目的进程信息、 所述多播报文的多个目的进程信息;
    所述识别模块还用于识别所述报文为多播报文;
    所述写入模块还用于根据所述多播报文的多个目的进程信息对所述多播报 文进行复制, 并将复制获得的多个所述多播报文放入对应的目标共享队列中。
  14. 15、 如权利要求 12至 14中任一项所述的装置, 其特征在于, 所述可编程 硬件组件还包括获取模块, 所述获取模块用于从源共享队列中获取报文, 并根 据所述报文中的源进程地址、 目标进程地址和本地存储的路由分发信息对所述 艮文进行转发;
    其中, 所述报文为所述源进程写入的与所述源进程对应的源共享队列的报 文, 所述报文中包括源进程地址和目标进程地址。
  15. 16、 如权利要求 12或 15 中任一项所述的装置, 其特征在于, 所述用户态 类型报文包括进程间通讯报文和 /或用户数据报文, 所述内核态类型报文包括 TCP报文、 ARP报文、 ICMP报文中的一种或多种。
  16. 17、 一种用于分布式多进程通信的装置, 包含可编程硬件组件, 其特征在 于, 所述可编程硬件组件包括:
    获取模块, 用于从所述源共享队列中获取报文, 所述报文是源进程写入与 所述源进程对应的源共享队列, 且所述 · ^文包括源进程地址和目标进程地址; 转发模块, 用于根据所述报文中的源进程地址、 目标进程地址和本地存储 的路由分发信息对所述报文进行转发。
  17. 18、 一种通信装置, 可进行分布式多进程通信, 其特征在于, 所述装置包 括:
    可编程硬件组件, 用于接收来自源进程的报文, 并根据所述报文中的源进 程地址、 目标进程地址和本地存储的路由分发信息将所述报文写入目标进程对 应的目标共享队列, 其中, 所述 ^文中包括源进程地址和目标进程地址;
    至少一个进程组件, 用于根据所述目标共享队列获取所述报文。 19、 如权利要求 18所述的通信装置, 其特征在于, 所述报文类型包括用户 态类型和内核态类型, 所述进程组件包括:
    用户态驱动组件, 用于从所述用户进程共享队列获取用户态类型报文并转 发给用户态类型报文处理模块;
    用户态类型报文处理模块, 用于接收所述用户态类型报文, 并进行报文解 析处理;
    内核态类型报文处理模块, 用于接收内核态驱动组件从所述内核共享队列 获取后发送来的内核态类型报文, 并进行报文解析处理;
    相应的, 所述装置还包括内核态驱动组件, 用于从所述内核共享队列获取 的所述内核态类型 4艮文, 并将所述内核态类型 4艮文发送至所述内核态 文处理 模块。
  18. 20、 如权利要求 18所述的通信装置, 其特征在于,
    所述用户态驱动组件还用于将用户态类型 4艮文写入与所述可编程硬件组件 共享的用户进程共享队列;
    所述内核态类型报文处理模块还用于将内核态类型报文发送至所述内核态 驱动组件;
    所述内核态驱动组件还用于获取并将所述内核态类型报文写入与所述可编 程硬件组件共享的内核共享队列;
    所述可编程硬件组件还用于从所述用户进程共享队列和所述内核共享队列 获取相应的报文, 将根据本地存储的路由分发信息对所述报文进行转发。
  19. 21、 一种通信装置, 可进行分布式多进程通信, 其特征在于, 所述装置包 括:
    至少一个进程组件, 用于将报文写入与所述进程组件对应的源共享队列, 所述报文包括源进程地址和目标进程地址;
    可编程硬件组件, 用于从所述源共享队列中获取所述报文, 并根据所述报 文中的源进程地址、 目标进程地址和本地存储的路由分发信息对所述报文进行 转发。 22、 如权利要求 21所述的通信装置, 其特征在于, 所述报文类型包括用户 态类型和内核态类型, 所述进程组件将 "^文写入与所述进程组件对应的源共享 队列包括:
    所述进程组件将用户态类型报文发送给所述进程组件对应的用户进程共享 队列;
    所述进程组件将将内核态类型报文发送给所述进程组件对应的内核态驱动 组件, 所述内核态驱动组件将所述内核态类型报文写入与所述进程组件对应的 内核共享队列。
CN201180001507.3A 2011-06-28 一种分布式多进程通信方法和装置 Active CN102971723B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2011/076529 WO2012159305A1 (zh) 2011-06-28 2011-06-28 一种分布式多进程通信方法和装置

Publications (2)

Publication Number Publication Date
CN102971723A true CN102971723A (zh) 2013-03-13
CN102971723B CN102971723B (zh) 2016-11-30

Family

ID=

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107133109A (zh) * 2017-04-24 2017-09-05 京信通信系统(广州)有限公司 一种模块间通信的方法、装置及计算设备
CN107204908A (zh) * 2016-03-17 2017-09-26 阿里巴巴集团控股有限公司 一种基于通信接口框架的消息发送、接收方法及装置
CN109710533A (zh) * 2018-12-29 2019-05-03 亚信科技(中国)有限公司 一种接口测试方法、装置及服务器
CN109783144A (zh) * 2017-11-13 2019-05-21 深圳市创客工场科技有限公司 虚拟环境交互实现中变量的处理方法、装置和存储介质
CN110851289A (zh) * 2019-10-23 2020-02-28 新华三信息安全技术有限公司 协议报文处理方法及交换机
CN111324507A (zh) * 2020-02-03 2020-06-23 杭州迪普科技股份有限公司 主控设备的业务接口监控系统及其方法
CN111897681A (zh) * 2020-07-14 2020-11-06 绿盟科技集团股份有限公司 一种报文转发方法、装置、计算设备及存储介质
CN113382014A (zh) * 2021-06-23 2021-09-10 中移(杭州)信息技术有限公司 协商处理方法、装置、终端设备以及存储介质
CN113778712A (zh) * 2021-09-10 2021-12-10 苏州苏试试验集团股份有限公司 嵌入式系统
CN117041379A (zh) * 2023-07-10 2023-11-10 中科驭数(北京)科技有限公司 同时监听用户态协议栈和内核态协议栈新建连接的方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1949206A (zh) * 2005-10-12 2007-04-18 大唐移动通信设备有限公司 多处理器系统的消息通信方法及装置
CN101127685A (zh) * 2007-09-20 2008-02-20 中兴通讯股份有限公司 一种进程间通讯装置及其进程间通讯方法
US20090086737A1 (en) * 2007-09-29 2009-04-02 Applied Micro Circuits Corporation System-on-chip communication manager
CN101448018A (zh) * 2008-12-26 2009-06-03 中兴通讯股份有限公司 进程间通信方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1949206A (zh) * 2005-10-12 2007-04-18 大唐移动通信设备有限公司 多处理器系统的消息通信方法及装置
CN101127685A (zh) * 2007-09-20 2008-02-20 中兴通讯股份有限公司 一种进程间通讯装置及其进程间通讯方法
US20090086737A1 (en) * 2007-09-29 2009-04-02 Applied Micro Circuits Corporation System-on-chip communication manager
CN101448018A (zh) * 2008-12-26 2009-06-03 中兴通讯股份有限公司 进程间通信方法和装置

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10848595B2 (en) 2016-03-17 2020-11-24 Alibaba Group Holding Limited Method and device for message sending and receiving based on a communication interface framework
CN107204908A (zh) * 2016-03-17 2017-09-26 阿里巴巴集团控股有限公司 一种基于通信接口框架的消息发送、接收方法及装置
CN107133109B (zh) * 2017-04-24 2020-01-14 京信通信系统(中国)有限公司 一种模块间通信的方法、装置及计算设备
CN107133109A (zh) * 2017-04-24 2017-09-05 京信通信系统(广州)有限公司 一种模块间通信的方法、装置及计算设备
CN109783144B (zh) * 2017-11-13 2022-03-25 深圳市创客工场科技有限公司 虚拟环境交互实现中变量的处理方法、装置和存储介质
CN109783144A (zh) * 2017-11-13 2019-05-21 深圳市创客工场科技有限公司 虚拟环境交互实现中变量的处理方法、装置和存储介质
CN109710533A (zh) * 2018-12-29 2019-05-03 亚信科技(中国)有限公司 一种接口测试方法、装置及服务器
CN110851289A (zh) * 2019-10-23 2020-02-28 新华三信息安全技术有限公司 协议报文处理方法及交换机
CN110851289B (zh) * 2019-10-23 2022-11-08 新华三信息安全技术有限公司 协议报文处理方法及交换机
CN111324507A (zh) * 2020-02-03 2020-06-23 杭州迪普科技股份有限公司 主控设备的业务接口监控系统及其方法
CN111324507B (zh) * 2020-02-03 2023-04-18 杭州迪普科技股份有限公司 主控设备的业务接口监控系统及其方法
CN111897681A (zh) * 2020-07-14 2020-11-06 绿盟科技集团股份有限公司 一种报文转发方法、装置、计算设备及存储介质
CN113382014A (zh) * 2021-06-23 2021-09-10 中移(杭州)信息技术有限公司 协商处理方法、装置、终端设备以及存储介质
CN113778712A (zh) * 2021-09-10 2021-12-10 苏州苏试试验集团股份有限公司 嵌入式系统
CN113778712B (zh) * 2021-09-10 2024-03-29 苏州苏试试验集团股份有限公司 嵌入式系统
CN117041379A (zh) * 2023-07-10 2023-11-10 中科驭数(北京)科技有限公司 同时监听用户态协议栈和内核态协议栈新建连接的方法及装置
CN117041379B (zh) * 2023-07-10 2024-04-19 中科驭数(北京)科技有限公司 同时监听用户态协议栈和内核态协议栈新建连接的方法及装置

Also Published As

Publication number Publication date
WO2012159305A1 (zh) 2012-11-29

Similar Documents

Publication Publication Date Title
US11757763B2 (en) System and method for facilitating efficient host memory access from a network interface controller (NIC)
EP1841162B1 (en) Method and system for an os virtualization-aware network interface card
CN102334112B (zh) 用于虚拟机网络的方法和系统
EP1892929B1 (en) A method, an apparatus and a system for message transmission
CN108270676B (zh) 一种基于Intel DPDK的网络数据处理方法及装置
US20030099254A1 (en) Systems and methods for interfacing asynchronous and non-asynchronous data media
US20080126564A1 (en) Multiple context single logic virtual host channel adapter supporting multiple transport protocols
JP2004534311A (ja) 共有属性に基づいて圧縮キューペアから複数の仮想キューペアを作成する構成
US7269661B2 (en) Method using receive and transmit protocol aware logic modules for confirming checksum values stored in network packet
CN102035751A (zh) 一种数据的传输方法和设备
US6760304B2 (en) Apparatus and method for receive transport protocol termination
US20080059686A1 (en) Multiple context single logic virtual host channel adapter supporting multiple transport protocols
US10609125B2 (en) Method and system for transmitting communication data
WO2022032984A1 (zh) 一种mqtt协议仿真方法及仿真设备
US6977924B1 (en) Control and distribution protocol for a portable router framework
WO2012159305A1 (zh) 一种分布式多进程通信方法和装置
CN100502365C (zh) 板间通信方法
CN102255799A (zh) 一种支持转发和控制分离的内部网络接口映射方法及装置
JP2000067017A (ja) デ―タ通信方法及びデ―タ通信装置
CN112199211A (zh) 基于RapidIO的CORBA中间件ORB间通信方法
CN102971723B (zh) 一种分布式多进程通信方法和装置
CN116760504B (zh) 会话同步方法、装置、服务节点、终端及可读存储介质
US20230403229A1 (en) System and method for facilitating efficient host memory access from a network interface controller (nic)
CN102065028B (zh) 一种网关设备以及报文处理方法
CN100518098C (zh) 数据通信接口测试方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant