如何利用仪表构造InfiniBand流量在数据中心测试中的应用
一、什么是Infiniband?
在当今数据爆炸的时代,数据中心作为信息处理的中心枢纽,面临着前所未有的挑战。传统的通信方式已经难以满足日益增长的数据传输需求,而InfiniBand技术的出现,为数据中心带来了全新的通信解决方案。
InfiniBand(IB)是一种高性能计算和数据中心网络架构,其设计目标是通过提供低延迟、高带宽以及可扩展性来满足大规模计算和数据传输的需求。让我们深入了解InfiniBand的基本概念。
InfiniBand网络采用点对点的直连架构。每个设备,如服务器、存储设备或其他计算资源,都通过InfiniBand适配器直接连接到网络,形成一个点对点的通信结构。这种设计有助于降低通信的延迟,提高整体性能。
二、Infiniband产生的原因
说到Infiniband网络,我们首先提到传统网络数据传输的架构。在传统的互连结构中,操作系统通常是共享网络资源的唯一所有者,这导致应用程序无法直接访问网络。相反,数据传输通常需要依赖操作系统将数据从应用程序的虚拟缓冲区传输到网络堆栈和线路。在传统网络结构中,应用程序需要通过操作系统来实现数据的传输。

这个过程包括:
- 应用程序缓冲区:数据通常存储在应用程序的缓冲区中,等待被传输。
- 操作系统介入:应用程序通过系统调用等方式请求操作系统将数据传输到网络堆栈中。
- 网络堆栈传输:操作系统将数据从应用程序缓冲区传输到网络堆栈,其中包括协议栈的处理,例如TCP/IP协议。
- 网络线路传输:最终,数据通过网络线路传输到目标节点。这种结构下,应用程序无法直接控制网络的数据传输,而是依赖于操作系统进行中介。
InfiniBand技术的突出特点之一是以应用为中心的网络交互方式。这种方式下,应用程序能够直接通过网络进行数据的交换,而无需直接涉及操作系统。

以下是InfiniBand实现以应用为中心方式的关键机制:
-
远程直接内存访问(RDMA)
InfiniBand网络支持远程直接内存访问(RDMA)技术。通过RDMA,应用程序可以在不涉及操作系统的情况下直接访问和交换内存中的数据。这种直接的内存访问方式消除了传统网络结构中的中介步骤,大大降低了数据传输的延迟。 -
用户空间网络堆栈
InfiniBand网络允许在用户空间中实现网络堆栈,使得应用程序能够直接处理网络协议。这样一来,应用程序不再需要通过操作系统的内核空间进行数据传输,而是可以直接在用户空间中完成网络操作,提高了效率和灵活性。 -
零拷贝技术
InfiniBand还支持零拷贝技术,通过这一技术,应用程序可以直接在内存中操纵数据,而无需将数据复制到中间缓冲区。这降低了数据传输的开销,提高了效率。
三、Infiniband网络架构与TCP/IP
InfiniBand架构与传统的TCP/IP模型在网络通信中有着显著的差异,尤其在分布式存储和高性能计算领域的应用上。InfiniBand架构分为五层,类似于传统的TCP/IP模型。这五层分别是:
- 物理层:处理硬件接口、电气和光学传输等底层细节。
- 数据链路层:负责数据的封装和解封装,错误检测和纠正。
- 网络层:处理数据的路由和转发,确保数据在不同设备之间的正确传递。
- 传输层:负责端到端的可靠数据传输,包括流控制和错误恢复。
- 应用层:提供网络服务给应用程序,如TCP、UDP等。
InfiniBand在分布式存储领域,尤其是在分布式并行计算场景的存储前端网络中得到广泛应用。其强调高性能、低延迟,适用于大规模并行计算机集群和需要高吞吐量的应用场景。
TCP/IP则更为普遍地应用于商业网络和一般互联网通信。它是目前互联网通信的主流协议,用于支持各种应用,包括网页浏览、电子邮件、文件传输等。
InfiniBand架构通过引入远程直接内存访问(RDMA)技术等创新,解决了网络传输过程中服务器端数据处理的延迟问题。RDMA技术允许通过网络接口直接访问内存数据,无需内核干预,从而实现高吞吐量和低延迟的网络通信。

四、Infiniband网络有哪些优势
通过InfiniBand实现应用为中心的网络交互方式,带来了一系列优势,并与传统网络结构形成了关键区别:
1、低时延
由于应用程序能够直接进行数据交换,而无需经过多层的操作系统介入,因此InfiniBand网络实现了更低的传输延迟。这对于对延迟要求较高的应用场景非常重要。
2、高带宽
InfiniBand的应用为中心方式能够更有效地利用网络资源,提高了整体的带宽利用率。这使得InfiniBand网络在大规模数据传输和高性能计算等方面表现出色。
3、高效能
通过支持RDMA、用户空间网络堆栈和零拷贝技术,InfiniBand实现了更为高效的数据传输方式。这种高效能直接影响到应用程序的性能和响应速度。
4、灵活性
以应用为中心的方式使得应用程序更灵活地控制数据传输和网络操作,无需过多依赖于操作系统的限制。这为应用程序提供了更大的自主性和定制性。
五、如何使用测试仪构造基于UDP的infiniband流量
信而泰L23测试平台Renix支持构造UDP报文头内的各种InfiniBand报文协议栈,通过构造Infinbind流量,模拟CA设备与被测设备之间进行请求(request)或者响应(response)消息的交互,以此来验证被测设备针对Infiniband协议字段的识别和处理能力。
测试拓扑及主要配置步骤如下:

如图所示,测试仪P1与P2端口与DUT的A、B端口互联,通过在测试仪A端口构造Infiniband流量发送至A端口,应答消息由B端口发送至测试仪B端口,来模拟CA设备之间的消息交互场景。
1、创建流量;
2、添加UDP头部;

3、在UDP头部前添加Rocev2instance;

4、编辑协议字段并发送流量;

创建完成后可以在流模板帧界面可以看到创建的该条流量是基于UDP的infiniband流量,并且每个字段都支持自定义编辑。
被测设备收到测试仪发出的Infiniband消息后会解析其中的消息字段并做出响应,通过这种方式可以测试执行send、recive、write、read、原子操作的场景。报文交互现象如下图所示:

每个Infiniband报文分为payload、路由报文头(header)、CRC校验等,其中header包含以下内容:
本地路由头部(LRH):包括目标端口本地ID(DLID)和源端口本地ID(SLID)。两者都占据16-bits,前者用来表示报文通过交换机需要到达的子网目的地端口;后者用来表示报文源头的子网ID。
全局路由头部(GRH):包括目标端口全局ID(DGID)和源端口全局ID(SGID)。两者都占据128-bits,高64-bits表示CA端口的子网ID,低64-bits表示端口的全局唯一ID(GUID)。
基础传输头部(BTH):包括Opcode、DestQP和PSN。Opcode表示报文操作类型;DestQP表示对端CA的目标QP(QueuePair,是IB协议中信息传输的重要机制);PSN(PacketSequenceNumber)占24-bits,表示报文序列号,可以用于报文顺序检查和报文重传。
六、信而泰DarYu/BigTao系列网络测试仪
DarYu-X系列高性能网络测试仪是信而泰推出的面向高端路由器、高端交换机、数据中心交换机以及高性能应用层设备的测试产品,具有高性能、高密度、高速率等特点,支持单框运行、多框级联等模式。它采用模块化设计,提供3个或12个插槽,测试接口覆盖以太网1G到400G范围内的所有速率,实现按需扩展,帮助企业用户轻松应对测试业务的快速增长和未来业务发展。
BigTao-V系列网络测试仪可实现针对网络设备和网络系统的流量测试及协议仿真,在功能、性能及安全性方面提供全面测试解决方案,满足研发、实验和质量控制等过程中的测试需求。


相关文章:
如何利用仪表构造InfiniBand流量在数据中心测试中的应用
一、什么是Infiniband? 在当今数据爆炸的时代,数据中心作为信息处理的中心枢纽,面临着前所未有的挑战。传统的通信方式已经难以满足日益增长的数据传输需求,而InfiniBand技术的出现,为数据中心带来了全新的通信解决方…...
Kubernetes 文档 / 概念 / Kubernetes 架构 / 节点
Kubernetes 文档 / 概念 / Kubernetes 架构 / 节点 此文档从 Kubernetes 官网摘录 中文地址 英文地址 节点上的组件包括 kubelet、 容器运行时以及 kube-proxy。 管理 向 API 服务器添加节点的方式主要有两种: 节点上的 kubelet 向控制面执行自注册;…...
ICode国际青少年编程竞赛- Python-1级训练场-for循环练习
ICode国际青少年编程竞赛- Python-1级训练场-for循环练习 1、 for i in range(3):Dev.step(4)Dev.turnLeft()2、 for i in range(3):Dev.step(2)Dev.turnRight()Dev.step(2)Dev.turnLeft()3、 for i in range(3):Dev.step(2)Dev.turnRight()Dev.step(2)Dev.turnLeft()4、 for…...
Flutter分模块开发、模块可单独启动、包含Provider
前言 当前案例 Flutter SDK版本:3.13.2 目前Flutter都是在一个项目中,创建不同目录进行模块开发,我进行Android原生开发时,发现原生端,是可以将每个模块独立运行起来的,灵感来自这; 折腾了几…...
Element-UI快速入门:构建优雅的Vue.js应用界面
Element-UI是一套基于Vue.js的组件库,提供了丰富的UI组件和交互效果,帮助开发者快速构建出美观、功能丰富的Web应用界面。本文将介绍如何快速入门Element-UI,并搭建一个简单的示例界面。 步骤一:安装Element-UI 首先,…...
Flutter 中的 @immutable:深入解析与最佳实践
在 Flutter 开发中,immutable 注释扮演着至关重要的角色,用于标记不可变类。不可变类顾名思义,其状态一旦创建便不可更改,这与可变类截然不同。后者允许在创建后对实例进行修改。 immutable 的利好 引入不可变类可以带来诸多优势…...
Pandas数据可视化 - Matplotlib、Seaborn、Pandas Plot、Plotly
可视化工具介绍 让我们一起探讨Matplotlib、Seaborn、Pandas Plot和Plotly这四个数据可视化库的优缺点以及各自的适用场景。这有助于你根据不同的需求选择合适的工具。 1. Matplotlib 优点: 功能强大:几乎可以用于绘制任何静态、动画和交互式图表。高度可定制&a…...
人工智能的发展将如何重塑网络安全
微信搜索关注公众号网络研究观,获取更多信息。 人们很容易认为人工智能 (AI) 真正出现是在 2019 年,当时 OpenAI 推出了 ChatGPT 的前身 GPT-2。 但现实却有些不同。人工智能的基础可以追溯到 1950 年,当时数学家艾伦图灵发表了题为“计算机…...
Prometheus+Grafana多方位监控
PrometheusGrafana多方位监控 契机 ⚙ 最近发现火山引擎有托管的Prometheus,可是当前是邀测阶段。并且发现火山云的ECS是自带开机自启的exporter的。刚好需要搭建一套服务器监控,所以研究了一套Prometheus监控,包含linux主机监控nginx监控es监控rabbitM…...
使用Docker安装Redis
大家好,今天给大家分享一下如何使用docker安装Redis,关于docker的安装和常用命令,大家可以参考下面两篇文章,本文中不做过多描述。 Docker在Windows与CentOS上的安装 Docker常用命令 关于Redis的介绍与常用操作可以参考&#x…...
React 之 Effect与事件(event)(八)
Effect(useEffect Hook) 在React中,Effect(或者更具体地说,useEffect Hook)是一个特殊的函数,它允许你在函数组件中执行副作用操作。这些副作用操作可能包括数据获取、手动更改DOM、订阅或取消订…...
网卡的了解
什么是网卡_csdn网卡是什么-CSDN博客 MAC地址:48位串行号(独一无二) 2^48281 474 976 710 656 10位:10亿 5位:1万 15位:10万亿 网卡就是网络适配器 设置--->网络和Internet--->高级网络设置--->硬…...
SSM框架目录
ssm 知识相关目录主要参考尚硅谷 赵伟风老师的视屏,参考链接为 SSM视频_ SSM技术视频_SSM视频教程_尚硅谷 【注意】有些图片为了简便,所以就直接使用了视屏分析。 1、SSM框架相关知识 SpringFramework 基本概念 链接:SpringFramework 基本…...
MATLAB实现杜拉德公式和凯夫公式的计算固液混合料浆临界流速
MATLAB实现杜拉德公式和凯夫公式的计算固液混合料浆临界流速: 杜拉德公式是用来计算非均质固液混合料浆在输送管中的临界速度的公式,具体形式为: uL FL (2gD / (ρ0 - ρ1))^(1/2) 其中: uL:表示料浆的临界速度,…...
Oceanbase all-in-one单机版部署,通过MySQL客户端连接OB租户,DBEAVER 客户端连接MySQL租户。
一.Oceanbase all-in-one单机版部署 1.修改资源限制。 vim /etc/security/limits.conf root soft nofile 655350 root hard nofile 655350 * soft nofile 655350 * hard nofile 655350 * soft stack unlimited * hard stack unlimited * soft nproc 655360 * hard nproc 6553…...
【DevOps】玩转 Google Cloud:项目切换与 K8s 集群访问
本篇博文将带您深入了解 Google Cloud Platform (GCP) 项目管理和 Kubernetes 集群访问的实用技巧。无论您是 GCP 新手还是经验丰富的云端开发者,都能从中获益匪浅。 目录 一、查看 Google Cloud 项目列表 方法一:使用 gcloud 命令行工具 方法二...
大模型_DISC-MedLLM基于Baichuan-13B-Base医疗健康对话
文章目录 DISC-MedLLM介绍概述数据集部署推理流程 DISC-MedLLM 介绍 DISC-MedLLM 是一个专门针对医疗健康对话式场景而设计的医疗领域大模型,由复旦大学数据智能与社会计算实验室 (Fudan-DISC) 开发并开源。 该项目包含下列开源资源: DISC-Med-SFT 数据集 (不包…...
开源模型 Prometheus 2 能够评估其他语言模型,其效果几乎与 GPT-4 相当
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
【Java】HOT100 贪心算法
目录 理论基础 一、简单贪心 LeetCode455:分发饼干 二、中等贪心 2.1 序列问题 LeetCode376:摆动序列 2.2 贪心股票问题 LeetCode121:买卖股票的最佳时机 LeetCode121:买卖股票的最佳时机ii 2.3 两个维度权衡问题 LeetCode135&…...
绝地求生:PUBG杜卡迪联名进入倒计时3天!
大家好,我是闲游盒。 杜卡迪联名已经进入倒计时3天!喜欢的朋友要注意结束时间可千万别错过! 杜卡迪6色车辆 随着五一小长假的结束,本次混沌漫彩通行证也即将结束,本次通行证31级之后没升1级可额外领取1500BP和挑战者纪…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...
