计算机中的速率、带宽、时延、利用率解读

2023-05-16

计算机网络的性能一般是指它的几个重要的性能指标。但除了这些重要的性能指标外,还有一些非性能特征(nonperformance characteristics)也对计算机网络的性能有很大的影响。

那么,计算机网络的性能指标分别是哪几个?

1、速率

计算机发送出的信号都是数字形式的。比特(bit)是计算机中数据量的单位,也是信息论中使用的信息量的单位。英文单词bit来源于binary digit,意思是一个“二进制数字”,因此一个比特就是二进制数字中的一个1或0.计算机网络中的速率指的是连接在计算机网络上的主机在数字信道上传送数据的速率,它也称为数据率(datarate)或(bit rate)。

速率是计算机网络中最重要的一个性能指标。速率的单位是b/s(比特每秒)(或bit/s,有时也写为bps,即bit per second)。当数据率较高时,就可以用kb/s(k=10^3=千)、Mb/s(M=10^6=兆)、Gb/s(G=10^9=吉)或Tb/s(T=10^12=太)现在人们常用更简单的但很不严格的记法来描述网络的速率,如100M以太网,而省略了单位中的b/s,它的意思是速率为100Mb/s的以太网。上面所说的速率往往是指额定速率或标称速率。

在通信领域和计算机领域,应特别注意数量单位“千”、“兆”和“吉”等的英文缩写所代表的数值。如计算机中的数据量往往用字节作为度量的单位。一个字节(byte,记为大写的B)代表8个比特。“千字节”的“千”用大写K表示,它等于2^10,即1024,而不是10^3。同样,在计算机中,1MB或1GB也并非表示10^6或10^9个字节,而是表示2^20(1048 576)或2^30(1073 741 824)个字节。在通信领域小写的K表示10^3而不是1024。但有的书也不这样严格区分,大写k有时表示1000而有时又表示1024,作者认为从概念上还是区分为好。

2、带宽

“带宽”(bandwidth)有以下两种不同的意义:

(1) 带宽本来是指某个信号具有的频带宽度。信号的带宽是指,该信号所包含的各种不同频率成份所占据的频率范围。例如,在传统的通信线路上传送的电话信号的标准带宽是3.1kHz(从300Hz到3.4kHz,即话音的主要成分的频率范围)。这种意义的带宽的单位是赫(或千赫、兆赫、吉赫等)。

在过去很长的一段时间,通信的主干线路传送的是模拟信号(即连续变化的信号)。因此,表示通信线路允许通过的信号频带范围就称为线路的带宽(或通信频带)。

(2) 在计算机网络中,带宽用来表示网络的通信线路传送数据的能力,因此网络带宽表示在单位时间内从网络中的某一点到另一点所能通过的“最高数据率”。在本书中提到“带宽”时,主要是指这个意思。这种意义的带宽的单位是“比特每每秒”,记为b/s。在这种单位的前面也常常加上千(K)、兆(M)、吉(G)或太(T)这样的倍数。

在“带宽”的两种表述中,前者为频域称谓,而后者为时域称谓,其本质是相同的。也就是说,一条通信链路的“带宽”越宽,其所能传输的“最高数据率”也越高。

(3) 吞吐量。吞吐量(throughput)表示在单位时间内通过某个网络(或信道、接口)的数据量。吞吐量更经常地用于对现实世界中的网络的一种测量,以便知道实际上到底有多少数据量能够通过网络。

显然,吞吐量受网络的带宽或网络的额定速率的限制。例如,对于一个100Mb/s的以太网,其额定速率是100Mb/s,那么这个数值也是该以太网吞吐量的绝对上限值。因此,对于100Mb/s的以太网,其典型的吞吐量可能只有70Mb/s。

请注意,有时吞吐量还可用每秒传送的字节数或帧数来表示。

3、时延

时延(delay或latency)是指数据(一个报文或分组,甚至比特)从网络(或链路)的一端传送到另一端所需的时间。时延是个很重要的性能指标,它有时也成为延迟或迟延。

需要注意的是,网络中的时延是由以下几个不同的部分组成的:

(1) 发送时间

发送时延(transmission delay)是主机或路由器发送数据帧所需要的时间,也就是发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间。因此发送时延也叫做“传输时延”。发送时延的计算公式是:

发送时延=数据帧长度(b)/发送速率(b/s)

由此可见,对于一定的网络,发送时延并非固定不变,而是与发送的帧长(单位是比特)成正比,与发送速率成反比。

(2)传播时延

传播时延(prop agation delay)是电磁波在信道中传播一定的距离需要花费的时间。传播时延的计算公式是:

传播时延=信道长度(m)/电磁波在信道上的传播速率(m/s)

电磁波在自由空间的传播速率是光速,即3*10^5km/s。电磁波在网络传输媒体中的传播速率比在自由空间要略低一些:在铜线电缆中的传播速率约为2.3*10^5km/s,在光纤中的传播速率约为2.0*10^5km/s.例如,1000km长的光纤线路产生的传播时延大约为5ms.

以上两种实验不要弄混。只要理解这两种事验发生的地方,就不会把它们弄混。发送时延发生在机器内部的发送器中,而传播时延则发生在机器外部的传输信道媒体上。

(3) 处理时延

主机或路由器在收到分组信息时要花费一定的时间进行处理,例如分组的首部,从分组中提取部分数据、进行差错检验或查找适当的路由等等,这就产生了处理时延。

(4) 排队时延

分组在经过网络传输时,要经过许多路由器。但分组在进入路由器后要先在输入队列中排队等待处理。在路由器确定了转发接口后,还要在输出队列中排队等待转发。这就产生了排队时延。排队时延的长短往往取决于网络当时的通信量。当网络的通信量很大时会发生队列溢出,使分组丢失,这相当于排队时延为无穷大。

这样,数据在网络中经历的总时延就是以上四种时延之和:

总时间=发生时延+传播时延+处理时延+排队时延

 

必须指出,在总实验中,究竟是哪一种实验占主导地位必须具体分析。先把处理时延和排队时延忽略,如有一个长度为100MB的数据块(这里的M显然不是指10^6而是指2^20,即1048 576。B是字节,1字节=8比特),在带宽为1Mb/s的信道上(这里的M是10^6)连续发送,其发送时延是 100*1048576*8/10^6=838.9s

大约要用14分钟才能把这样大的数据块发送完毕。然而,若将这样的数据块用光纤传送到1000km远的计算机,那么每一个比特在1000km的光纤上只需用5ms就能到达目的地。因此对于这种情况,发送时延占主导地位。如果我们把传播距离减小到1km,那么传播时延也会相应地减小到原来数值的千分之一。然而,由于传播时延在总时延中的比重是微不足道的,因此总时延的数值基本上还是由发送时延来决定的。

再看一个例子。要传送的数据仅有一个字节(如键盘上键入的一个字符,共8bit),在1Mb/s的信道上的发送时延是8/10^6=8*10^-6s=8us

当传播时延为5ms时,总时延为5.008ms.在这种情况下,传播时延决定了总时延。这时即使把数据率提高到1000倍(即将数据的发送速率提高到1Gb/s),总时延也不会减小多少。这个例子告诉我们,不能笼统地认为:“数据的发送速率越高,传送得就越快”。这是因为数据传送的总时延是由:总时延=发送时延+传播时延+处理时延+排队时延,四项时延组成的,不能仅考虑发送时延一项。

必须强调指出,初学网络的人容易产生这样错误的概念,就是“在高速链路(或高带宽链路)上,你应当跑得更快些”。但这是不对的。我们知道,汽车在路面质量很好的高速公路上可以明显地提高行驶速率。然而,对于高速网络链路,我们提高的仅仅是数据的发送速率而不是比特在链路上传播速率。荷载信息的电磁波在通信线路上的传播速率(这是光速的数量级)与数据的发送速率只是减小了数据的发送时延。

还有一点也应当注意,就是数据的发送速率的单位是每秒发送多少个比特,是指某个点或某个接口上的发送速率。而传播速率的单位是每秒传播多少公里,是指传输线路上比特的传播速率。

因此,通常所说的“光纤信道的传输速率高”是指向光纤信道发送数据的速率可以很高,而光纤信道的传播速率实际上要比铜钱的传播速率还略低一点。这是因为经过测量得知,光在光纤中的传播速率是每秒20.5万公里,它比电磁波在铜线(如5类线)中的传播速率(每秒23.1万公里)略低一些。上述这个概念请读者务必弄清楚。

4、时延带宽积

把以上讨论的网络性能的两个度量一一传播时延和带宽一一相乘,就得到另一个很有用的度量:传播时延带宽积,即

时延带宽积=传播时延*带宽

如图所示表示时延带宽积。这是一个代表链路的圆柱形管道,管道的长度表示链路的传播时延(请注意,现在以时间作为单位来表示链路长度),而管道的截面积表示链路的带宽。因此,时延带宽积就表示这个管道的体积,表示这样的链路可容纳多少个比特。例如,设某段链路的传播时延为20ms,带宽为10Mb/s,算出时延带宽积=20*10^-3*10*10^6=2*10^5bit.

这就表示,若发送端连续发送数据,则在发送的第一个比特即将达到终点时,发送端就已经发送了20万个比特,而这20万个比特都正在链路上向前移动。因此,链路的时延带宽积又称为以比特为单位的链路长度。

不难看出,管道中的比特数表示从发送端发出的但尚未达到接收端的比特。对于一条正在传送数据的链路,只有在代表链路的管道都充满比特时,链路才得到了充分的利用。

 5、往返时间RTT

在计算机网络中,往返时间RTT(Round-Trip Time)也是一个重要的性能指标,它表示从发送方发送数据开始,到发送方收到来自接收方的确认(接收方收到数据后便立即发送确认),总共经历的时间。对于上述例子,往返时间RTT是40ms,而往返时间和带宽的乘积是4*10^5(bit)。在互连网中,往返时间还包括各中间结点的处理时延、排队时延以及转发数据时的发送时延。

显然,往返时间与所发送的分组长度有关。发送很长的数据块的往返时间,应当比发送很短的数据块的往返时间要多些。

往返时间带宽积的意义就是当发送方连续发送数据时,即使能够及时收到对方的确认,但已经将许多比特发送到链路上了。对于上述例子,假定数据的接收方及时发现了差错,并告知发送方,使发送方立即停止发送,但这时发送方也已经发送了40万各比特了。

当使用卫星通信时,往返时间RTT相对较长,是很重要的一个性能指标。

6-7、信道利用率和网络利用率

信道利用率指出某信道有百分之几的时间是被利用的(有数据通过)。完全空闲的信道的利用率是零。网络利用率则是全网络的信道利用率的加权平均值。信道利用率并非越高越好。这是因为,根据排队论的理论,当某信道的利用率增大时,该信道引起的时延也就迅速增加。这和高速公路上的情况有些相似。

由于在公路上的车流量很大时,由于公路上的某些地方会出现堵塞,因此行车所需的时间就会增长。网络上也有类似的情况。当网络的通信量很少时,网络产生的时延并不大。但在网络通信量不断增大的情况下,由于分组在网络结点(路由器或结点交换机)进行处理时需要排队等候,因此网络引起的时延就会增大。

如果令Do表示网络空闲时的时延,D表示网络当前的时延,那么在适当的假定条件下,可以用简单公式D=Do/1-U来表示D和Do及网络利用率U之间的关系式中,U是网络的利用率,数值在0到1之间。当网络的利用率达到其容量的1/2时,时延就要加倍。

特别值得注意的是:当网络的利用率接近最大值1时,网络的时延就趋于无穷大。因此我们必须有这样的概念:信道或网络利用率过高会产生非常大的时延。

时延与利用率的关系:

如图所示,一些拥有较大主干网的ISP通常控制它们的信道利用率不超过50%。如果超过了就要准备扩容,增大线路的带宽。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机中的速率、带宽、时延、利用率解读 的相关文章

  • sonic编译过程

    文章目录 1 0虚拟机选择2 0虚拟机安装3 0 系统配置4 0 安装docker5 0 安装sonic 1 0虚拟机选择 原则上所有的系统都可以编译sonic xff0c 此处我们选择centos 7 7 xff0c 虚拟机的内存空间建议
  • Sonic测试架构介绍

    Sonic项目简介 Sonic Software for Open Networking in the CloudSonic是基于Linux的开源网络操作系统 xff0c 可以跑在多个不同芯片厂商交换机上Sonic在2016年OCP峰会上
  • Sonic_cli常用命令

    用户名 xff1a admin 密码 xff1a YourPaSsWoRd 一 change password admin 64 sonic passwd Changing password for admin current UNIX p
  • SONIC config_db.json文件的前生今世

    config db json的使用 系统启动时从config db json中读取数据并写入CONFIG DB数据库 xff0c 前提是config db json存在 xff1b 保存当前系统的一些配置信息 xff0c 通过config
  • SONiC架构DOCKER组件交互分析

    BGP组件交互分析 内核中的bgp socket收到BGP更新报文 xff0c 然后被上送到bgpd进程bgpd处理该报文 xff0c 并通知zebra进程新增前缀和关联下一跳zebra确定该目的可达后 xff0c 生成一个路由网络链接信息
  • sonic处理netlink事件

    sonic处理netlink事件 sonic在处理路由 xff0c 接口up down 接口地址变化 xff0c team等事件上极大的依赖内核 sonic通过监听rtnl事件来响应linux事件 从而感知相关信息变化 libnl soni
  • sonic配置team与实现机制

    sonic实现team代码框架图 xff1a sonic修改lag模式配置步骤 1 修改文件teamd j2 docker exec it teamd bash cd usr share sonic templates vim teamd
  • asyncComputed 异步计算属性

    asyncComputed 异步计算属性 我们项目中最近使用了异步计算属性 xff0c 个人感觉很好用 xff0c 特此推荐给大家 一 案例 假设这样一个场景 xff1a 一个列表数据 data 是通过接口返回 xff0c 请求参数中有一个
  • sonic管理口信息处理流程

    sonic管理口信息处理流程 管理接口信息配置文件格式 管理信息使用MGMT INTERFACE 表进行配置 对象的key由管理接口名字和IP前缀使用 连接而成 属性 gwaddr用于执行默认路由指向管理口 xff0c 其值为默认网关 属性
  • SONIC VLAN配置流程

    SONIC VLAN配置流程 sonic vlan配置通过订阅config db的键空间事件完成vlan配置信息从config db到内核和硬件 config db json格式如下 xff1a 34 VLAN 34 34 Vlan1000
  • sonic容器构建

    sonic中大量的组件运行在docker容器中 xff0c 用于隔离彼此的运行环境 xff0c 从而解决相互之间的互斥问题 下面我们分析一下sonic中各个容器的构建过程 Dockerfile文件的生成过程 sonic中的容器Dockerf
  • ARM Cortex-M底层技术(九)KEIL MDK 分散加载示例1-更改程序运行基址

    KEIL MDK 分散加载示例1 更改程序运行基址 小编我一向主张在实战中学习 xff0c 不主张直接去去学习规则 amp 定义 xff0c 太枯燥 xff0c 在实际应用中去摸索 xff0c 才会真正理解具体的技术细节 xff0c 下面我
  • 如何修改已提交commit信息

    如何修改已提交commit信息 1 修改commit信息 1 1 修改最后一次提交信息 通过git log查看提交历史信息 xff1a 输入命令 xff1a span class token function git span commit
  • linux 安装mysql 以及常见错误总结

    安装的方法菜鸟教程上有 xff1a 入口 mysqld initialize 命令是出现如下错误Fatal error Please read 34 Security 34 section of the manual to find out
  • elementui下拉框多选报[Vue warn]: <transition-group> children must be keyed: <ElTag>

    elementui下拉框多选 xff0c 选值报错 选中一个值后所有的值都会被选中 经检查 xff0c 是由于我的下拉框的value值为一个对象而非单个值 值为对象时需要填入value key span class token operat
  • Hadoop_1 入门WordCount

    记录踩得坑以及部署环境流程 搭建的是伪分布Hadoop 首先环境需要安装zookeeper 这个好装 xff0c 不多说其次比较复杂的是安装openssh 我的Linux系统是centos 7 mini版本 安装openssh之前的准备工作
  • PX4无人机控制

    PX4无人机控制 向话题 mavros setpoint raw local发布无人机目标位置 43 偏航 xff0c 或者目标速度 43 偏航 发布目标位置 43 偏航 xff1a mission span class token pun
  • npm install 报错:gyp verb `which` failed Error: not found: python

    今天新启动一个项目 xff0c 在 npm install 安装依赖项时出现报错 npm install span class token operator gt span husky 64 span class token number
  • 24_ZYNQ7020开发板_SPI与Qflash芯片读写

    内核中使用spi master表示一个SPI主机控制器 一 SPI控制器驱动 1 xff09 spi master申请与释放 SPI申请 span class token keyword struct span spi master spa
  • python3的input函数实现回车换行,而不是结束输入

    span class token comment 实现回车换行 xff0c 而不是结束 span endstr span class token operator 61 span span class token string 34 34

随机推荐

  • rviz-Ros Wiki官网教程学习笔记(1)-用户指南

    0 rviz介绍 rviz是ROS自带的图形化工具 xff0c 可以很方便的让用户通过图形界面开发调试ROS 参考官网 rviz UserGuide 1 安装 根据自己的版本号 xff0c 在下面选择对应的命令执行 以ROS melodic
  • 轻松搭建CAS 5.x系列(6)-在CAS Server上增加OAuth2.0协议

    概述说明 CAS Server默认搭建出来 xff0c 客户端程序只能按照CAS自身的协议接入 CAS的强大在于 xff0c 有官方的插件 xff0c 可以支持其他的协议 本章节就让CAS Server怎么增加OAuth2 0的登录协议 安
  • 一起DIY四轴飞行器(二)初识飞控大脑

    系统 xff1a Windows 硬件 xff1a xff08 1 xff09 STM32F103C8T6最小系统板 某宝上搜索 STM32F103最小系统 xff0c 如上图所示这样的 xff08 2 xff09 ST LINK v2下载
  • STM32CubeMX基于HAL库点亮LED灯

    开发环境 xff1a Windows 软件 xff1a 1 STM32CubeMX 6 3 0 2 MDK 5 14 一 cubeMX的基本配置 1 选择MCU 2 配置时钟 查看电路图 xff0c 8MHz的高速外部晶振接到 OSCIN
  • 一起DIY四轴飞行器(三)添加实时操作系统--freeRTOS

    开发环境 xff1a Windows 软件 xff1a 1 STM32CubeMX 6 3 0 2 MDK 5 14 一 初识freeRTOS系统 1 什么是FreeRTOS xff1f Free 即免费的 xff0c RTOS 全称是 R
  • ESP8266 初次使用

    一 工具 1 ESP8266 01S 淘宝上搜索ESP8266 01S 引脚说明 xff1a 2 USB转串口 给设备供电3 3V xff08 官方说不要用USB转串口的3 3V xff0c 需要单独供电 xff09 xff0c USB转串
  • ubuntu安装boost

    ubuntu安装boost 系统 Ubuntu 18 04 boost中 xff0c 用到了别的函数库 xff0c 所以为了使用boost中相应的功能 xff0c 需要先安装系统中可能缺失的库 1 卸载已经安装的boost 删除 usr l
  • 简单的状态机图

    一 什么是状态机 xff1f 做产品的时候 xff0c 我们总能遇到一些比较复杂的逻辑问题 比如状态的转换 xff0c 字段状态的确认 xff0c 权限的控制 xff0c 状态的对应 而普通的流程图 xff0c 或时序图 xff0c 更侧重
  • js-对象转基本类型

    起因是收到朋友发的一道题 xff0c 如下 xff1a span class token comment 请在问号处填写你的答案 使下方等式成立 span span class token keyword let span a span c
  • 局域网内wakeonlan远程唤醒其它计算机

    背景 xff1a 需要管理多台计算机 xff0c 所有计算机在一个局域网内 xff0c 并且有的安装了Windows系统 xff0c 有的安装了Linux系统 我们想远程关闭和启动所有计算机 关闭计算机直接通过网络发生操作系统关机命令即可实
  • D3D中的三种Buffer

    在D3D中 针对视窗有三种Buffer 它们分别是 Color Buffer Depth Buffer和Stencil Buffer Color Buffer在D3D中又称为Render Target 意思是最后着色的目标Buffer 就是
  • 创建镜像(更新与构建镜像)

    创建镜像 有时从Docker镜像仓库中下载的镜像不能满足我们的要求 xff0c 此时可以基于这个镜像 xff08 基础镜像 xff09 封装一个自 己的镜像 两种方式 xff1a 更新镜像 xff1a 使用docker commit命令构建
  • (十)CMake链接已有的动态库

    使用一个已经存在的动态库 xff0c 需要用到CMake中两个命令 xff0c 分别是 xff1a link directoriestarget link libraries 下面先介绍以下两个命令的格式及其含义 xff0c 最后是一个使用
  • ROS入门21讲笔记(四)自定义话题消息类型和使用

    除了ROS内置消息外 xff0c 我们还能自定义消息 这一次我们不再与海龟较劲 xff0c 而是自定义一个订阅消息类型 xff0c 让订阅者和发布者通过这个结构进行数据通信 一 如何自定义话题消息 xff1f 话题消息是以 msg结尾的文件
  • ROS入门21讲笔记(七)自定义消息消息类型和使用

    这一节主要是学习如何自定义一个服务类型并使用它 一 如何自定义服务消息 xff1f 服务数据是以 srv结尾的文件 xff0c 是一个用于描述ROS服务信息简单文本文件 xff0c 用于生成不同语言消息的源代码 srv文件存放在packag
  • ROS入门21讲笔记(十二)常用可视化工具

    一 QT类可视化工具 1 1 rqt console rqt console 为显示和过滤ROS信息提供了一个GUI插件 1 2 rqt plot rqt plot使用不同的绘图后端提供数值可视化功能 1 3 rqt Image view
  • (二)CMake 使用头文件

    一 include directories 该命令用于增加一个编译头文件 其基本语法是 xff1a include directories span class token punctuation span span class token
  • cargo 宏展开遇到的问题

    最近学习rust xff0c 看到宏展开命令 span class token comment 单独文件 span rustc Z unstable options pretty span class token operator 61 s
  • 工程师笔记|常见的嵌入式软件工程师面试题

    Q xff1a 什么是ISR xff1f A xff1a ISR 是指中断服务程序 这些是存储在特定内存地址的函数 xff0c 当发生某种类型的中断时会调用这些函数 Cortex M 处理器系列具有管理中断执行的 NVIC Q xff1a
  • 计算机中的速率、带宽、时延、利用率解读

    计算机网络的性能一般是指它的几个重要的性能指标 但除了这些重要的性能指标外 xff0c 还有一些非性能特征 xff08 nonperformance characteristics xff09 也对计算机网络的性能有很大的影响 那么 xff