
网络编程
文章平均质量分 92
bandaoyu
这个作者很懒,什么都没留下…
展开
-
【网络】超以太网联盟 UEC|Ultra Ethernet|下一代 “RoCE” 协议--编辑中
Tail latency: 尾部延迟,(以通信阶段最后一条消息的到达时间为衡量标准)是系统性能的关键指标。UET: 超级以太传输协议。UEC: 超级以太联盟。原创 2024-12-22 16:01:16 · 607 阅读 · 0 评论 -
【性能】中断绑定|irqbalance 中断负载均衡|多队列技术
Linux系统默认使用irqbalance服务优化中断分配,它能自动收集数据,调度中断请求,但是它的分配调度机制极不均匀,不建议开启,为了了解中断绑定,我们把irqbalance服务关掉,手工调整绑定关系。由于硬中断处理程序不能被中断,如果它执行时间过长,会导致CPU没法响应其它硬件的中断,于是内核引入软中断,将硬中断处理函数中耗时的部分移到软中断处理函数处理。单核CPU不能完全处满足网卡的需求,通过多队列网卡驱动的支持,将各个队列通过中断绑定到不同的核上,以满足网卡的需求,同时也可以降低CPU0的负载。原创 2023-02-27 08:57:02 · 4973 阅读 · 3 评论 -
【网络】为什么单个TCP连接很难占满带宽
如果你需要用单个 TCP 连接把带宽占满,你必须把滑动窗口设置成带宽 * 网络延时那么大。这样来想这个问题,从甲地到乙地,寄一封信的时间为 2 年(网络延时), 甲地每年往乙地最多能寄 100 封信(带宽), 那么从甲地到乙地邮寄的路程上,一共最多有多少封信在寄?答案是 200 封, 很简单,假设甲地把带宽用满, 第一年寄 100 封,第二年寄 100 封,而这 200 封信都没有能到达乙地。我发现 1 秒钟,我的大脑很难理解它为一段时间,所以我把它拉长为 2 年,数据包我改成送信。转载 2023-02-24 10:28:42 · 1588 阅读 · 1 评论 -
【网络】/etc/sysconfig/network-scripts/下没有网口文件|network与NetworkManager差别
NetworkManager 以 key-file 格式将新网络配置保存到 /etc/NetworkManager/system-connections/从 RHEL 9.0 开始,RHEL 以 key-file 格式在 /etc/NetworkManager/system-connections/ 中存储新的网络配置。配置以旧格式存储在 /etc/sysconfig/network-scripts/ 中的连接仍然可以正常工作。对现有配置集的修改会继续更新旧的文件。原创 2022-12-03 00:22:02 · 6283 阅读 · 1 评论 -
【lldptool】LLDP工具|lldptool命令
在eth3上设置一个 管理地址的TLV 以携带IPv4地址192.168.10.10(Set a Management Address TLV on eth3 to carry IPv6 address ::192.168.10.10)#在eth3上设置一个 管理地址的TLV 以携带IPv4地址192.168.10.10(Set a Management Address TLV on eth3 to carry IPv4 address 192.168.10.10)原创 2022-11-23 14:35:17 · 10058 阅读 · 9 评论 -
【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
转自:https://blog.youkuaiyun.com/ledrsnet/article/details/115443242。B:0000 0000.0000 0000.0000 0000.0000 1101 转化为十进制:14。A:0000 0000.0000 0000.0000 0000.0000 1001 转化为十进制:9。输入: 输入IP网段,格式: xx.xx.xx.xx/[0-32]下来举例说明,如何去判断A和B两个IP是否在同一网段。2、要判断两个IP是否在同一网段,主要是看看他们的。原创 2022-09-23 01:42:55 · 2548 阅读 · 1 评论 -
【CaRT】Collective and RPC Transport
Collective and RPC Transport (CaRT):集体和 RPC 传输 (CaRT)⚠️ 警告:CaRT 正在大力开发中。使用风险自负。CaRT 是用于大数据和 Exascale HPC 的开源 RPC 传输层。它支持传统的 P2P RPC和集体 RPC,后者通过可扩展的基于树的消息传播在一组目标服务器上调用 RPC。原创 2022-09-12 16:23:30 · 14 阅读 · 0 评论 -
【网络】bond技术和bond相关命令|nmtui配置bond
Bond0可以保证bond虚拟网卡和被bond的两张或多张物理网卡拥有相同的MAC地址,其中bond虚拟网卡的MAC地址是其中一张物理网卡的MAC地址,而bond虚拟网卡的MAC地址是根据bond自己实现的一个算法来选择的。Bond技术即bonding,它是Linux Kernel的一个模块,能将多块物理网卡绑定到一块虚拟网卡上,并通过修改网口驱动让多块网卡看起来是一个单独的以太网接口设备,外界看到的只有一个IP,一般用于解决网卡的单点故障或网卡负载较高的场景。图1 Bond网卡7种模式优缺点对比。原创 2022-09-02 21:36:07 · 14869 阅读 · 0 评论 -
【网络】route和 IP route的区别|route 和 IP route 添加路由
route是一个相当简单的工具,非常适合创建静态路由。为了兼容性,它仍然存在于许多发行版中。ip route功能更强大,功能更多,并且可以创建更专业的规则。并非所有路由规则条目都可以用route 显示,route 只显示主路由表中的信息,而NAT路由信息以及和主路由表以外的其他路由表信息必须使用 ip route 工具单独管理和查看。IP route是用于 IP 管理的 iproute2 工具套件的另一部分,ip route 提供了用于操作任何路由表的管理工具。.......................原创 2022-08-31 17:12:23 · 7724 阅读 · 2 评论 -
【Argobots】Argobots: A Lightweight Low-Level Threading and Tasking Framework
ABT_xstream_create 函数流程梳理。在初始化时,会有一个列表全部存放 ES 流,这里会循环调用,给列表中逐个创建 ES 流。ABT_xstream_create 创建新的执行流, 并通过 newxstream 返回其句柄。如果 sched 为 ABT_SED_NULL,则使用具有基本 FIFO 队列和默认调度器配置的默认调度器。如果 sched 不是 ABT_SED_NULL,则用户不能复用调度来创建另一个执行流。......原创 2022-08-16 02:52:40 · 2038 阅读 · 0 评论 -
【RPC】水星Mercury RPC
用户手册:https://mercury-hpc.github.io/user/overview/原创 2022-08-06 02:07:48 · 252 阅读 · 0 评论 -
【网络】UCX(Unified Communication X )|统一抽象通信接口
UCX 的全称是 Unified Communication X。正如它名字所展示的,UCX 旨在提供一个统一的抽象通信接口,能够适配任何通信设备,并支持各种应用的需求。下图是 UCX 官方提供的架构图:可以看到,UCX 整体分为两层:上层的 UCP 接口和底层的 UCT 接口。底层的 UCT 适配了各种通信设备:从单机的共享内存,到常用的 TCP Socket,以及数据中心常用的 RDMA 协议,甚至新兴的 GPU 上的通信,都有很好的支持。上层的 UCP 则是在 UCT 不同设备的基础上,封装了更抽象的原创 2022-06-09 17:06:04 · 9872 阅读 · 2 评论 -
【网络】如何判断网络达到瓶颈|网络查询命令
ifconfig 查看信息collisions # collisions:发生碰撞的数据包,如果发生太多次,表明网络状况不太好[root@localhost ~]# ifconfigenp61s0f0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 182.200.31.57 netmask 255.255.255.0 broadcast 182.200.31.255 et...原创 2021-09-10 11:23:45 · 3119 阅读 · 0 评论 -
【socket】socket编程总目录
《Socket编程学习|TCP/UDP》https://blog.youkuaiyun.com/bandaoyu/article/details/83312754《Python网络编程详解socket》https://blog.youkuaiyun.com/bandaoyu/article/details/83312148《Epoll 开发中 setsockopt用法详解|socket 编程setsockopt用法详解》https://blog.youkuaiyun.com/bandaoyu/article/details/10823原创 2022-03-20 16:56:18 · 2066 阅读 · 0 评论 -
【网络】连接服务器失败(错误原因:Connection refused)| error 111: (111) Connection refused 原因分析
服务器拒绝原因:connect 发起TCP连接请求被拒绝是由于目标服务器上无对应的监听套接字(IP && PORT)。(没有监听、无法创建、监听别的IP\端口……)有几个可能性:服务器没启动或未监听端口(用TCP工具连一下你的服务器,看下服务器是否正常监听端口。如果是Windows开发者也可以使用Windows的CMD命令行telnet测试下,格式是telnet 地址 端口); 地址错误; 端口错误; 类型错误; 内存不足; 被防火墙拦截。摘自:【Pytho...原创 2022-01-22 23:04:26 · 218086 阅读 · 2 评论 -
【PFC】PFC使能 H3C交换机设置和主机设置--编辑中
H3C交换机设置主机设置mellonx RDMA网卡https://blog.youkuaiyun.com/bandaoyu/article/details/117715099intel RDMA网卡---------------------文档《Intel® Ethernet 800 Series Linux Flow Control》X722:The X722 adapter supports only link-level flow control (LFC).E原创 2022-01-08 16:52:04 · 4533 阅读 · 0 评论 -
【ceph】AsyncMessenger 通信模块基础A1--编辑中
ceph网络通信三种实现方式代码在 src/msgceph的网络通信的源码在src/msg下,有Ceph Messager的三个实现:simple,async,xio。simple模式:2021:基本不用了,不建议看了)simple模式相对比较简单,一个链接的每一端都有两个线程,分别负责读和写,当集群规模很大的时候,会有大量线程,占用大量资源,限制了网络性能。(SimpleMessenger是网络层最早的实现,当时的网络编程模型还是线程当道,因此simple采用的就是这种简单粗暴的线原创 2021-12-14 15:32:43 · 3423 阅读 · 0 评论 -
【ceph】ceph通信 message的数据结构
网络通信的接口在src/msg 的目录里,定义了网络模块的接口。在源代码src/msg 里实现了ceph 的网络通信模块。在msg目录下,定义了网络通信的抽象接口。msg/Message.ccmsg/Message.h 定义了messagemsg/Connection.h 关于connection 的接口定义msg/Dispatcher.h 关于Dispatchermsg/Messenger.cc 定义了Messengermsg/Messenger.hmsg/m...转载 2021-11-14 11:43:26 · 737 阅读 · 0 评论 -
【ceph】AsyncMessenger模块源码分析02 会话建立过程
目录Ceph Async Messengerhttp://blog.wjin.org/posts/ceph-async-messenger.htmlOverviewServerInitializationBind and ListenDeal with EventAdd Listen FdAccept ConnectionAdd Accept FdCommunicationClientSummary源文:Ceph Async Messengerhttp原创 2021-12-11 21:00:28 · 1245 阅读 · 0 评论 -
【verbs】IBV_WR API(3) Libibverbs Programmer’s Manual
阅读源码的时候,发现一些陌生 api,如ibv_wr_send。搜索后才发现是一些dev的api/testing/libibverbs-dev/ ibv_wr_send(3)源文:ibv_wr_send(3) — libibverbs-dev — Debian testing — Debian Manpages描述verbs API (ibv_wr_*) 允许使用函数调用而不是基于结构的 ibv_post_send() 方案将工作高效地发布到发送队列。这种方法旨在最大限度...原创 2021-12-11 15:37:27 · 1279 阅读 · 0 评论 -
【网络】什么是SR-IOV、PF、VF|DPDK vs SR-IOV for NFV
为提高服务器里虚拟机收发报文的性能和伸缩性,解决I/O虚拟化的最后一公里的问题,提出了 基于硬件的SR-IOV虚拟化解决方案。SR-IOV标准允许在虚拟机之间高效共享PCIe(快速外设组件互连)设备,并且它是在硬件中实现的,可以获得能够与本机性能接近的I/O性能。sr-iov中两种功能:1、物理功能:PF,用于支持SR-IOV的PCI功能,拥有完全配置或控制PCIe设备资源的能力。2、虚拟功能VF,是一种轻量级的PCIe功能,与PF相关联,可以与物理功能以及同一物理功能关联的其他VF共享转载 2021-12-10 11:52:45 · 17379 阅读 · 4 评论 -
【ceph】ceph通信模块总目录
Async Messenger代码跟踪--OSD--实际跟踪笔记(图多、分层图)【Ceph 】Async Messenger代码跟踪--OSD--实际跟踪笔记_bandaoyu的note-优快云博客原创 2021-12-09 11:13:46 · 2069 阅读 · 0 评论 -
【网络】网卡的offload概念
网卡offload功能介绍_ARM-Linux-优快云博客_offload网卡VXLAN的offload技术介绍 - tycoon3 - 博客园网络数据包分析 网卡Offload – 绿盟科技技术博客图解网络Offload - 云+社区 - 腾讯云Linux查看网卡是rdma,Chelsio RDMA Block设备驱动测试_小大和山的博客-优快云博客...原创 2021-11-30 14:08:04 · 4789 阅读 · 0 评论 -
【RDMA】技术详解(二):Send Receive操作
原文:https://blog.youkuaiyun.com/qq_21125183/article/details/865250121. 前言RDMA指的是远程直接内存访问,这是一种通过网络在两个应用程序之间搬运缓冲区里的数据的方法。RDMA与传统的网络接口不同,因为它绕过了操作系统。这允许实现了RDMA的程序具有如下特点:绝对的最低时延 最高的吞吐量 最小的CPU足迹 (也就是说,需要CPU参与的地方被最小化)2. RDMA Verbs操作使用RDMA, 我们需要有一张实现了RDMA引擎原创 2021-01-20 10:55:31 · 4810 阅读 · 1 评论 -
【RDMA】16. RDMA之DDP(Direct Data Placement)
原文:14. RDMA之Memory Window - 知乎本文欢迎转载,转载请注明出处。前一段时间比较忙所以没有更新专栏,只是对一些读者的疑问进行了回复,近期开始恢复更新。最近在研究iWARP的实现,就先写一下它的各层协议吧,iWARP的综述篇可能会晚于各层协议完成。Direct Data Placement,简称为DDP,是iWARP协议栈的核心成员。DDP协议在TCP/SCTP之上实现了了RDMA技术中的零拷贝,即在通信过程中,使接收端的硬件可以直接把收到的数据放置到用户空间的Buffer转载 2021-09-26 11:37:54 · 1391 阅读 · 0 评论 -
【RDMA】15. RDMA之RoCE & Soft-RoCE
原文:本文欢迎转载,转载请注明出处阅读本文前建议温习“RDMA概述”一文,了解下RDMA领域的基本概念。我已经在基本概念篇里面跟大家对本领域的基本知识进行了科普,在对于基本的宏观概念有了认识之后,我们就可以开始更深入的研究RDMA的实现细节了。协议本身比较抽象,对着IB规范照本宣科估计大家也很难理解,最好的方式莫过于一边做一边学了。但是支持RDMA的网卡都比较昂贵,拿Mellanox(现在是NVIDIA)来说,在其官网上最新一代支持Infiniband的网卡——ConnectX-6最便宜的单转载 2021-09-26 11:35:24 · 2421 阅读 · 0 评论 -
【RDMA】14. RDMA之Memory Window
原文:14. RDMA之Memory Window - 知乎本文是“RDMA杂谈”专栏文章的第14篇,欢迎转载,转载请注明出处。我们在Memory Region一文中介绍过Memory Region,它是一片由用户注册的特殊的内存区域:一方面其中的内容不会被换页到硬盘中,另一方面RDMA网卡中记录了它的地址转换关系,使得硬件拿到用户指定在WR中的虚拟地址之后找到对应的物理地址。本文我们来讲解Memory Window的概念,它是一种基于Memory Region的、更灵活的内存管理单元。除了原创 2021-09-26 11:27:24 · 3645 阅读 · 1 评论 -
【RDMA】7. RDMA之Protection Domain
原文:https://zhuanlan.zhihu.com/p/159493100前文我们简单介绍了RDMA中最常见的一些资源,包括各种Queue,以及MR的概念等等。MR用于控制和管理HCA对于本端和远端内存的访问权限,确保HCA只有拿到正确Key之后才能读写用户已经注册了的内存区域。为了更好的保障安全性,IB协议又提出了Protection Domain(PD)的概念,用于保证RDMA资源间的相互隔离,本文就介绍一下PD的概念。PD是什么PD全称是Protection Domain,意为"保原创 2021-01-25 15:38:13 · 1874 阅读 · 0 评论 -
【RDMA】8. RDMA之Address Handle
原文:https://zhuanlan.zhihu.com/p/163552044前面已经介绍过,RDMA通信的基本单元是QP。我们来思考一个问题,假设A节点的某个QP要跟B节点的某个QP交换信息,除了要知道B节点的QP序号——QPN之外,还需要什么信息?要知道,QPN是每个节点独立维护的序号,不是整个网络中唯一的。比如A的QP 3要跟B的QP 5通信,网络中可不止一个QP5,可能有很多个节点都有自己的QP 5。所以我们自然可以想到,还需要找到让每个节点都有一个独立的标识。在传统TCP-IP协议栈中原创 2021-01-25 15:58:33 · 1683 阅读 · 0 评论 -
【RDMA】5. RDMA基本服务类型
我们在“3. RDMA基本元素”一文中提到过,RDMA的基本通信单元是QP,而基于QP的通信模型有很多种,我们在RDMA领域称其为“服务类型”。IB协议中通过“可靠”和“连接”两个维度来描述一种服务类型。可靠通信中的可靠性指的是通过一些机制保证发出去的数据包都能够被正常接收。IB协议中是这样描述可靠服务的:Reliable Serviceprovides a guarantee that messages are delivered from a requester to a responde.原创 2021-01-21 14:27:13 · 2798 阅读 · 1 评论 -
【RDMA】3. RDMA基本元素和编程基础
RDMA技术中经常使用缩略语,很容易让刚接触的人一头雾水,本篇的目的是讲解RDMA中最基本的元素及其含义。我将常见的缩略语对照表写在前面,阅读的时候如果忘记了可以翻到前面查阅。WQWork Queue简称WQ,是RDMA技术中最重要的概念之一。WQ是一个储存工作请求的队列,为了讲清楚WQ是什么,我们先介绍这个队列中的元素WQE(Work Queue Element,工作队列元素)。WQEWQE可以认为是一种“任务说明”,这个工作请求是软件下发给硬件的,这份说明中包含了软件所希望硬件去原创 2021-01-21 14:27:00 · 4293 阅读 · 0 评论 -
【RDMA】2. 比较基于Socket与RDMA的通信
本篇的目的是通过对比一次典型的Socket和RDMA通信,直观的展示RDMA技术相比传统以太网的优势,尽量不涉及协议和软件实现细节。假设本端的某个应用想把自己内存中的数据复制到对端某个应用可以访问的内存中(或者通俗的讲,本端要给对端发送数据),我们来看一下Socket和RDMA的SEND-RECV语义都做了哪些操作。Socket在描述通信过程时的软硬件关系时,我们通常将模型划分为用户层Userspace,内核Kernel以及硬件Hardware。Userspace和Kernel实际上使用的是同一原创 2021-01-21 14:26:48 · 2848 阅读 · 1 评论 -
【RDMA】11. RDMA之Shared Receive Queue
我们曾在【3. 基本元素】中简单介绍了SRQ的概念,本文将带大家了解更多关于SRQ的细节。基本概念什么是SRQ全称为Shared Receive Queue,直译为共享接收队列。我们知道,RDMA通信的基本单位是QP,每个QP都由一个发送队列SQ和接收队列RQ组成。SRQ是IB协议为了给接收端节省资源而设计的。不同于每个QP都拥有一个独立的RQ,我们可以把一个RQ共享给所有关联的QP使用,这个公用的RQ就称为SRQ。当与其关联的QP想要下发接收WQE时,都填写到这个SRQ中。然后每当硬件接收原创 2021-01-25 16:36:07 · 2140 阅读 · 2 评论 -
【RDMA】6. RDMA之Memory Region
原文:https://zhuanlan.zhihu.com/p/156975042我们假设一种场景,同时也顺便温习一下RDMA WRITE操作的流程:如下图所示,A节点想要通过IB协议向B节点的内存中写入一段数据,上层应用给本节点的RDMA网卡下发了一个WQE,WQE中包含了源内存地址、目的内存地址、数据长度和秘钥等信息,然后硬件会从内存中取出数据,组包发送到对端网卡。B节点的网卡收到数据后,解析到其中的目的内存地址,把数据写入到本节点的内存中。那么问题来了,APP提供的地址都是虚拟地址(V原创 2021-01-21 14:25:55 · 3360 阅读 · 1 评论 -
【Linux】centOS 错误记录|无法启动网络Failed to start LSB: Bring up/down networking
问题centOS 7下执行service network restart命令后出现下面的错误:[root@rdma59 ~]# service network restartRestarting network (via systemctl): Job for network.service failed because the control process exited with error code. See "systemctl status network.service" and原创 2021-09-13 15:23:25 · 7834 阅读 · 2 评论 -
【ceph】ceph的序列化(ENCODE/DECODE)和升级协议兼容性考虑
序列化 (ENCODE/DECODE)当一个结构通过网络发送或写入磁盘时,它被编码为一串字节。可序列化结构具encode和decode方法,将结构体序列化后存入bufferlist和从bufferlist读出字节串反序列出结构体。向结构中添加字段在Ceph代码中有很多例子,这里有一个例子。class AcmeClass{ int member1; std::string member2; void encode(bufferlist &bl)..原创 2021-08-06 14:50:09 · 1257 阅读 · 0 评论 -
【网络】close与shutdown
目录区别详细问题和陷阱示例代码区别shutdown() 用来关闭连接,而不是套接字,不管调用多少次 shutdown(),套接字依然存在,直到调用 close() / closesocket() 将套接字从内存清除。 调用 close()/closesocket() 将丢失输出缓冲区中的数据,而调用 shutdown() 不会。 close终止了数据传送的两个方向,shutdown 可以选择终止哪个方向的数据传送。首先看一个例子,如下图所示: 客户端发送ABCD...原创 2021-07-29 15:36:15 · 1287 阅读 · 0 评论 -
【网络】如何扫描局域网内所有设备的ip和mac地址
原文:https://www.jianshu.com/p/b2e68a5b88f2cmd 输入:for /L %i IN (1,1,254) DO ping -w 2 -n 1 192.168.0.%i#上面的命令表示搜索192.168.0.1 到192.168.0.254或:arp -a原创 2021-07-26 14:49:37 · 29444 阅读 · 0 评论 -
【DPDK】DPDK技术介绍--研读
DPDK是INTEL公司开发的一款高性能的网络驱动组件,旨在为数据面应用程序提供一个简单方便的,完整的,快速的数据包处理解决方案,主要技术有用户态、轮询取代中断、零拷贝、网卡RSS、访存DirectIO等。一、主要特点1、UIO(Linux Userspace I/O)提供应用空间下驱动程序的支持,也就是说网卡驱动是运行在用户空间的,减下了报文在用户空间和应用空间的多次拷贝。如图:DPDK绕过了Linux内核的网络驱动模块,直接从网络硬件到达用户空间,不需要进行频繁的内存拷贝和系统调用。根据官方转载 2021-07-16 17:43:05 · 1400 阅读 · 0 评论 -
【DPDK】Linux UIO技术
简介UIO(Userspace I/O)是运行在用户空间的I/O技术,Linux系统中一般的驱动设备都是运行在内核空间,而在用户空间用应用程序调用即可,而UIO则是将驱动的很少一部分运行在内核空间,而在用户空间实现驱动的绝大多数功能!使用UIO可以避免设备的驱动程序需要随着内核的更新而更新的问题。原理图:UIO技术下,驱动在用户空间和内核空间的分布(小部分在内核空间、大部分在用户态空间)在UIO中,使用read/mmap在user space存取设备对应的内存区域;但是UIO还是原创 2021-07-16 17:40:18 · 1942 阅读 · 0 评论