《Cisco IOS XR技术精要》一2.3 进程间通信

简介:

本节书摘来自异步社区《Cisco IOS XR技术精要》一书中的第2章,第2.3节,作者 【美】Mobeen Tahir , Mark Ghattas , Dawit Birhanu , Syed Natif Nawaz,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.3 进程间通信

Cisco IOS XR技术精要
对于分布式系统来说,具有一种健壮的IPC机制是至关重要的。在使用IOS XR的高度模块化、大型分布式系统中,可靠、高效IPC机制的重要性就更为突出了。IOS XR根据不同用途及需求开发了多种IPC机制。本节将讨论IOS XR中使用的一些常见IPC进程。

2.3.1 IPC机制特点

这部分讨论了IPC机制的主要特点,以及不同IPC机制之间的异同。

1.同步与异步
如果使用同步通信,发送线程将会在消息被接收线程处理之前被阻断。由微内核提供的基本IPC机制便是同步IPC的一个例子。使用同步IPC,发送方一次仅发送一条消息,这是因为发送方在发送另一消息之前,必须等待接收方将上一消息处理完。尽管这一机制可能会限制吞吐量性能,但其优势是发送方无法超出接收方的吞吐能力。图2-5给出了同步IPC中发送线程和接收线程的交互流程。


e42192d9f65469a157d5f2f7f4f1947a21f6303c

使用异步通信,发送方与接收方之间的关联不像同步IPC那样密切。在接收方处理消息之前,发送方仍处于非阻断状态。实际上,发送方并不清楚接收方何时处理自身发送的消息。所以发送方可以在接收方尚未对先前接收的消息进行处理的情况下发送多组消息。尽管异步IPC具有更高吞吐量的优势,但也同样带有接收方缓存溢出的潜在风险。限制发送方的最大可用接收缓存数量可以防止流量溢出现象的发生。图2-6给出了异步IPC中发送线程和接收线程的交互流程。


d30cad953671421de37671da460b6e2ab555e3a0

2.节点间与节点内
Cisco IOS XR是为大型分布式平台,包括多机箱(多机框)系统而设计的。在多机框的环境中,不同节点间的通信和协作是非常重要的。某些IPC机制可能只工作在单个CPU或对称多处理器(SMP)的环境中,这类环境可以称之为节点(node)。不过,并不能说一个节点完全等同于一块线卡或一个RP/DRP。实际上,某些线卡和RP/DRP带有多块CPU或SMP,所以,这些线卡或RP/DRP是由多个节点组成的。例如,一块CRS的线卡(MSC)含有两个节点,一个是CPU0,一个是SP,分别相当于主CPU和服务处理器(SP)1。

节点内IPC机制仅能在单一节点中使用,而节点间IPC机制可以在不同节点中使用。通常来讲,节点间IPC机制同时支持节点间和节点内的通信方式。

3.面向连接与集散
这部分介绍了消息交换前的两种活动类型。

在面向连接方式中,接收方(通常是服务器)创建并发布一条信道,发送方(客户端)在发送任何消息之前,先要连接到信道上。建立连接后,发送方和接收方彼此知道对方身份信息。如果某一方重启,连接必须重新建立。

在集散(rendezvous)方式中,IPC主要关心的是数据,而不是接收方或自身的信道。通信双方通过数据结构来发现彼此。集散方式适用于“生产者-消费者(producer-consumer)”通信模型。在生产者-消费者模型中,生产者进程生成数据,一个或多个消费者处理数据。消费者不关心生产者的身份,只对生成的数据感兴趣。

4.点到点与点到多点
点到点通信常应用在两个线程之间。某些情况下,需要将相同的数据发送给单个或多个节点内的多个线程。当然,这可以通过使用多条点到点通信的方法来实现。不过,这种多条点到点通信的使用效率显然很低,而且发送方必须要先知道接收方的身份。使用点到多点通信可以很好地解决以上问题。

2.3.2 轻量级消息

轻量级通信(LWM)是一种架构在QNX同步IPC之上,点到点的、同步的、面向连接的通信方式。微内核负责将消息从发送方线程的内存空间复制到接收方的内存空间中。由于客户端在发送每条消息后将处于阻断状态,所以每组消息至少存在两个内容交换实例。当客户端发送一条消息后,处于阻断状态。如果服务器正处于受阻断的receive状态,将立即进入run状态;否则,客户端将运行另一线程,直到服务器线程发送一条MsgReceive呼叫。在服务器处理完这条消息后,客户端变为ready状态。

LWM可以透明地同时使用节点内通信和节点间通信。发送方不需要知道接收方是本地还是远端节点。

2.3.3 组服务协议

组服务协议(GSP)是一种点到多点的、无连接的、异步的通信技术。GSP通信通过逻辑的组ID(GID)来标识成员,每个GID映射给一个组播地址。组播地址可能是一个组播IP地址、组播MAC地址,或矩阵组ID(FGID)。

使用GSP,发送方无需知道接收方的身份或位置信息。GSP可以使发送方将信息发送给某个GID的所有成员、子集成员,或是单个成员。

GSP技术将在2.4节中作更深入的介绍。

2.3.4 微量描述信息环

微量描述信息环(ADR)是一种节点内通信使用的点到点的、异步的、并发的IPC机制。环(ring)是固定大小的FIFO,当环创建的时候,在FIFO上指定了可配置的数据区域。数据在用户模式中复制进或复制出ADR,不需要内核的干涉。ADR适用于生产者-消费者类型的应用。

2.3.5 Qnet

Qnet是一种实现不同节点上的进程互相通信的QNX Neutrino协议,该协议可以使IPC跨节点执行工作。例如,LWM可以透明地使用Qnet实现进程间的通信。

使用symbolic连接(symlink)可以支持Qnet协议的位置透明性。当某个进程需要与其他进程通信时,将使用服务相关的symlink,并且无需知道到该服务的位置。服务器进程使用symlink与Qnet symlink管理器(QSM)进行注册和发布自身服务。

如果想确认Qnet的连通性,可以在Admin模式下使用命令ping control-eth location < r/s/m >,如例2-7所示。每个节点都有一个MAC地址与之关联。在例2-7中,控制以太网(CE)执行ping命令发送ping数据包到CE上目的节点的MAC地址。当目的节点收到了CE ping数据包后,会像路由器那样回复ping数据包。例2-7给出了目的节点的MAC地址、CE ping数据包发送与接收的数量,以及CE ping包的最小、最大和平均往返时间。CE ping命令可用于诊断控制以太网(CE)的连通性。

例2-7 验证Qnet连通性


90b5810d960c2ce55ac34566705eaee401453a50

1译者注:本书后文会将IOS XR路由器上的RP、DRP、MSC以及广义上的各种板卡统译为节点(node)。

相关文章
|
27天前
|
数据采集 网络协议 开发工具
如何进行iOS技术博客的备案?
如何进行iOS技术博客的备案?
23 2
|
27天前
|
移动开发 安全 数据安全/隐私保护
iOS代码混淆和加固技术详解
iOS代码混淆和加固技术详解
29 0
|
4月前
|
网络安全 开发者 iOS开发
iOS技术博客:App备案指南
本文介绍了移动应用程序(App)备案的重要性和流程。备案是规范App开发和运营的必要手段,有助于保护用户权益、维护网络安全和社会秩序。为了帮助开发者更好地了解备案流程,本文提供了一份最新、最全、最详的备案指南,包括备案目的、好处、对象、时间、流程、条件和注意事项等内容。
iOS技术博客:App备案指南
|
2月前
|
人工智能 vr&ar Android开发
探索安卓与iOS系统的技术进展
【2月更文挑战第4天】本文将探讨安卓与iOS两大操作系统在最新技术进展方面的差异与相似之处。我们将分析它们在人工智能、增强现实、隐私保护等方面的创新和发展,并展望未来可能出现的趋势。通过对比这两个操作系统的技术特点,读者将能够更好地了解并选择适合自己需求的智能设备。
|
2月前
|
移动开发 安全 数据安全/隐私保护
iOS 代码混淆和加固技术详解
iOS 代码混淆和加固技术详解
|
3月前
|
存储 Linux iOS开发
iOS 技术博主指南:填写苹果应用上架中的隐私政策信息
iOS 技术博主指南:填写苹果应用上架中的隐私政策信息
|
3月前
|
移动开发 安全 数据安全/隐私保护
iOS代码混淆和加固技术详解
iOS代码混淆和加固技术详解
27 0
|
5月前
|
数据采集 网络协议 开发工具
 如何进行iOS技术博客的备案?
在本篇问答中,我们将为iOS技术博主介绍如何进行备案。如果你的iOS应用只包含简单的页面,并通过蓝牙进行数据采集和传输,那么你可能不需要备案。然而,如果你希望通过域名调用后端服务,建议进行备案以满足国内服务器访问的要求。我们将详细解释备案的三要素以及备案流程,并提供参考资料供你查阅。
|
6月前
|
移动开发 安全 数据安全/隐私保护
iOS代码混淆和加固技术详解
iOS代码混淆和加固技术详解
40 0
|
6月前
|
移动开发 安全 数据安全/隐私保护
iOS代码混淆和加固技术详解
在开发iOS应用程序时,保护应用的安全性是一项非常重要的任务。为了防止应用被破解、盗版、二次打包或反编译,开发者需要采用一些加固和混淆的措施来增加应用的安全性。本文将详细介绍iOS代码混淆和加固技术,并推荐一些常用的工具和库。