网络
文章平均质量分 86
香烟头
这个作者很懒,什么都没留下…
展开
-
Linux丢包故障的解决与思路
前言 本文为大部分内容是转载:原文地址,和之前一样,在原文的基础上进行了一些格式的调整,包括一些错别字的修正,以及进行了一些博文链接的插入,以便于读者或者我自己更好的理解。 我们使用Linux作为服务器操作系统时,为了达到高并发处理能力,充分利用机器性能,经常会进行一些内核参数的调整优化,但不合理的调整常常也会引起意想不到的其他问题,本文就一次Linux服务器丢包故障的处理过程,结合Linux内核参数说明和TCP/IP协议栈相关的理论,介绍一些常见的丢包故障定位方法和解决思路。 在开始之前转载 2022-04-24 15:12:11 · 10096 阅读 · 0 评论 -
Linux收包
网卡到内存网卡需要有驱动才能工作,驱动是加载到内核中的模块,负责衔接网卡和内核的网络模块,驱动在加载的时候将自己注册进网络模块,当相应的网卡收到数据包时,网络模块会调用相应的驱动程序处理数据。下图展示了数据包(packet)如何进入内存,并被内核的网络模块开始处理: +-----+ | | Memroy+--------+ 1 | |转载 2022-03-21 11:44:52 · 184 阅读 · 0 评论 -
Linux系统下查看网卡相关数据
1、查看网口基本信息$ ethtool eth02、点亮网卡灯$ ethtool -p eth0 10 # 亮 10 秒3、查询网口驱动相关信息$ ethtool -i eth0 driver: igb version: 5.3.0-k firmware-version: 1.67, 0x80000d38, 18.3.6 bus-info: 0000:01:00.0 supports-statistics: yes supp转载 2021-09-24 16:41:19 · 7093 阅读 · 0 评论 -
解决网卡丢包问题,以及丢包问题解决后系统网络还是慢的问题
背景线上的K8S集群有一台节点,装了Istio的遥测组件,这个组件,之前在哪个节点哪个节点就出问题。出现的问题主要体现在几个点:①:服务器间歇性 NodeNotReady②:服务器丢包极为严重③:服务器网络非常慢,以至于在服务器上执行 curl youku.com 都要响应很久。Istio的遥测组件,是一个服务,由Istio的Ingress以及SideCar发送数据给遥测服务,而且发送的是UDP的包,量非常非常大,能达到 500Mbps。UDP包量大应该是导致了网卡丢包以及网络缓慢的主要问题转载 2021-09-24 16:38:24 · 3797 阅读 · 0 评论 -
使用 tc netem 模拟网络异常
在某些情况下,我们需要模拟网络很差的状态来测试软件能够正常工作,比如网络延迟、丢包、乱序、重复等。linux 系统强大的流量控制工具 tc 能很轻松地完成,tc 命令行是iproute2软件包中的软件,可以根据系统版本自行安装。流量控制是个系统而复杂的话题,tc 能做的事情很多,除了本文介绍的还有带宽控制、优先级控制等等,这些功能是通过类似的模块组件实现的,这篇文章介绍的功能主要是通过netem这个组件实现的。netem是Network Emulator的缩写,关于更多功能以及参数的详细解...转载 2020-12-01 10:16:29 · 1066 阅读 · 0 评论 -
Linux 丢包分析
最近工作中遇到某个服务器应用程序 UDP 丢包,在排查过程中查阅了很多资料,总结出来这篇文章,供更多人参考。在开始之前,我们先用一张图解释 linux 系统接收网络报文的过程。首先网络报文通过物理网线发送到网卡 网络驱动程序会把网络中的报文读出来放到 ring buffer 中,这个过程使用 DMA(Direct Memory Access),不需要 CPU 参与 内核从 ring buffer 中读取报文进行处理,执行 IP 和 TCP/UDP 层的逻辑,最后把报文放到应用程序的 socket转载 2020-12-01 10:08:13 · 2355 阅读 · 0 评论 -
linux tcp repair及tcp热迁移
概念比如docker等容器在不同的机器之间无缝迁移(可能由于调度,维护,交割等原因),是常见的需求场景但是又希望不能中断服务,因此各种虚拟机和容器的热迁移就得到很多关注。linux也在3.5版本中引入TCP_REPAIR socket选项来支持热迁移获取状态及还原当需要迁移的时候,为迁移的socket进入repair模式setsockopt设置TCP_PRE转载 2017-06-28 12:16:39 · 2462 阅读 · 0 评论 -
关于“TCP segment of a reassembled PDU”
为什么大家看到这个以后总是会往MSS,TSO上联系呢?也许第一个解释这个的人是个高手,而且以MSS/MTU/TSO的观点解释了这个问题,还有一种可能就是TSO等技术让人觉得太牛逼,毕竟是底层硬件机制吧,抓包机制又是作用于网卡层面的,所以很自然会觉得TSO会有关联。 事实上,这个跟TSO没有关系!跟MSS有一定的关系但不是全部因果关系,在阐述“TCP segment of a re转载 2017-02-23 14:02:12 · 1790 阅读 · 0 评论 -
TCP链接的状态
1. TCP连接的状态 首先介绍一下TCP连接建立与关闭过程中的状态。TCP连接过程是状态的转换,促使状态发生转换的因素包括用户调用、特定数据包以及超时等,具体状态如下所示:CLOSED:初始状态,表示没有任何连接。LISTEN:Server端的某个Socket正在监听来自远方的TCP端口的连接请求。SYN_SENT:发送连接请求后等待确认信息。当客户端Socket进行Conne原创 2017-02-20 12:36:45 · 662 阅读 · 0 评论 -
从UDP的”连接性”说起–告知你不为人知的UDP
很早就计划写篇关于UDP的文章,尽管UDP协议远没TCP协议那么庞大、复杂,但是,要想将UDP描述清楚,用好UDP却要比TCP难不少,于是文章从下笔写,到最终写成,断断续续拖了好几个月。说起网络socket,大家自然会想到TCP,用的最多也是TCP,UDP在大家的印象中是作为TCP的补充而存在,是无连接、不可靠、无序、无流量控制的传输层协议。UDP的无连接性已经深入人心,协议上的无连接性指的是转载 2017-01-17 16:37:06 · 806 阅读 · 0 评论 -
udp socket connect一个不存在的地址后调用sendto返回111错误(connect refused)
udp socket connect一个不存在的地址后调用sendto返回111错误(connect refused)udp socket 可以调用connect,这个就不说,不了解的可以网上查资料,下面直接说返回111错误的原因udp socket 发送流程 sendto->sock_sendmsg->__sock_sendmsg->udp_sendmsg->ip_mak原创 2017-01-17 13:16:13 · 6744 阅读 · 0 评论 -
服务端不listen 客户端也能链接成功
服务端不listen,客户端能不能链接成功?先说结论:是可以的,但是有前提条件,而且概率非常小,前提条件是两边同时链接对方,五元组一样接下来说原因先说客户端connect的调用流程:tcp_connect->inet_hash_connect->__inet_hash_nolisten->inet_ehash_bucket,从上面的调用流程可以看到,对于调用connec原创 2017-01-11 10:29:38 · 821 阅读 · 0 评论 -
epoll accept 惊群
epoll最终和accept一样解决了新建连接的惊群问题 patch地址: https://github.com/torvalds/linux/commit/df0108c5da561c66c333bb46bfe3c1fc65905898patch比较简单, 下面摘录了一部分关键修改~~在加入listen socket的sk_sleep队列 的唤醒队列里使用了转载 2016-12-20 10:23:59 · 557 阅读 · 0 评论 -
udp 非阻塞socket报 EAGAIN
在进行udp压测的时候,有是会报EAGAIN,udp报EAGAIN,有点不可思议,就跟了一下内核源码,发现了两点:1:udp 确实有缓存,之前在网上看到他人的博客说,udp没有缓存,我看的是2.6.32.220版本的源码2:udp在缓存满,或者端口不够的情况下确实会返回EAGAIN贴源码之前,先描述一下流程,udp的发送流程 sock_sendmsg-->__sock_send原创 2016-12-30 15:09:25 · 4325 阅读 · 1 评论 -
多网卡收不到组播
工作中曾遇到一个很奇怪的问题,我奉命调查。事情是这样的,有一台双网卡的机器,上面装有Fedora8,运行一个程序。该程序分别在两个网口上都接收多播数据,程序运行是正常的。但是,后来升级系统到Fedora13,发现就出问题了:在运行几秒钟后,第2个网口上就接收不到多播数据了。 能不能收到多播,取决于交换机是不是往这个网口上转发多播数据。程序在起动的时候,会发一个IGMP的Add Mem转载 2016-02-27 11:49:28 · 12972 阅读 · 2 评论 -
反向过滤--rp_filter
一、原理先介绍个非对称路由的概念参考《Understanding Linux Network Internals》三十章,30.2. Essential Elements of RoutingSymmetric routes and asymmetric routesUsually, the route taken from Host A to Host B is the sa转载 2016-08-22 15:34:02 · 5847 阅读 · 0 评论 -
linux下ixgbe网卡应用点滴
本文转自http://blog.csdn.net/vah101/article/details/400779371. 兼容光模块ixgbe光纤网卡的驱动在默认情况下不支持第三方兼容光模块,会导致网卡驱动加载失败,表现为,执行lspci |grep 82599能看到网卡在pci设备中06:00.0 Ethernet controller: Intel Corporation转载 2016-09-08 18:00:01 · 2542 阅读 · 1 评论 -
二层(链路层)数据包发送过程分析
说明:本系列博文所涉及内核版本为2.6.32当上层准备好一个包之后,交给链路层,链路层数据包发送主要通过dev_queue_xmit函数处理。数据包的发送可分为两种,一种是正常的传输流程,即通过网卡驱动,另一种是通过软中断(见注3)。为了理解方便,首先看一下dev_queue_xmi函数的整体调用关系图。dev_queue_xmit本函数用来将带发送的skb加入一个dev的队列转载 2016-10-21 13:46:20 · 4232 阅读 · 0 评论