第十章 网络
随着系统变得越加分布化,网络在性能中扮演着越来越重要的角色。改进网络延时、吞吐量和消除丢包引起的延时异常是十分重要的工作。
网络的分析是跨硬件和软件的。其中,硬件包括:
- 网络接口卡
- 交换机
- 路由器和网关(通常含有软件)
软件则指的是内核协议栈,通常是TCP/IP,以及每个所社的协议行为。
背景
术语
-
接口
网络物理连接器。
-
报文
位于应用层的信息分组称为报文。报文是网络中交换与传输的数据单元,报文包含了应用层的完整的数据信息。报文在传输过程中会不断地封装成分组、包、帧来传输,封装的方式就是添加一些控制信息组成的首部,那些就是报文头。
-
数据包
TCP/IP通信协议传输中的数据单位,处于网络层,是通过网络传输的数据基本单元。为了提供通信性能和可靠性,每个用户发送的数据会被分成多个更小的部分。在每个部分的前面加上一些必要的控制信息组成的首部,有时也会加上尾部,就构成了一个分组。它的起始和目的地是网络层。
-
帧
数据链路层的协议数据单元,为了保证数据的可靠传输,它将上层传入的数据添加一个头部和尾部,组成了帧,帧根据MAC地址寻址。
-
带宽
对应网络类型的最大数据传输速率。
-
吞吐量
两个网络端点间的数据传输率。
-
延时
一个报文往返端点所需的时间,或指建立连接所需要的时间。
协议栈
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4pRJXeip-1636095548341)(%E3%80%8A%E6%80%A7%E8%83%BD%E4%B9%8B%E5%B7%85%E3%80%8B%E7%BD%91%E7%BB%9C.assets/1078885-20191201115455891-10715953.png)]
数据进入TCP/IP协议栈时的封装过程如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q6IfrIxr-1636095548343)(%E3%80%8A%E6%80%A7%E8%83%BD%E4%B9%8B%E5%B7%85%E3%80%8B%E7%BD%91%E7%BB%9C.assets/1078885-20191201115544012-332700971.png)]
数据进入TCP/IP协议栈时的解封装过程如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L5Md6OHl-1636095548344)(%E3%80%8A%E6%80%A7%E8%83%BD%E4%B9%8B%E5%B7%85%E3%80%8B%E7%BD%91%E7%BB%9C.assets/1078885-20191201115625795-2136763138.png)]
概念
-
路由
以太网交换机工作在第二层即数据链路层,用于在同一网络内部转发以太网帧。但是,当源和目的IP地址位于不同网络时,以太网帧必须发送给路由器。路由器负责在不同网络间传输报文,通过路由表来决定最佳转发路径。当主机将报文发送至不同IP地址时,由于主机无法直接与本地网络以外的设备通信,报文被转发至默认网关。默认网关就是数据流从本地网络路由至远端设备的目的地。它通常用来连接本地网与公共网。
-
封装
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7uMd7zCZ-1636095548346)(%E3%80%8A%E6%80%A7%E8%83%BD%E4%B9%8B%E5%B7%85%E3%80%8B%E7%BD%91%E7%BB%9C.assets/image-20211101201457598.png)]
-
包长度
通常受限于网络接口的最大传输单元(MTU)长度,一般是1500B。但以太网支持9000B的特大包(帧),这提高了网络吞吐性能,因为传输减少了包。
-
延时
-
主机名解析延时
与远程主机建立连接时,主机名需要解析为IP地址,例如用DNS解析。
-
ping延时
用ping命令测量ICMP echo请求到echo响应所需的时间。该时间用来衡量主机之间包括网络跳跃的网络延时。它测量的是包往返的总时间,简单、随时可用。
ICMP : Internet Control Message Protocol,指互联网控制报文协议。
关于ping: 在接收端,ICMP echo 请求通常做中断处理并立即返回,这尽可能地减少了内核代码运行
的时间。在发送端,由于时间戳由用户层测量,并且包括内核上下文切换和内核代码路径时间,可能会包括少量附加的时间。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EJQnV53N-1636095548347)(%E3%80%8A%E6%80%A7%E8%83%BD%E4%B9%8B%E5%B7%85%E3%80%8B%E7%BD%91%E7%BB%9C.assets/image-20211101203244370.png)]
-
-
缓冲
较大的缓冲可以通过在阻塞和等待确认前持续传输数据环节高往返延时带来的影响。
-
接收协商
通过与对端自动协商,网络接口能够工作在不同的模式。
例如:
- 带宽:10、100、1000MB/s
- 双工模式:半双工或者全双工
全双工:允许双向同时传输,利用分离的通道传输和接收能利用全部的带宽。
-
本地连接
网络连接可以发生在同一系统的两个应用程序之间。
架构介绍
本节介绍网络架构:协议、硬件和软件。
协议
UDP
用户数据报协议(UDP)是一个常用于发送网络数据报文RFC 768]的互联网标准。就性能而言,UDP 提供如下特性:
- 简单:简单而短小的协议头降低了计算与长度带来的系统开销。
- 无状态:降低连接与传输控制带来的系统开销.
- 无重新传输
尽管UDP简单并且通常能提供高性能,但 UDP 并不可靠,而且数据可能会丢失或者被乱序发送。因此它不适合许多类型的连接。UDP 也缺乏阻塞避免因而会引起网络阻塞。
TCP
传输控制协议(TCP)是一个常用的用于建立可靠网络连接的互联网标准。TCP 由(RFC 793]以及之后的增补定义。
就性能而言,即使在高延时的网络中,利用缓冲和可变窗口,TCP也能够提供高吞吐量。TCP 还会利用阻塞控制以及由发送方设置的阻塞窗口,因而不仅能保持高速而且在跨越不同并变化的网络中保持合适的传输速率。阻塞控制能避免会导致网络阻塞进而损害性能的过度发送。
关于TCP 性能的重要内容包括三次握手、重复确认检测、阻塞控制算法、Nagle 算法、延时确认、SACK 和 FACK。
#####三次握手
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EbntHJXl-1636095548347)(%E3%80%8A%E6%80%A7%E8%83%BD%E4%B9%8B%E5%B7%85%E3%80%8B%E7%BD%91%E7%BB%9C.assets/format,png.png)]
最开始的时候客户端和服务器都是处于CLOSED状态。主动打开连接的为客户端,被动打开连接的是服务器。
- TCP服务器进程先创建传输控制块TCB,时刻准备接受客户进程的连接请求,此时服务器就进入了LISTEN(监听)状态;
TCP客户进程也是先创建传输控制块TCB,然后向服务器发出连接请求报文,这是报文首部中的同部位SYN=1,同时选择一个初始序列号 seq=x ,此时,TCP客户端进程进入了 SYN-SENT(同步已发送状态)状态。TCP规定,SYN报文段(SYN=1的报文段)不能携带数据,但需要消耗掉一个序号。 - TCP服务器收到请求报文后,如果同意连接,则发出确认报文。确认报文中应该 ACK=1,SYN=1,确认号是ack=x+1,同时也要为自己初始化一个序列号 seq=y,此时,TCP服务器进程进入了SYN-RCVD(同步收到)状态。这个报文也不能携带数据,但是同样要消耗一个序号。
- TCP客户进程收到确认后,还要向服务器给出确认。确认报文的ACK=1,ack=y+1,自己的序列号seq=x+1,此时,TCP连接建立,客户端进入ESTABLISHED(已建立连接)状态。TCP规定,ACK报文段可以携带数据,但是如果不携带数据则不消耗序号。
- 当服务器收到客户端的确认后也进入ESTABLISHED状态,此后双方就可以开始通信了。
LISTEN - 侦听来自远方TCP端口的连接请求;
SYN-SENT -在发送连接请求后等待匹配的连接请求;
SYN-RECEIVED - 在收到和发送一个连接请求后等待对连接请求的确认;
ESTABLISHED- 代表一个打开的连接,数据可以传送给用户;
FIN-WAIT-1 - 等待远程TCP的连接中断请求,或先前的连接中断请求的确认;
FIN-WAIT-2 - 从远程TCP等待连接中断请求;
CLOSE-WAIT - 等待从本地用户发来的连接中断请求;
CLOSING -等待远程TCP对连接中断的确认;
LAST-ACK - 等待原来发向远程TCP的连接中断请求的确认;
TIME-WAIT -等待足够的时间以确保远程TCP接收到连接中断请求的确认;
CLOSED - 没有任何连接状态;
硬件
接口、控制器、交换机、路由器及其他设备(集线器、网桥、调制解调器)
###软件
网络栈、TCP、设备驱动程序
方法(P480)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MRmbp6hV-1636095548348)(%E3%80%8A%E6%80%A7%E8%83%BD%E4%B9%8B%E5%B7%85%E3%80%8B%E7%BD%91%E7%BB%9C.assets/image-20211101205852250.png)]
工具法
检查以下内容:
netstat -s 按照各个协议分别显示其统计数据
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EkBCsWKf-1636095548348)(%E3%80%8A%E6%80%A7%E8%83%BD%E4%B9%8B%E5%B7%85%E3%80%8B%E7%BD%91%E7%BB%9C.assets/image-20211102220846321.png)]
netstat -i 打印网络接口信息
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-19PMInjf-1636095548349)(%E3%80%8A%E6%80%A7%E8%83%BD%E4%B9%8B%E5%B7%85%E3%80%8B%E7%BD%91%E7%BB%9C.assets/image-20211102221034624.png)]
ifconfig 获取网络接口配置信息并对此进行修改
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w8OeiyW7-1636095548349)(%E3%80%8A%E6%80%A7%E8%83%BD%E4%B9%8B%E5%B7%85%E3%80%8B%E7%BD%91%E7%BB%9C.assets/image-20211102221323538.png)]
tcpdump 监视第一个网络接口上所有流过的数据包。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1zYn0VUj-1636095548350)(%E3%80%8A%E6%80%A7%E8%83%BD%E4%B9%8B%E5%B7%85%E3%80%8B%E7%BD%91%E7%BB%9C.assets/image-20211102221602631.png)]
USE方法
对每个网络接口及方向进行:
- 使用率
- 饱和度
- 错误
的检查。
工作负载特征归纳
- 网络吞吐量
- 网络接口IOPS
- TCP连接率
延时分析
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zUzyASQh-1636095548350)(%E3%80%8A%E6%80%A7%E8%83%BD%E4%B9%8B%E5%B7%85%E3%80%8B%E7%BD%91%E7%BB%9C.assets/image-20211102222136617.png)]
性能监测
- 吞吐量
- 连接数
- 错误
- TCP重传输
- TCP乱序数据包
数据包嗅探
数据包嗅探从网络捕捉数据包,所以能检查每一个数据包的方式检查协议报文头和数据。
数据包捕捉的日志会包括如下信息:
- 时间戳
- 整个数据包
- 所有协议头
- 部分或全部负载数据
- 元数据:数据包数量,丢包数量
TCP分析
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o1cDiwxK-1636095548351)(%E3%80%8A%E6%80%A7%E8%83%BD%E4%B9%8B%E5%B7%85%E3%80%8B%E7%BD%91%E7%BB%9C.assets/image-20211102222718094.png)]
挖掘分析
通过挖掘每个数据包至网络接口驱动。其运行往往非常复杂,是一项非常耗时的操作。
静态性能分析
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YIrrK6nh-1636095548351)(%E3%80%8A%E6%80%A7%E8%83%BD%E4%B9%8B%E5%B7%85%E3%80%8B%E7%BD%91%E7%BB%9C.assets/image-20211102222919038.png)]
资源控制
设置控制以显示网络资源,包括:
- 网络带宽限制
- IP服务品质:由网络组件应用的网络流量优先顺序
微基准测试
许多基准测试工具可以用于网络,调查分布式应用程序环境的吞吐量问题,确认网络能否达到预期的网络吞吐。如果达不到,能用微基准测试工具调查网络性能。
典型要素如下:
- 方向
- 协议
- 线程数
- 缓冲长度
- 接口MTU长度
分析
这节介绍网络性能分析工具。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WgGXrswz-1636095548351)(%E3%80%8A%E6%80%A7%E8%83%BD%E4%B9%8B%E5%B7%85%E3%80%8B%E7%BD%91%E7%BB%9C.assets/image-20211102223915611.png)]
实战吧…