RDMA设计15:连接管理模块设计2

本博文主要交流设计思路,在本博客已给出相关博文140多篇,希望对初学者有用。注意这里只是抛砖引玉,切莫认为参考这就可以完成商用IP设计。若有NVME或RDMA 产品及项目需求,请看B站视频后联系。

(1) 建立连接流程

在 CONNECT 状态下,读取一条连接信息缓存中的指令信息,同时判断指令信息中的会话 ID 是否在会话管理池中存在。如会话 ID 不存在,则继续进行建立连接流程,并组装 CM 连接请求包,跳转至 CON_SEND_REQ 状态;如果会话 ID 已存在,则状态跳转至 IDLE 并返回错误信息。在 CON_SEND_REQ 状态下,组装好的 CM 连接请求包将被逐帧发送至 RoCEv2 发送模块,在其发送完毕后状态跳转至 CON_WAIT_REP 状态。

在 CON_WAIT_REP 状态下,状态机等待来自远程主机的连接回复包,当收到回复包后,解析该回复包。如果远程主机同意连接,则跳转至 CON_SEND_RTU 状态;如果远程主机拒绝连接或等待超时,则跳转至 IDLE 状态并返回错误信息。在 CON_SEND_RTU 状态下,状态机组装并逐帧发送 CM 就绪使用包(Ready toUse)至 RoCE v2 发送模块,状态跳转至 DONE 状态,建立连接流程结束。

(2)断开连接流程

在 DISCONNECT 状态下,状态机读取一条连接信息缓存中的指令信息,同时判断指令信息中的会话 ID 是否在会话管理池中存在。如会话 ID 已存在,则断开连接流程继续,组装 CM 断链请求包,跳转至 DISCON_SEND_REQ 状态;如果会话 ID 不存在,则状态跳转至 IDLE 并返回错误信息。在 DISCON_SEND_REQ 状态下,状态机组装 CM 断开连接请求包并逐帧发送至RoCE v2 发送模块,而后跳转至 DISCON_WAIT_REP 状态。

在 DISCON_WAIT_REP 状态下,状态机等待来自远程主机的断开连接回复包,当 收 到 回 复 包 后 , 解 析 该 回 复 包 。 如 果 远 程 主 机 同 意 断 开 连 接 , 则 跳 转 至DISCON_WAIT_REQ 状态;如果远程主机拒绝断开连接或等待超时,则跳转至 IDLE状态并返回错误信息。

在 DISCON_WAIT_REQ 状态下,状态机等待来自远程主机的断开连接请求包,当收到请求包后,解析该请求包并跳转至 DISCON_SEND_REP 状态,如果等待超时,则跳转至 IDLE 状态并返回错误信息。

在 DISCON_SEND_REP 状态下,状态机组装 CM 断开连接回复包并逐帧发送至RoCE v2 发送模块,而后跳转至 DONE 状态,断开连接流程结束。会话管理池在系统复位时被清空,在建立连接结束后写入会话 ID,在断开连接结束后清除对应的会话 ID。由于实际应用中,交换机接口数量有限,故将会话管理池深度设置为 64,足以满足常见应用场景下的性能要求.

B站已给出相关性能的视频,如想进一步了解,请搜索B站用户:专注与守望

https://www.bilibili.com/video/BV1mPV5eCE8z/?spm_id_from=333.337.search-card.all.click\&vd_source=c355545d27a44fe96188b7caefeda6e7

相关推荐
chilix5 小时前
Linux 跨网段路由转发配置
网络协议
ZPC82102 天前
docker 镜像备份
人工智能·算法·fpga开发·机器人
ZPC82102 天前
docker 使用GUI ROS2
人工智能·算法·fpga开发·机器人
gihigo19982 天前
基于TCP协议实现视频采集与通信
网络协议·tcp/ip·音视频
白太岁2 天前
通信:(5) 电路交换、报文交换与分组交换
运维·服务器·网络·网络协议
tiantianuser2 天前
RDMA设计53:构建RoCE v2 高速数据传输系统板级测试平台2
fpga开发·rdma·高速传输·cmac·roce v2
博览鸿蒙2 天前
FPGA 和 IC,哪个前景更好?怎么选?
fpga开发
EasyGBS2 天前
国标安全升级:GB28181平台EasyGBS支持GB35114协议的应用场景与核心优势
网络协议·安全·gb28181·gb35114
FPGA_小田老师2 天前
xilinx原语:ISERDESE2原语详解(串并转换器)
fpga开发·iserdese2·原语·串并转换
凯酱2 天前
Windows防火墙入站规则IP白名单
windows·网络协议·tcp/ip