主要关注分析单个设备/系统网络流量的工具,而非全网管理工具。

虽然在完全隔离的情况下评估网络性能通常是无意义的(节点不会与自己通信),但是,调查单个系统在网络上的行为对确定本地配置和应用程序的问题是有帮助的。

了解单系统的网络流量特性也有助于找到其他有问题的系统,以及造成网络性能降低的本地硬件和应用程序错误。

❑确定系统内以太网设备的速度和双工设置(mii-tool、ethtool)。

❑确定流经每个以太网接口的网络流量(ifconfig、sar、gkrellm、iptraf、netstat、etherape)。

❑确定流入和流出系统的IP流量的类型(gkrellm、iptraf、netstat、etherape)。

❑确定流入和流出系统的每种类型的IP流量(gkrellm、iptraf、etherape)。

❑确定是哪个应用程序产生了IP流量(netstat)。

网络I/O介绍

L链路层,也就是最低一层,包含网络硬件,如以太网设备。在传送网路流量时,这一层并不区分流量类型,而仅仅以尽可能快的速度发送和接收数据(或帧)。

链路层的上面是网络层。这一层使用互联网协议(IP)和网际控制报文协议(ICMP)在机器间寻址并路由数据包。IP/ICMP尽其最大努力尝试在机器之间传递数据包,但是它们不能保证数据包是否能真正达到其目的地。

网络层的上面是传输层,它定义了传输控制协议(TCP)和用户数据报协议(UDP)。

TCP是一个可靠协议,它可以保证消息通过网络送达,如果消息无法送达它就会产生一个错误。TCP的同级协议UDP,则是一个不可靠协议,它无法保证信息能够送达(为了获得最高的数据传输速率)。

UDP和TCP为IP增加了“服务”的概念。UDP和TCP接收有编号“端口”的消息。按照惯例,每个类型的网络服务都被分配了不同的编号。

在Linux系统中,文件/etc/services定义了全部的端口以及它们提供的服务类型。

最上一层为应用层。这一层包含了各种应用程序,它们使用下面各层在网络上传输数据包。

在Linux内核实现或控制的是最低三层(链路层、网络层和传输层)。内核可以提供每层的性能统计信息,包括数据流经每一层时的带宽使用情况信息和错误计数信息。

链路层的网络流量

链路层,通常是以太网,以帧序列的形式将信息发送到网络上。

即便是其上层次的信息片段的大小比帧大很多,链路层也会将它们分割为帧,再发送到网络上。

数据帧的最大尺寸被称为最大传输单位(MTU)。

可以使用ip或ifconfig来设置MTU。

对以太网而言,最大大小一般为1500字节,虽然有些硬件支持的巨型帧可以高达9000字节。

MTU的大小对网络效率有直接影响。

链路层上的每一个帧都有一个小容量的头部,因此,使用大尺寸的MTU就提高了用户数据对开销(头部)的比例。但是,使用大尺寸的MTU,每个数据帧被损坏或丢弃的几率会更高。对清洁物理链路来说,大尺寸MTU通常会带来更好的性能,因为它需要的开销更小;反之,对嘈杂的链路来说,更小的MTU则通常会提升性能,因为当单个帧被损坏时,它要重传的数据更少。

❑发送/接收——如果一个帧成功地流出或流入机器,那么它就会被计为一个已发送或已接收的帧。

❑错误——有错误的帧(可能是因为网络电缆坏了,或双工不匹配)。

❑丢弃——被丢弃帧的(很可能是因为内存或缓冲区容量小)。

❑溢出——由于内核或网卡有过多的帧,因此被网络丢弃的帧。通常这种情况不应该发生。❑帧——由于物理级问题导致被丢弃的帧。其原因可能是循环冗余校验(CRC)错误或其他低级别的问题。

❑多播——这些帧不直接寻址到当前系统,而是同时广播到一组节点。

❑压缩——一些底层接口,如点对点协议(PPP)或串行线路网际协议(SLIP)设备在把帧发送到网络上之前,会对其进行压缩。该值表示的就是被压缩帧的数量。

以太网设备被命名为ethN,其中,eth0指的是第一个设备,eth1指的是第二个设备,以此类推。

与以太网设备命名方式相同,PPP设备被命名为pppN。

环回设备,用于与本机联网,被命名为lo。

在调查性能问题时,非常关键的一点是要清楚底层物理层能够支持的最大速度。比方说,以太网设备通常支持多种速度,如10Mbps、100Mbps,甚至是1000Mbps。

底层以太网卡和基础设施(交换机)必须能控制所需的速度。虽然大多数网卡可以自动检测能支持的最高速度,并进行适当地自我设置,但是,如果一个网卡或交换机设置错误,就会影响到性能。如果不能达到更高的速度,以太网设备一般会协商降低速度,但它们仍然是起作用的。假如网络性能大大低于预期,那么最好使用工具ethtool或mii-tool来检验以太网速度是否设置期望值。

协议层网络流量

每个服务的端口号具有唯一性,因此有可能确定流向特定服务的物理流量。

相关推荐