格式如下:

wireshark抓包,soft-roce(基于rocev2实现的)格式如下:

其实这里看着有点奇怪,ICRC是跟在Payload头后面的,不知道为什么抓包看到的却是在BTH头后面的,还有就是看不到FCS??

其中BTH头的格式有以下字段:

BTH长度是12B
opcode(1B):0-4bit表示操作方式,比如上面是RDMA WRITE,5-7表示qp的类型,比如上面是rc类型,根据opcode的组合,可能还会有一些额外的头部跟在BTH后面,比如上面跟了一个RETH头部。

Solicited Event(1bit):参考SE描述
MigReq(1bit):
Pad Count(2bit):数据包增加的额外长度,比如发送的包长度是3,那么为了4字节对齐,pad count的值就是1.

Header Version(4bit):该包的头部版本号?
Partition Key(2B):参考P_Key描述
Reserved(1B):预留
Destination Queue Pair(3B):目的端的qp num
Acknowledge Request:(1b)表示对端是否需要回复一个ack包
Reserved(7b):预留
Packet Sequence Number(3B):该包的序列号

在soft-roce里。对bth赋值的函数在
rxe_req.c
init_req_packet函数里,
init_req_packet -> bth_init

pad = (-payload) & 0x3;

rxe_hdr.h

static inline void bth_init(struct rxe_pkt_info *pkt, u8 opcode, int se,int mig, int pad, u16 pkey, u32 qpn, int ack_req,u32 psn)
{struct rxe_bth *bth = (struct rxe_bth *)(pkt->hdr + pkt->offset);bth->opcode = opcode;bth->flags = (pad << 4) & BTH_PAD_MASK;if (se)bth->flags |= BTH_SE_MASK;if (mig)bth->flags |= BTH_MIG_MASK;bth->pkey = cpu_to_be16(pkey);bth->qpn = cpu_to_be32(qpn & BTH_QPN_MASK);psn &= BTH_PSN_MASK;if (ack_req)psn |= BTH_ACK_MASK;bth->apsn = cpu_to_be32(psn);
}

ICRC(4B)
计算方式如下:
crc的计算可以先了解此贴:https://blog.csdn.net/qq_38158479/article/details/102859774

待完善。。

其余的一些额外扩展头部总结:
比如存在于rdma write方式中的RETH头部,格式如下:
RETH(16B):

VA(8B):表明数据包要存放的虚拟起始地址
r_key(4B):表明该虚拟地址的访问权限
dma length(4B):该包的长度

还有的像ack包的AETH,格式如下:
AETH(4B):
Syndrome(1B)
由Reserved+OpCode+Credit Count组成。
MSN(3B)

等等。。。根据BTH头部的opcode值还会有其它的额外开展头部,先不一一列举了,后续见到时再进行总结。

略。。。
参考:https://blog.csdn.net/u014114310/article/details/118074628

rdma rocev2报文格式总结相关推荐

  1. ARP协议的报文格式

    结构ether_header定义了以太网帧首部:结构arphdr定义了其后的5个字段,其信息 用于在任何类型的介质上传送ARP请求和回答:ether_arp结构除了包含arphdr结构外, 还包含源主 ...

  2. tcp报文格式_面试必备TCP(一):三次握手

    TCP大家都知道是什么东西,这个协议的具体报文格式如下: 标志位 URG:指示报文中有紧急数据,应尽快传送(相当于高优先级的数据). PSH:为1表示是带有push标志的数据,指示接收方在接收到该报文 ...

  3. 四、HTTP响应报文格式

    一.响应报文格式 HTTP的响应报文的通用格式如下 主要包括状态行.首部行.空行和实体体,和请求报文的结构类似 示例 状态行 HTTP/1.1 200 OK\r\n 常见的状态码的类别如下 常用状态码 ...

  4. MQTT——控制报文格式

    了解控制报文格式是学习MQTT中,笔者认为最为重要的一个知识点.MQTT的所有行为都离不开他.控制报文可以分为三个部分组成,分别为:固定报头.可以变报头.有效载荷部分. 注意:上面的说的报文的类型.是 ...

  5. RLC协议简单理解1-RLC报文格式

    RLC协议简介 RLC(Radio Link Control)在无线协议架构中属于数据面协议中的一部分,数据传输从基站到终端的过程中,一共要经历UDP/SCTP-->SDAP/RRC--> ...

  6. webservice发送xml报文_海关总署公告2020年第120号(关于发布进出境公路运输工具货运舱单电子传输报文格式V1.1的公告)...

    点击上方蓝色字体,关注我们 为切实加强公路进出境运输工具及货运舱单管理,进一步规范相关电子数据申报传输要求,根据海关总署2020年第113号公告,我署对进出境公路运输工具货运舱单电子传输报文中部分数据 ...

  7. DNS报文格式(RFC1035)

    2.资源记录定义(RR definitions)     2.1 格式         后面分析报文的时候详细解释.     2.2 类型值(TYPE values)         类型主要用在资源 ...

  8. 【计算机网络】HTTP 与 HTTPS ( HTTP 发展过程 | HTTP/1.1 与 HTTP/2 对比 | HTTP 报文格式 )

    文章目录 前言 一.HTTP 发展过程 二.HTTP/1.1 与 HTTP/2 对比 三.HTTP 报文格式 前言 目前如果在浏览器中访问 http 网站 , 浏览器会提示不安全 , 如下图 : 如果 ...

  9. 【计算机网络】网络层 : BGP 协议 ( BGP 协议简介 | BGP 协议信息交换 | BGP 协议报文格式 | BGP-4 常用报文 | RIP 、OSPF、BGP 协议对比 )

    文章目录 一.路由选择协议分类 二.BGP 协议 简介 三.BGP 协议 信息交换过程 三.BGP 协议 报文格式 四.BGP 协议 特点 五.BGP-4 协议的 四种报文 六.RIP .OSPF.B ...

最新文章

  1. leangoo思维导图工具
  2. [LeetCode]Merge Intervals
  3. MSN即将退役,即时通讯开放平台成趋势
  4. L2-006 树的遍历
  5. python整理-day4
  6. 【算法学习】【图像增强】【Retinex】White Patch Retinex
  7. SNMP简单网络管理协议及开发测试工具
  8. 计算机鼠标游戏教学法,浅谈游戏教学法在信息技术教学中的应用论文
  9. Apeaksoft iOS Toolkit for Mac(iOS设备数据恢复软件)
  10. 鼠标悬浮图片上下颤抖的问题
  11. java山地车 故障,山地车骑行常见的10大问题及解决方案
  12. 图片放大缩小js工具
  13. 如何用Matlab做一个3D头像
  14. html5简单幻灯片图片转换,用纯CSS实现简单的相册幻灯片
  15. WPS画报的电脑壁纸怎么下载
  16. 斗地主含赖子的牌型判断算法
  17. HDU-5172-GTY's gay friends-线段树单点更新
  18. Java NIO(一)BIO vs NIO
  19. 2021年高压电工考试题及高压电工考试APP
  20. AdaBoost算法搭建信用卡精准营销模型

热门文章

  1. Gentle adaboost解释
  2. python源程序执行的方式边编译边执行_五年级Python试题
  3. 用 ScrapySharp 并行下载天涯图片
  4. 计算机专业英语主要句型及翻译技巧,浅析计算机专业英语特点及翻译技巧.doc...
  5. 成华区的顾连康复医院做康复治疗费用,能报销不?
  6. 小型健身俱乐部管理系统的设计与实现_kaic
  7. 第六届蓝桥杯大赛省赛C语言B组-填空题-奖券数目(Java实现)
  8. 串口转键盘输入程序源代码
  9. 合字研究——看看藏文里面一共有多少个字吧
  10. 将32位4通道的tif遥感图片转化为8位4通道