【infiniband】gid_to_wire_gid函数

这篇具有很好参考价值的文章主要介绍了【infiniband】gid_to_wire_gid函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、函数定义

void gid_to_wire_gid(const union ibv_gid *gid, char wgid[])
{
	uint32_t tmp_gid[4];
	int i;

	memcpy(tmp_gid, gid, sizeof(tmp_gid));
	for (i = 0; i < 4; ++i)
		sprintf(&wgid[i * 8], "%08x", htobe32(tmp_gid[i]));
}

【infiniband】gid_to_wire_gid函数,网络,编程,linux,infiniband

二、代码解读

解读1

这个函数是用来将ibv_gid结构转换为字符串表示的wire格式的。
ibv_gid是一个16字节的结构体,定义在infiniband/verbs.h头文件中:

union ibv_gid {
    uint8_t     raw[16];
    struct {
        __be64 subnet_prefix;
        __be64 interface_id;
    } global;
};

【infiniband】gid_to_wire_gid函数,网络,编程,linux,infiniband它包含128位全局标识符(Global Identifier),用于在InfiniBand网络中标识端口。
而gid_to_wire_gid函数的作用是:
1. 将ibv_gid结构中的16字节内容拷贝到一个uint32_t数组tmp_gid中(每4字节拷贝到一个uint32_t)
2. 循环将每个uint32_t变量转换为8位十六进制字符串,组合成一个32字节十六进制字符串
3. 字符串以4个字节(8位十六进制)为一组,组与组之间无分隔符
这样就可以将原始的二进制ibv_gid表示成人类可读的wire格式字符串。
举例来说,如果ibv_gid的内容是:
raw = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 
       0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00}
转换后的wire格式字符串就是:
"112233445566778899aabbccddeeff00"
这样来回转换就可以在人和程序之间传递ibv_gid信息了。

【infiniband】gid_to_wire_gid函数,网络,编程,linux,infiniband

解读2

ibv_gid的wire格式指的是十六进制字符串表示形式。之所以称为"wire格式",是因为它常用于在网络设备之间传递ibv_gid信息。
wire在网络领域常指线缆或网络连接,wire format意为在网络上传输的格式。
ibv_gid的原始二进制格式不便在设备之间直接传递,需要转换为一个通用的文本格式以便在网络设备间传输。
所以这里的wire可以理解为"网络传输格式"的意思。wire格式将ibv_gid转换为可打印的十六进制字符串,便于在网络设备间传递。
另一方面,wire也暗示了这种格式经过"线缆"(wire)传输。
综上,wire格式是一种为网络传输而设计的编码格式, wire在这里表示这种格式用于在网络连接/"线缆"上传输信息。
所以wire格式可以翻译成:
- 网络传输格式
- 线缆格式
- 链路格式
表达了这是一种便于在网络设备间传递的编码格式。

【infiniband】gid_to_wire_gid函数,网络,编程,linux,infiniband文章来源地址https://www.toymoban.com/news/detail-684206.html

到了这里,关于【infiniband】gid_to_wire_gid函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • WireGuard 组网教程:快速构建安全高效的私密网络并实现内网穿透_wire guard(2)

    节点的公网 IP 地址:端口,例如 123.124.125.126:1234 ,或者直接使用域名 some.domain.tld:1234 。如果peer节点不在同一子网中,那么节点的公开端点必须使用公网 IP 地址。 私钥(Private key) 单个节点的 WireGuard 私钥,生成方法是: wg genkey example.key 。 公钥(Public key) 单个节点的 Wir

    2024年04月09日
    浏览(46)
  • WireGuard 组网教程:快速构建安全高效的私密网络并实现内网穿透_wire guard(1)

    2.2 网络拓扑结构 2.3 具体步骤 2.3.1 中继服务器配置 2.3.2 其他peer 2.3.3 测试 2.4 WireGuard配置文件说明 3 WireGuard工具 3.1 wg-easy 3.2 wg-gen-web 3.3 dsnet 1.1 什么是WireGuard 官方介绍如下: WireGuard ® 是一款极其简单但快速且现代的 VPN,采用最先进的加密技术。它的目标是比 IPsec 更快、更

    2024年04月15日
    浏览(74)
  • 【探索Linux】—— 强大的命令行工具 P.26(网络编程套接字基本概念—— socket编程接口 | socket编程接口相关函数详细介绍 )

    本文将深入探讨使用套接字进行网络通信的基本步骤,包括创建套接字、绑定地址、监听连接(对于服务器端)、连接远程主机(对于客户端)、以及发送和接收数据等操作。套接字编程涉及一系列系统调用和函数,如 socket() 、 bind() 、 listen() 、 connect() 、 send() 、 recv() 等。

    2024年03月10日
    浏览(84)
  • Linux 建立用户和修改用户UID,GID

    预设用户名为tom,UID=222,GID=222 首先我们来创建一个用户,创建用户命令: useradd tom(useradd 用户名) 创建好用户名后,再来创建用户的密码,于是接着创建密码,创建密码命令: passwd tom(passwd 用户名) 弄好后,我们再来查看是否建立成功,为了更好的,更直面的展示,我

    2024年02月06日
    浏览(44)
  • InfiniBand 的前世今生

    今年,以 ChatGPT 为代表的 AI 大模型强势崛起,而 ChatGPT 所使用的网络,正是 InfiniBand,这也让 InfiniBand 大火了起来。那么,到底什么是 InfiniBand 呢?下面,我们就来带你深入了解 InfiniBand。 InfiniBand(也称为“无限带宽”,缩写为 IB)是一个用于高性能计算的计算机网络通信标

    2024年02月06日
    浏览(36)
  • linux修改用户uid和gid并且修改文件所有权(所属用户及所属用户组)(chown命令、chgrp命令)(批量修改查找并修改文件、目录uid和gid)

    在Linux系统中,每个用户和用户组都有唯一的数字标识符,分别称为用户ID(UID)和组ID(GID)。在某些情况下,可能需要修改这些值。例如,当将文件从一个环境迁移到另一个环境时,如果在目标环境中的UID和GID与源环境不匹配,则需要进行修改。此外,还可能需要修改文件

    2024年04月15日
    浏览(67)
  • 内核和用户空间中的TID,GID, PID,uid

    要获取关于eBPF中的进程信息,可以使用以下函数: bpf_get_current_pid_tgid()、 bpf_get_current_uid_gid()、 bpf_get_current_comm(char *buf, int size_of_buf)。 当程序被绑定到对某个内核函数调用时,就可以使用它们。UID/GID应该比较明确,但对于那些以前没有接触过内核操作细节的人来说,还是需要

    2024年02月07日
    浏览(48)
  • linux【网络编程】TCP协议通信模拟实现、日志函数模拟、守护进程化、TCP协议通信流程、三次握手与四次挥手

    Tcp通信模拟实现与Udp通信模拟实现的区别不大,一个是面向字节流,一个是面向数据报;udp协议下拿到的数据可以直接发送,tcp协议下需要创建链接,用文件描述符完成数据的读写 1.1.1 接口认识 1.1.1.1 listen:监听socket 1.1.1.2 accept:获取连接 通信就用accept返回的文件描述符,

    2024年02月06日
    浏览(54)
  • RDMA vs InfiniBand 网卡接口如何区分?

     (该架构图来源于参考文献)  高性能计算网络,RoCE vs. InfiniBand该怎么选? 新 RoCEv2 标准可实现 RDMA 路由在第三层以太网网络中的传输。RoCEv2 规范将用以太网链路层上的 IP 报头和 UDP 报头替代 InfiniBand 网络层。这样,就可以在基于 IP 的传统路由器之间路由 RoCE。  RoCE v1协议:

    2024年01月25日
    浏览(41)
  • 超低时延交换机,让Infiniband交换机不再是唯一的选择

    近期与同事去某物理所技术交流,满机房的都是IB 交换机,十分壮观。 然而,客户这次叫我们来,目的却是想换掉他们,一台不留。客户无奈地说,IB 交换机的时延方面,没得说,但是“想买到”太难了,由于IB 交换机只支持IB 通信协议,所以每当有扩容的需求时,也只能继

    2024年02月04日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包