
简单聊聊在 Linux 内核中的网络质量监控
这可能是2021年最后一篇文章(农历年),也可能是2022年第一篇文章,不过这完全取决于我什么时候写完。这次来简单聊聊 Linux 中的网络监控开篇这篇文章,既是一篇水文,又不是一篇水文。不过还是新手向的一个文章。这篇文章实际上在我的草稿箱里呆了一年多的时间了,灵感最初源自我在阿里的一些工作(某种意义上算是国内领先的(但也是比较小众的工作(XD 随着技术的发展,大家对于服务的稳定性要求越来越高,而保证服务质量的前提就是有着合格的监控的覆盖面(阿里对于服务稳定性的要求叫做 "1-5-10" 即,一分钟发现,五分钟处理,十分钟自愈,而这样一个对于稳定性的要求没有足够的覆盖面的监控的话,那么一切等于圈圈)。而在这其中,网络质量的监控是重中之重 在讨论网络质量的监控之前,我们需要来明确网络质量这个定义的覆盖范围。网络链路上的异常情况服务端网络的处理能力在明确这样的覆盖范围后,我们可以来思考什么样的指标代表着网络质量的降低。(注:本文主要分析 TCP 及 over TCP 协议的监控,后续不再赘述)毫无疑问,如果我们存在丢包的情况发送/接收队列阻塞超时那么我们可以再来看下具体细节如 RFC...

简单聊聊在 Linux 内核中的网络质量监控
这可能是2021年最后一篇文章(农历年),也可能是2022年第一篇文章,不过这完全取决于我什么时候写完。这次来简单聊聊 Linux 中的网络监控开篇这篇文章,既是一篇水文,又不是一篇水文。不过还是新手向的一个文章。这篇文章实际上在我的草稿箱里呆了一年多的时间了,灵感最初源自我在阿里的一些工作(某种意义上算是国内领先的(但也是比较小众的工作(XD 随着技术的发展,大家对于服务的稳定性要求越来越高,而保证服务质量的前提就是有着合格的监控的覆盖面(阿里对于服务稳定性的要求叫做 "1-5-10" 即,一分钟发现,五分钟处理,十分钟自愈,而这样一个对于稳定性的要求没有足够的覆盖面的监控的话,那么一切等于圈圈)。而在这其中,网络质量的监控是重中之重 在讨论网络质量的监控之前,我们需要来明确网络质量这个定义的覆盖范围。网络链路上的异常情况服务端网络的处理能力在明确这样的覆盖范围后,我们可以来思考什么样的指标代表着网络质量的降低。(注:本文主要分析 TCP 及 over TCP 协议的监控,后续不再赘述)毫无疑问,如果我们存在丢包的情况发送/接收队列阻塞超时那么我们可以再来看下具体细节如 RFC...

聊聊 sk_buff 中一个冷门字段: nohdr
今天遇到一个很有意思的问题,“nohdr 字段到底有什么用”,在这里写个水文简单记录一下正文前情提要首先来说,不管介绍再冷门的字段,既然涉及到 SKBUFF ,那么就得先来对 sk_buff 做个简单的介绍 简而言之,sk_buff 是 Linux 网络子系统的核心数据结构,从链路层到我们最终对数据包的操作,背后都离不开 sk_buff sk_buff 要完全讲解基本就相当于把 Linux 网络系统完全讲解了,所以讲完是不可能讲完的,这辈子都不可能的! 简单聊几个关键,可能会帮助大家理解我们本文提到的冷门字段 nohdr 的关键字段吧 首先来讲,最重要的三个字段:data ,mac 和 nh ,分别代表着当前 sk_buff 的数据区的起始地址,L2 header 的起始地址,L3 Header 的起始地址。用一个图方便大家理解sk_buff 三剑客看了图的同学可能会有点明白了,实际上在内核里,也是一层一层的通过指针偏移,不断的添加新的 header 来处理网络请求。和我们直觉相符。可能有同学会问,我既然知道 L3 Header 的起始地址,IP 之类的 L3 协议的 heade...

聊聊 sk_buff 中一个冷门字段: nohdr
今天遇到一个很有意思的问题,“nohdr 字段到底有什么用”,在这里写个水文简单记录一下正文前情提要首先来说,不管介绍再冷门的字段,既然涉及到 SKBUFF ,那么就得先来对 sk_buff 做个简单的介绍 简而言之,sk_buff 是 Linux 网络子系统的核心数据结构,从链路层到我们最终对数据包的操作,背后都离不开 sk_buff sk_buff 要完全讲解基本就相当于把 Linux 网络系统完全讲解了,所以讲完是不可能讲完的,这辈子都不可能的! 简单聊几个关键,可能会帮助大家理解我们本文提到的冷门字段 nohdr 的关键字段吧 首先来讲,最重要的三个字段:data ,mac 和 nh ,分别代表着当前 sk_buff 的数据区的起始地址,L2 header 的起始地址,L3 Header 的起始地址。用一个图方便大家理解sk_buff 三剑客看了图的同学可能会有点明白了,实际上在内核里,也是一层一层的通过指针偏移,不断的添加新的 header 来处理网络请求。和我们直觉相符。可能有同学会问,我既然知道 L3 Header 的起始地址,IP 之类的 L3 协议的 heade...

简单聊聊容器中的 UID 中的一点小坑
今天不太舒服,在家请假了一天。突然想起最近因为一些小问题,看了下关于容器中 UID 的东西。所以简单来聊聊这方面的东西。算个新手向的文章开篇最近帮 FrostMing 把他的 tokei-pie-cooker 部署到我的 K8S 上做成一个 SaaS 服务。Frost 最开始给我了一个镜像地址。然后我啪的一下复制粘贴了一个 Deployment 出来apiVersion: apps/v1 kind: Deployment metadata: name: tokei-pie namespace: tokei-pie labels: app: tokei-pie spec: replicas: 12 selector: matchLabels: app: tokei-pie template: metadata: labels: app: tokei-pie spec: containers: - name: tokei-pie image: frostming/tokei-pie-cooker:latest imagePullPolicy: Always resources: li...

简单聊聊容器中的 UID 中的一点小坑
今天不太舒服,在家请假了一天。突然想起最近因为一些小问题,看了下关于容器中 UID 的东西。所以简单来聊聊这方面的东西。算个新手向的文章开篇最近帮 FrostMing 把他的 tokei-pie-cooker 部署到我的 K8S 上做成一个 SaaS 服务。Frost 最开始给我了一个镜像地址。然后我啪的一下复制粘贴了一个 Deployment 出来apiVersion: apps/v1 kind: Deployment metadata: name: tokei-pie namespace: tokei-pie labels: app: tokei-pie spec: replicas: 12 selector: matchLabels: app: tokei-pie template: metadata: labels: app: tokei-pie spec: containers: - name: tokei-pie image: frostming/tokei-pie-cooker:latest imagePullPolicy: Always resources: li...