
Network
文章平均质量分 80
天马行空_xaut
这个作者很懒,什么都没留下…
展开
-
如何学习 Linux 内核网络协议栈
部门来了新的小伙伴,领导说要让我做一个关于Linux内核网络协议栈的Presentation,于是有了此文。为什么是文字而不是PPT呢?因为我真的不喜欢PPT!转载 2022-07-29 19:34:06 · 399 阅读 · 0 评论 -
通俗理解IP路由
日常工作环境中,我们习惯于使用ping去测试网络的连通性。如果ping不通,我们往往会去怀疑是不是路由配置错了。转载 2022-07-29 19:29:57 · 2362 阅读 · 0 评论 -
一个 TCP 接收缓冲区问题的解析
在Linux内核中,有两条路径处理收到的报文快速路径(fastpath)和慢速路径(slowpath)。正如其名,快速路径处理。转载 2022-07-29 19:14:02 · 2137 阅读 · 0 评论 -
一个 TCP 发送缓冲区问题的解析
在实验环境中,Phase1阶段创建的sk_buff,其skb->len=1024,skb->truesize=4372(4096+256,这个值的详细来源请看sk_stream_alloc_skb)这样看上去,这个sk_buff也容纳不下14480啊。再继续看内核的实现,再skb_copy_to_page_nocache()拷贝之前,会进行sk_wmem_schedule()...转载 2022-07-29 19:11:18 · 2018 阅读 · 0 评论 -
切换Mellanox网卡工作模式
在网上查了很久,最简单的方式:1.安装工具包:2.查询当前设备PCIE信息:可以看到网卡的两个port都是Infiniband模式3.查询设备配置信息:可以看到配置信息中是IB(1):4.设置工作模式:5.确认修改:可以看到port1 已经修改为ETH模式:6.重启PC后可以看到网卡信息:......原创 2022-07-06 09:32:52 · 5624 阅读 · 1 评论 -
Windows下安装X710网卡驱动
需要在windows下使用Intel 的X710的网卡,网卡有4个port,每个port的速率为100Gbps,接口类型为光纤接口,尝试了很多种安装驱动的方式都失败,可能因为板载网卡也是intel的,所以每次安装后都显示安装了板载网卡的驱动,但是X710的驱动一直没有安装成功,失败的方式有:1.首选肯定是在设备管理器中选择自动安装驱动,结果windows找不到对应的设备驱动。2.在官网下载对应的网卡驱动安装包:Wired_driver_27.2_x64.zip,大小有37MB。3.因为自己没有安原创 2022-05-20 14:03:40 · 3974 阅读 · 1 评论 -
Linux 虚拟化网络技术 — 虚拟网络协议栈
前言本文通过 OpenStack Neutron L3 Agent 实现的 Linux 虚拟路由器来描述 Linux 的虚拟网络协议栈。Neutron L3 agent 概述Neutron L3 agent 服务,运行在 OpenStack 的网络节点上,实现了 3 层路由和 NAT 功能。利用 Linux Network Namespaces,可以创建多个具有重合 IP 地址段的虚拟路由器,每个虚拟路由器都具有自己的 namespace。L3 agent的配置Step 1. 在网转载 2022-05-13 16:48:04 · 414 阅读 · 0 评论 -
Linux 虚拟化网络技术 — 虚拟网线(Veth-pair)
虚拟网线(Veth-pair)Veth-pair 不是一个设备,而是一对设备,作为虚拟网线用于连接两个虚拟网络设备。veth pair 是根据数据链路层的 MAC 地址对网络数据包进行转发的过程来实现的,本质是反转通讯数据的方向,需要发送的数据会被转换成需要收到的数据重新送入内核网络层进行处理,从而间接的完成数据的注入。veth pair 在虚拟网络设备中是作为 “网线” 的存在,将 tap 之间,tap 与 Bridge 之间连接起来。veth pair 通常还与 Network namespace转载 2022-05-13 16:37:17 · 2954 阅读 · 0 评论 -
SR-IOV 网卡虚拟化技术
目录目录目录SR-IOV在 KVM 中启用 SR-IOV 网卡手动挂载 VF 到虚拟机指令方式挂载SR-IOV 的数据包分发机制SR-IOVSR-IOV(Single-Root I/O Virtualization,单根 I/O 虚拟化)是 PCI-SIG 推出的一项标准,定义了一种 PCIe 设备虚拟化技术的标准机制,是 “虚拟通道” 的一种技术实现,用于将一个 PCIe 设备虚拟成多个 PCIe 设备,每个虚拟 PCIe 设备都具有自己的 PCIe 配置空间..转载 2022-05-13 16:30:52 · 2743 阅读 · 0 评论 -
启用 SR-IOV 解决 Neutron 网络 I/O 性能瓶颈
目录:目录目录:前文列表前言Neutron 的网络实现模型基于虚拟网络设备的虚拟机流量走向基于虚拟网络设备的性能瓶颈在 Neutron 中引入 SR-IOV 技术基于 SR-IOV 技术的虚拟机流量走向编辑Neutron 配置启用 SR-IOVSR-IOV 与 NUMA 亲和SR-IOV 与 VLAN tagSR-IOV 与安全组前文列表《SR-IOV 网卡虚拟化技术》前言该文章是基于「计算机系统应用」月刊文章《SR-I...转载 2022-05-13 16:07:10 · 2064 阅读 · 0 评论 -
Linux Kernel TCP/IP Stack — L2 Layer — Traffic Control(流量控制)的实现原理
基本概念QoS、Bandwidth 和 Traffic ControlQoS、带宽控制、流量控制的本质都是在网络设备(e.g. 主机、交换机、路由器等)的出口处使用一系列队列,对数据包进行排序以控制它们的发送顺序,并通过一系列策略控制收到的和发送的数据包是否应该被丢弃,同时还要对数据包的发送速率进行控制。三者的区别在于关注的点和应用场景不同:QoS:关注服务保障要求。带宽控制:关注每秒的流量速率。流量控制:关注流量的大小、形态等。队列队列是一种用于组织未能立即开始的任务或数转载 2022-05-13 15:17:26 · 609 阅读 · 0 评论 -
Linux Kernel TCP/IP Stack — L2 Layer — Linux Bridge(虚拟网桥)的基本操作
目录Linux bridge 的基本操作将 veth pair 连上 Bridge为 Bridge 配置 IP 地址将物理网卡接口设备挂靠 BridgeLinux Bridge 与虚拟机Linux Bridge 与容器Linux Bridge 的 MAC 地址行为Linux Bridge 常用指令Linux bridge 的基本操作创建 Bridge$ brctl addbr br0# or$ ip link add name br0 type br..转载 2022-05-13 11:32:53 · 1512 阅读 · 0 评论 -
Linux Kernel TCP/IP Stack — L2 Layer — Traffic Control(流量控制)
tc CLI - Linux 流量控制工具TC(Traffic Control)是 Linux 操作系统的流量控制器,它利用 “队列规定” 建立处理数据包的队列,并定义队列中的数据包被发送的方式, 从而实现对流量的控制。示例:限制网卡 eth0 的速率为 10Mbpstc qdisc add dev eth0 root tbf rate 10mbit burst 10kb lat 400.0mstc -s qdisc ls dev eth0TC 的基本原理数据包从 I.转载 2022-05-13 14:35:33 · 484 阅读 · 0 评论 -
Linux Kernel TCP/IP Stack — L3 Layer — 路由器子系统
目录文章目录目录Linux 作为一个路由器路由表项的类型route 指令ip route 指令添加默认路由添加静态路由删除静态路由操作示例Linux Kernel 路由子系统路由表发送数据时进行路由选择(选路)接收数据时进行路由选择(选路)路由查找Linux 作为一个路由器Linux 作为一个路由器只需要打开 ipv4.forward 特性即可。$ vim /etc/sysctl.conf...net.ipv4.ip_forward=1$ sysctl转载 2022-05-12 18:08:21 · 631 阅读 · 0 评论 -
云网络丢包故障定位
引言本期分享一个比较常见的⽹络问题—丢包。例如我们去 Ping ⼀个⽹站,如果能 Ping 通,且⽹站返回信息全⾯,则说明与⽹站服务器的通信是畅通的,如果 Ping 不通,或者⽹站返回的信息不全等,则很可能是数据被丢包了,类似情况想必⼤家都不陌⽣。针对⽹络丢包,本⽂提供⼀些常见的丢包故障定位⽅法,希望能够帮助⼤家对⽹络丢包有更多的认识,遇到丢包莫要慌,且跟着⼀起来涨姿(知)势(识)……什么是丢包数据在 Internet 上是以数据包为单位传输的,单位为字节,数据在⽹络上传输,受⽹络设备,⽹络质量转载 2022-04-21 11:45:03 · 3790 阅读 · 0 评论 -
网卡VXLAN的offload技术介绍
1.1 offload技术概述首先要从术语offload说起,offload指的是将一个本来有软件实现的功能放到硬件上来实现,这样就可以将本来在操作系统上进行的一些数据包处理(如分片、重组等)放到网卡硬件上去做,降低系统CPU消耗的同时,提高处理性能。在neutron中,基于VXLAN的网络虚拟技术给服务器的CPU带来了额外的负担,比如封包、解包和校验等,VXLAN的封包和解包都是由OVS来完成的,使用VXLAN offload技术后,VXLAN的封包和解包都交给网卡或者硬件交换机来做了,那么网卡的VX转载 2022-04-08 17:28:45 · 2509 阅读 · 0 评论 -
网卡VXLAN的offload技术介绍
1.1 offload技术概述首先要从术语offload说起,offload指的是将一个本来有软件实现的功能放到硬件上来实现,这样就可以将本来在操作系统上进行的一些数据包处理(如分片、重组等)放到网卡硬件上去做,降低系统CPU消耗的同时,提高处理性能。在neutron中,基于VXLAN的网络虚拟技术给服务器的CPU带来了额外的负担,比如封包、解包和校验等,VXLAN的封包和解包都是由OVS来完成的,使用VXLAN offload技术后,VXLAN的封包和解包都交给网卡或者硬件交换机来做了,那么网卡的VX转载 2022-03-17 16:14:00 · 2844 阅读 · 0 评论 -
使用ipftrace跟踪内核网络调用流程
因为ipftrace2是根据skb包中的mark进行跟踪,所以使用iptables设定需要跟踪的目标IP的数据包的mark标志:root@# iptables -t raw -A OUTPUT -d 8.8.8.8 -j MARK --set-mark 0xdeadbeefroot@# iptables -t raw -A PREROUTING -s 8.8.8.8 -j MARK --set-mark 0xdeadbeef准备开始跟踪:root@######### ipft -m ..原创 2022-03-11 18:02:16 · 1007 阅读 · 0 评论 -
浅谈数据中心网络泛洪技术
导语泛洪在数据中心网络中是一种常见现象,很多时候泛洪转发都是良性的,对网络无影响。以太网标准对网络设备的要求也是允许流量有短时间的泛洪,尤其是框式设备是不可避免的,只要在极短的时间内就结束泛洪,都是一种正常的网络现象。搞网络技术的人对泛洪这个概念应该不陌生,本质上是网络设备将从某个接口上收到的数据从除本接口之外的设备所有接口发送出去,之所以发生这样的情况是因为数据报文在网络设备转发表中无法找到与数据包目标地址一致的表项,此时就将数据包从所有接口发送出去,以期找到目标主机来接收数据包,可以理解为二层转原创 2022-03-11 11:03:26 · 4612 阅读 · 0 评论 -
一文彻底搞懂 TCP三次握手、四次挥手过程及原理
目录TCP 协议简述TCP包首部TCP 三次握手建立连接为什么需要三次握手?TCP 四次挥手关闭连接为什么连接的时候是三次握手,关闭的时候却是四次握手?为什么要等待2MSL?TCP 协议简述TCP 提供面向有连接的通信传输,面向有连接是指在传送数据之前必须先建立连接,数据传送完成后要释放连接。无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过三次握手进行初始化的。同时由于TCP协议是一种转载 2022-02-11 16:01:18 · 612 阅读 · 0 评论 -
Linux网桥实现分析
1.前言本文结合网络上关于Linux网桥的说明、Linux平台的代码阅读记录,整理的一篇总结性文档。由于时间仓促,分析可能存在不足之外,望大家见谅和指正。对于接触过Linux网络的童鞋,对网桥功能应该不陌生。概括来说,网桥实现最重要的两点:1.MAC学习:学习MAC地址,起初,网桥是没有任何地址与端口的对应关系的,它发送数据,还是得想HUB一样,但是每发送一个数据,它都会关心数据包的来源MAC是从自己的哪个端口来的,由于学习,建立地址-端口的对照表(CAM表)。2.报文转发:...转载 2021-11-17 10:08:47 · 2614 阅读 · 0 评论 -
Netfilter iptables 实现分析
1.前言Netfilter/iptables是Linux的第三代防火墙,在此之前有Ipfwadm和Ip chains两种防火墙。在网络数据包处理过程中,按照数据包的来源和去向,可以分为三类:流入的(IN)、流经的(FORWARD)和流出的(OUT),其中流入和流经的报文需要经过路由才能区分,而流经和流出的报文则需要经过投递,此外,流经的报文还有一个FORWARD的过程。Netfilter/iptables正是通过将一系列调用接口,嵌入到内核IP协议栈的报文处理的路径上来完成对数据包的过滤,修改...转载 2021-11-17 10:06:46 · 2263 阅读 · 0 评论 -
iptables的问题和改进方案
转自:DPDK and XDP - 云+社区 - 腾讯云iptables是一个配置Linux内核防火墙的命令行工具,它基于内核的netfilter机制。新版本的内核(3.13+)也提供了nftables,用于取代ip...https://cloud.tencent.com/developer/article/1484793iptables规则逐渐增加,遍历iptables效率变得很低,一个表现就是kube-proxy,他是Kubernetes的一个组件,容器要使用iptables和-j DNAT规则为服转载 2021-11-16 15:52:17 · 1467 阅读 · 0 评论 -
ethtool原理介绍和解决网卡丢包排查思路
前言之前记录过处理因为LVS网卡流量负载过高导致软中断发生丢包的问题,RPS和RFS网卡多队列性能调优实践,对一般人来说压力不大的情况下其实碰见的概率并不高。这次想分享的话题是比较常见服务器网卡丢包现象排查思路,如果你是想了解点对点的丢包解决思路涉及面可能就比较广,不妨先参考之前的文章如何使用MTR诊断网络问题,对于Linux常用的网卡丢包分析工具自然是ethtool。更新历史2020年06月22日 - 初稿阅读原文 - https://wsgzao.github.io/post/ethto转载 2021-11-10 15:17:20 · 2339 阅读 · 3 评论 -
查看qemu可以模拟的网卡设备列表
qemu-system-x86_64 -nic model=helpSupported NIC models:e1000e1000-82544gce1000-82545eme1000ei82550i82551i82557ai82557bi82557ci82558ai82558bi82559ai82559bi82559ci82559eri82562i82801ne2k_pcipcnetpvrdmarockerrtl8139tulipvirtio-net-pc原创 2021-10-14 19:28:23 · 1230 阅读 · 0 评论 -
Linux服务器丢包故障的解决思路及引申的TCP/IP协议栈理论
我们使用Linux作为服务器操作系统时,为了达到高并发处理能力,充分利用机器性能,经常会进行一些内核参数的调整优化,但不合理的调整常常也会引起意想不到的其他问题,本文就一次Linux服务器丢包故障的处理过程,结合Linux内核参数说明和TCP/IP协议栈相关的理论,介绍一些常见的丢包故障定位方法和解决思路。问题现象本次故障的反馈现象是:从办公网访问公网服务器不稳定,服务器某些端口访问经常超时,但Ping测试显示客户端与服务器的链路始终是稳定低延迟的。通过在服务器端抓包,发现还有几个特点:从办转载 2021-09-24 17:01:39 · 811 阅读 · 0 评论 -
极客时间-左耳听风-程序员攻略-Linux系统、内存和网络
Linux 系统相关Red Hat Enterprise Linux 文档。 Linux Insides,GitHub 上的一个开源电子书,其中讲述了 Linux 内核是怎样启动、初始化以及进行管理的。 LWN’s kernel page,上面有很多非常不错的文章来解释 Linux 内核的一些东西。 Learn Linux Kernel from Android Perspective,从 Android 的角度来学习 Linux 内核,这个站点上的 Blog 相对于前面的比较简单易读一些...转载 2021-09-24 15:05:06 · 461 阅读 · 0 评论 -
Network Performance Monitoring And Tuning In Linux
There’s nothing more annoying than a slow network connection. If you are a victim of poorly performing network devices, this article may help you to at least alleviate, if not solve, your problem.The improvement in the performance of networking devic...转载 2021-09-24 14:30:36 · 449 阅读 · 0 评论 -
Linux 网络协议栈收消息过程-Ring Buffer
想看能不能完整梳理一下收消息过程。从 NIC 收数据开始,到触发软中断,交付数据包到 IP 层再经由路由机制到 TCP 层,最终交付用户进程。会尽力介绍收消息过程中的各种配置信息,以及各种监控数据。知道了收消息的完整过程,了解了各种配置,明白了各种监控数据后才有可能在今后的工作中做优化配置。所有参考内容会列在这个系列最后一篇文章中。Ring Buffer 相关的收消息过程大致如下:图片来自参考1,对 raise softirq 的函数名做了修改,改为了 napi_scheduleNIC转载 2021-09-22 10:09:38 · 1102 阅读 · 0 评论 -
多播(组播)原理分析
为什么要使用多播: 网卡从网络上接收到目标物理地址对应的所有bit位都为1的数据报时,会收到这条消息并将其上传给驱动程序,网卡的这种工作模式称为广播模式,网卡的缺省工作模式包含直接模式和广播模式。利用这一特性,UDP(用户数据报协议)还提供了向多个目标地址发送广播数据包的能力。广播数据即数据从一个工作站上发出,只要将数据包的目标物理地址对应的所有bit位都设为1,局域网内的所有工作站网卡都会收到这条消息并将其上传给驱动程序。这一特征适用于无连接协议,因为局域网(LAN)上的所有机器都可...转载 2021-09-17 11:06:43 · 4915 阅读 · 0 评论 -
理解 Linux 网络栈(1):Linux 网络协议栈简单总结
刘世民(Sammy Liu)以及可点击的本博客地址超级链接SammyLiu - 博客园本系列文章总结 Linux 网络栈,包括:(1)Linux 网络协议栈总结(2)非虚拟化Linux环境中的网络分段卸载技术 GSO/TSO/UFO/LRO/GRO(3)QEMU/KVM + VxLAN 环境下的 Segmentation Offloading 技术(发送端)(4)QEMU/KVM + VxLAN 环境下的 Segmentation Offloading 技术(接收端)1....转载 2021-09-15 10:25:12 · 1305 阅读 · 0 评论 -
一致代码段与非一致代码段
一致位:在描述符属性中TYPE(包含4个二进制位)字段的第2位。当 S=1 时TYPE中的4个二进制位情况:3 2 1 0执行位 一致位 读写位 访问位执行位:置1时表示可执行,置0时表示不可执行;一致位:置1时表示一致码段,置0时表示非一致码段;读写位:置1时表示可读可写,置0时表示只读;访问位:置1时表示已访问,置0时表示未访问。所以一致代码段和非一致代码段的意思就是指这个一致位是否置1,置1就是一致代码段,置0就为非一致代码段。...转载 2021-07-02 17:37:49 · 1350 阅读 · 2 评论 -
TCP、UDP以及TCP滑窗,它们的区别
我们已经讲解了物理层、连接层和网络层。最开始的连接层协议种类繁多(Ethernet、Wifi、ARP等等)。到了网络层,我们只剩下一个IP协议(IPv4和IPv6是替代关系)。进入到传输层(transport layer),协议的种类又开始繁多起来(比如TCP、UDP、SCTP等)。这就好像下面的大树,根部(连接层)分叉很多,然后统一到一个树干(网络层),到了树冠(传输层)部分又开始开始分叉,而每个树枝上长出更多的树叶(应用层)。我们在网络层已经看到,通过树干的统一,我们实现了一个覆盖全球的互联网络(Int转载 2021-09-13 15:36:58 · 519 阅读 · 0 评论 -
图解MTU和MSS
一个网络数据包包括哪些有了解吗?网络数据包一般包括头部和数据部分,在TCP协议中,要发送的数据经过TCP模块添加TCP头部;然后IP模块添加IP头部和MAC头部;然后在最前面加上报头/起始帧分界符以及末尾假如FCS(帧校验序列),这样就构成了一个完成的数据包。UDP协议中就是UDP头部,各个头部都有其固定的格式,TCP头部最小20个字节,UDP头部最小8个字节。TCP协议中的数据包分片与重组功能有了解吗?当TCP传输的数据包比较大时,在接收方会进行分片,在接收方进行数据包的重组。发.转载 2021-09-10 10:06:49 · 565 阅读 · 0 评论 -
OSI七层模型与TCP/IP五层模型
一、OSI参考模型 今天我们先学习一下以太网最基本也是重要的知识——OSI参考模型。1、OSI的来源 OSI(Open System Interconnect),即开放式系统互联。 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互连模型。 ISO为了更好的使网络应用更为普及,推出了OSI参考模型。其含义就是推荐所有公司使用这个规范来控制网络。这样所有公司都有相同的规范,就能互联了。 2、OSI...转载 2021-09-09 10:56:00 · 679 阅读 · 0 评论 -
TCP/IP数据包结构详解
一般来说,网络编程我们只需要调用一些封装好的函数或者组件就能完成大部分的工作,但是一些特殊的情况下,就需要深入的理解网络数据包的结构,以及协议分析。如:网络监控,故障排查等……IP包是不安全的,但是它是互联网的基础,在各方面都有广泛的应用。由IP协议衍生的协议族有10数种(据我所知),以后还会出现更多的基于IP的协议…先从实际出发吧!一般我们在谈上网速度的时候,专业上用带宽来描述,其实无论说网速或者带宽都是不准确的,呵呵。比如:1兆,512K……有些在学校的学生,也许会有疑问,明明我的业务是1M转载 2021-09-08 11:06:35 · 827 阅读 · 0 评论 -
网络通信协议
一般地,关注于逻辑数据关系的协议通常被称为上层协议,而关注于物理数据流的协议通常被称为低层协议。IEEE802就是一套用来管理物理数据流在局域网中传输的标准,包括在局域网中传输物理数据的802.3以太网标准。还有一些用来管理物理数据流在使用串行介质的广域网中传输的标准,如帧中继FR(FrameRelay),高级数据链路控制HDLC(High-LevelDataLinkControl),异步传输模式ATM(AsynchronousTransferMode)。分层模型0OSI...转载 2021-09-08 11:04:38 · 1045 阅读 · 0 评论 -
网络数据包详解
通过wireshark抓取在不同链路上的数据包,分析数据在网上传输过程。首先要有下面基础知识。1,网络数据封装过程,数据包发送的时候从上往下封装的,解封装反过来。从下往上看最下面是以太网帧,位于osi参考模型的数据链路层。该层帧格式有以太网帧(常用),802.2/802.3帧和ppp帧。对应网络层,主要协议有ip,ICMP,IGMP。如下面的ip数据包头对于传输层,主要的协议就是TCP(6)和UDP(17)。第一个包(udp包)...转载 2021-09-08 10:58:01 · 8636 阅读 · 0 评论 -
网络通信socket详解
socket学习网站:http://c.biancheng.net/view/2124.html一.什么是socketsocket 的原意是“插座”,在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。socket 的典型应用就是 Web 服务器和浏览器:浏览器获取用户输入的 URL,向服务器发起请求,服务器分析接收到的 URL,将对应的网页内容返回给浏览..转载 2021-09-02 11:07:32 · 8663 阅读 · 0 评论 -
简单理解socket(AF_INET&SOCK_STREAM,SOCK_DGRAM)
套接字在任何类型的通信开始之前,网络应用程序都必须创建套接字。套接字最初是为同一主机上的应用程序所创建,使得主机上运行的一个程序(又名一个进程)与另一个运行的程序进行通信。这就是所谓的进程间通信(Inter Process Communication,IPC)有两种类型的套接字:基于文件的和面向网络的。基于文件的家族名:AF_UNIX(又名AF_LOCAL,在POSIX1.g标准中指定),它代表地址家族(addressfamily):UNIX。其他比较旧的系统可能会将地址家族表示成域(do转载 2021-09-02 10:18:19 · 1300 阅读 · 0 评论