rdma rocev2报文格式总结

格式如下:
在这里插入图片描述
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

ROCEv2(RDMA over Converged Ethernet version 2)是一种基于以太网的远程直接内存访问(RDMA)协议。ROCEv2允许在以太网上进行高效的内存共享和通信,提供了低延迟和高带宽的数据传输。 要下载ROCEv2报文,首先需要确保计算机上安装了支持ROCEv2网络适配器和驱动程序。然后,可以通过以下步骤进行ROCEv2报文下载: 1. 打开网络适配器的属性设置。在Windows系统中,可以在“控制面板”中找到“网络和共享中心”,然后选择“更改适配器设置”。在适配器设置中找到ROCEv2所使用的网络适配器,右键点击选择“属性”。 2. 在属性设置中,找到“Internet 协议版本 4(TCP/IPv4)”或“Internet 协议版本 6(TCP/IPv6)”,并点击“属性”按钮。 3. 在IPv4或IPv6属性设置中,找到“高级”按钮。 4. 在高级设置中,找到“ROCEv2”选项,并选择启用ROCEv2。 5. 点击“确定”保存设置,然后关闭属性设置窗口。 完成以上步骤后,计算机的网络适配器将开始使用ROCEv2协议进行数据传输。此时,可以通过相应的应用程序或工具来生成和管理ROCEv2报文。 总之,ROCEv2报文的下载需要确保计算机上安装了支持ROCEv2网络适配器和驱动程序,并按照上述步骤对适配器进行相应的设置。通过使用ROCEv2,可以实现高效的内存共享和通信,提供低延迟和高带宽的数据传输。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值