ceph

Nautilus 新东西之--MSGR2协议

2019-03-21  本文已影响0人  ming416

这是由SimpleMessenger实现的Ceph on-wire protocol的修订版。它解决了性能和安全问题。

目标

修订版protocol有几个与原始protocol相关的目标:

定义

阶段

连接有四个不同的阶段:

  1. banner
  2. 认证帧交换
  3. 消息流握手帧交换
  4. 消息帧交换

BANNER

客户端和服务器在连接时都发送banner:

"ceph %x  %x\n", protocol_features_suppored, protocol_features_required

协议功能是一个新的,独特的命名空间。最初没有定义或要求任何功能,因此这将是“ceph 0 0n”。

如果远程方需求的功能我们不支持,可以断开连接。

image

帧格式

发送或接收的所有其他数据都包含在帧中。每个框架都有以下形式:

frame_len (le32)
tag (TAG_* le32)
frame_header_checksum (le32)
payload
[payload padding -- only present after stream auth phase]
[signature -- only present after stream auth phase]

HELLO

AUTHENTICATION

客户端使用允许的身份验证方法时的身份验证阶段交互示例:

image

客户端使用禁用身份验证方法作为第一次尝试时的身份验证阶段交互示例:

image

授权后帧格式

帧格式是固定的(见上文),但可以采用三种不同的形式,具体取决于AUTH_DONE标志:

消息流握手

在此阶段,对等体彼此识别并且(如果需要)重新连接到已建立的会话。

失败场景示例:

image image image image image

RC *表示重置会话满标志取决于连接的policy.resetcheck。

image

消息交换

会话建立后,我们可以交换消息。

协议交互(WIP)

image
上一篇下一篇

猜你喜欢

热点阅读