Skip to main content

端到端端口行为

正常的路由器行为如下:
  1. 创建一个本地端口。
  2. 如果该端口用于提供服务,注册其服务和实例名称。
  3. 当远端服务的端点地址未知时进行查找。
  4. 向已解析的端点发送消息。
  5. 接收消息以及源信息。
  6. 根据需要重复查找、发送和接收。
  7. 服务器停止时注销服务。
  8. 关闭端口。

电源管理

只要仍有消息待处理,路由器就会阻止系统进入挂起状态。当有工作需要处理时它会获取一个 wakelock,并在挂起消息处理完成之后释放。传输或客户端不应假定排队的数据能够挺过挂起,除非路由器已经完成了相关工作。

SMP 与多核安全

路由表、活跃服务器表和活跃远端端口表属于共享状态。使用互斥锁和自旋锁保护更新和并发访问。客户端回调不应在持有路由器锁的情况下执行可能阻塞或回调进入路由器的操作。

流控

流控通过控制路径上的请求和确认消息表示。路由器使用该路径协调目的地是否可以接收更多数据。客户端应将流控通知视为一种传输状态,避免在目的地不可用时以忙循环方式发送。

诊断

路由器提供内核日志消息,帮助诊断路由或服务发现问题。有用的证据包括:
  • 本地节点和端口身份
  • 服务和实例名称
  • 已解析的目的地址
  • 节点、服务器和客户端的状态事件
  • 流控请求和确认
  • 发送和接收的返回值
  • 传输链路状态

传输依赖

路由器本身并不实现物理硬件驱动。它依赖将其连接到底层链路的传输适配器。已记录的协议栈包含:
  1. 一个传输适配器,例如共享内存或桥接传输
  2. 路由器核心
  3. socket 到路由器的接口
  4. 内核 socket 层
  5. 平台支持和底层链路驱动
传输适配器提供报文移动;路由器核心提供寻址、路由、服务发现和流控。

失败边界

一个实用的失败边界是第一个停止进展的层: