RoCE v2中UDP的源端口和目的端口

0 前言

RoCE v2协议中RDMA的数据都是通过UDP来传输的,按照RoCE v2协议规范,UDP的目的端口是固定的(des port = 4791),但是UDP源端口的确定是由RDMA驱动使用hash来算出来的。不同的QP建链方式以及QP的类型采用具体的计算方法不同。其中源端口的范围是49152-65535 (十六进制:0xC000-0xFFFF)

1 采用RDMA_CM建链时源端口的计算方式

CM_REQ.ServiceID.DstPort [2 Bytes]
CM_REQ.PrivateData.SrcPort [2 Bytes]
RoCE.UDP.src_port = (DstPort[0..1] XOR SrcPort[0..1]) OR 0xC000
其中RDMA_CM建链时用到的源端口和目的端口占16bits,取DstPort 和SrcPort做异或然后再与0xC000做或运算。

2 不采用RDMA_CM建链时源端口的计算方式

不采用RDMA_CM建立连接时UDP源端口需要根据QP类型和建链两边的QP Number来确定,具体算法如下:
QP Number占24bits,需要先将这24bits Fold成16bits,具体运算为QP[0] ^= QP[2],具体的hash计算是根据QP而指定的:

  • 对于RC类型的QP,具体计算方法是:
  if (s.QP != d.QP)
    UDP src_port = s.QP XOR d.QP OR 0xC000
  else
    UDP src_port  = s.QP OR 0xC00
  • 对于UD类型的QP,具体计算方法是:
  if (s.QP != d.QP) && (d.QP != 0xFFFFFF)
    UDP src_port = s.QP XOR d.QP AND 0xC000
  Else
    UDP src_port = s.QP AND 0xC000

3 参考资料

RoCE v2.0 UDP Source Port Entropy
NVIDIA RoCE v2 UDP Source Port

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值