本文主要是介绍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
这篇关于RoCE v2中UDP的源端口和目的端口的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!