1、最近在做容量规划方面的知识,恶补了相关的知识.1:网络延时一个信号在它的发送和它的最后接受之间存在一个延迟,每个网络都受这个延迟的支配.由于网络的复杂性,网络流量的动态变化和网络路由的动态选择,网络延时随时都在不停的变化(抖动).影响延时的因素:(1)路由的跳数(每次路由转发需要时间)(2)网络的流量(流量越大, 交换机和路由器排队的时间就长 )2:带宽(1)电磁波的速度传播速度:不管是电信号,还是光信号, 只要进入线路后,就能够进行快速的传播 .单位是 m/s/传播速度只与传播介质有关.不同的传播介质中的信号的传播速度几乎等于常量,不论数据发送装置以多块的发送速度让数据以信号的形式进入线路,
2、在线路中的信号传播速度几乎不变.(2)数据发送速度带宽其实表示数据的发送速度,比如百兆网卡表示网卡的最大发送速度为 100Mbps.影响发送速度的素主要有 2 个 :a:传输频率: 数据发送装置将二进制信号传送至线路的能力, 以及另一端的数据接收装置对二进制信号的能力.需要注意信号的接收能力至关重要,如果接受能力跟不上,则发送能力不可能提高,b:数据传输介质的并行度 ,等价于计算机系统总线宽度的概念 ,比如 64 位的计算机系统表示同一时刻可以传输 64 位数据要提高计算机总线的带宽,包括提高总线频率和总线宽度.另外也需要注意信号在传输介质中的衰减,所以这也是为什么光纤传播能力强的原因.(3)
3、限制带宽的原因:交换机存储转发机制:web 站点服务器托管在某 IDC,通过将其连接到某个交换机,从而接入互联网. 交换机从连接服务器的端口接收数据,存储到交换机内部的高速缓冲区队列中,然后将其从连接路由器的端口发送出去,再经过路由器的转发, 进入另一网络.交换节点的出口带宽:所有数据汇集到路由器的转发队列,路由器按照转发队列的顺序交错地发送这些来之不同主机的数据,转发的发送速度必定小于所有从路由器发出去的数据发送速度.因为带宽是有限的,所以互联网运营商一般会在基础交换节点上设置关卡,也就是限制数据从你的主机流入路由器转发队列的速度,而只要流入路由器转发队列的速度都会按照路由器的出口带宽,流入
4、其他网络 .(4)共享和独享带宽(5)下载速度单位时间内从服务器到达用户 pc 的数据量多少,一般用数据量字节数多少来描述,单位为Bytes/s数据从服务器开始发送直到完全到达用户 PC 的这段时间称为响应时间.响应时间=发送时间 +传播时间 +处理时间.发送时间=数据量 /带宽,总的发送时间也包括多个节点之间数据转发花费的时间传播时间主要依赖于传播距离.处理时间表示数据在交换节点中为存储装发而进行一些必要的处理所花费的时间,主要组成部分就是数据在缓冲区队列中排队所花费的时间.处理时间的多少取决于数据流经各交换节点所在网络的数据通信量,往往是不可预测的, 计算比较复杂.响应时间=( 数据量比特
5、数 /带宽)+(传播距离/传输速度)+ 处理时间下载速度=数据量字节数 /响应时间(6)响应时间的计算web 服务器托管在某互联网数据中心(IDC),以 10M 独享带宽的方式接入互联网,位于江苏的用户通过小区提供的 1M 独享带宽方式接入互联网 .用户下载一个 100MB 的文件,假如仅仅只有 2 个交换节点服务器发送时间=800Mbit/(10Mbit/s)=80s用户 PC 接入的交换节点到用户 PC 的发送时间为 800Mbit/(1Mbit/s)=800s这二个交换节点都在所在城市的城域网顶级节点并且通过光缆连接,带宽假设为 40G.发送时间=800Mbit/(40Gbit/s)=0
6、.02s.传播时间,北京到江苏的距离大概 1000km,传播时间大概 0,005s.则忽略处理时间,响应时间大概为 880.025s.下载速度则为 113.KB/s但是一般由于 IDC 设计的问题 ,交换节点可能有多个,但是这些节点(基础节点和骨干节点有较高的带宽)制约实际的下载速度因素:a:共享带宽以及网络通信数据量过大时,交换节点中的数据在转发队列的等待时间较长 .b:pc 网卡接受数据到内存后 ,完成数据接收,但是需要将数据写入到磁盘才会进行下一次接收数据的调用,可能在系统调用过程中会有暂停.(7)互联互通如果服务器和用户 PC 处于不同运营商的互联网中 ,那么无论是否在同一个城市,数据
7、都必须经过两个互联网运营商之间的互联节点,节点的带宽将很麻烦.选择 IDC 的时候要考虑出口带宽以及与骨干网络是否直连,如果要同时为多个互联网运营商的网络的用户提供服务,需要考虑出口节点与运营商互联节点的带宽.3:下行带宽ADSL 技术是一种不对称数字用 户线实现宽带接入互连网的技术,ADSL 作为一种传输层的技术,充分利用现有的铜线资源, 在一对双绞线上提供上行 640kbps(理论上行 1Mbps)下行8Mbps 的带宽.从而克服了传统用户在“最后一公里“的“瓶颈 “,实现了真正意义上的宽带接入.现在的所谓加大带宽,提速网络, 其实本上是一种掩人耳目的做法,理论上只有改变传输介质,更换网链
8、路拓扑结构络协议才能使得现有的带宽加大,而现在的双绞线和主要协议 TCP/IP 已经使用很久了,基本上没有办法再提供它们的通讯质量, 所以只能在牺牲上行带宽的前提下加大网络带宽,即把上传的带宽划拨一部分给下行带宽, 而普通用户很少用的上行带宽.4:多核和多路其中的多路指服务器物理 CPU 的数量, 也就是服务器主板上 CPU 插槽的数量.而多核处理器,是在一颗物理 CPU 内部封装了两个或更多 CPU 核心,其好处在于能够让用户在成本增加不多的前提下,拥有更强劲的性能。而且多核处理器能够比较显著地降低性能功耗比Iperf 是 一 个 网 络 性 能 测 试 工 具 。 Iperf 可 以 测
9、试 最 大 TCP 和 UDP 带 宽 性 能 。 Iperf 具有 多 种 参 数 和 UDP 特 性 , 可 以 根 据 需 要 调 整 。 Iperf 可 以 报 告 带 宽 , 延 迟 抖 动 和 数 据 包丢 失 。Reno 是 目 前 应 用 最 广 泛 且 较 为 成 熟 的 算 法 。 该 算 法 所 包 含 的 慢 启 动 、 拥 塞 避免 和 快 速 重 传 、 快 速 恢 复 机 制 , 是 现 有 的 众 多 算 法 的 基 础 。 1.慢 启 动 与 拥 塞 避 免 TCP 发 送 端 采 用 慢 启 动 和 拥 塞 避 免 算 法 来 控 制 向 网 络 输 送 的
10、 数 据 量 。 为 了实 现 这 些 算 法 , 必 须 向 TCP 每 个 连 接 状 态 加 入 3 个 参 量 : (1)拥 塞 窗 口 (cwnd), 如 前 所 述 , 它 是 对 发 送 端 收 到 确 认 (ACK)之 前 能 向网 络 传 送 的 最 大 数 据 量 的 一 个 发 送 端 的 限 制 。 (2)接 收 端 通 知 窗 口 (rwnd), 它 是 对 未 完 成 数 据 量 的 接 收 端 的 限 制 ,cwnd 和 rwnd 的 最 小 值 决 定 了 数 据 传 送 。 (3)慢 启 动 阀 值 (ssthresh), 被 用 来 确 定 是 用 慢 启
11、动 还 是 用 拥 塞 避 免 算 法来 控 制 数 据 传 送 , 具 体 用 法 如 下 :当 cwndssthresh 时 使 用 拥 塞 避 免 算 法 ; 当 cwnd=ssthresh 时 , 发 送 端 既 可 以使 用 慢 启 动 也 可 以 使 用 拥 塞 避 免 。 ssthresh 的 初 始 值 可 以 任 意 大 (比 如 , 一些 实 现 中 使 用 接 收 端 通 知 窗 口 的 尺 寸 ), 但 是 一 旦 对 拥 塞 响 应 之 后 , 其 大 小 可能 会 被 减 小 。 在 不 清 楚 网 络 环 境 的 情 况 下 向 网 络 传 送 数 据 , 要 求
12、 TCP 缓 慢 地 探 测 网 络以 确 定 可 用 带 宽 , 以 避 免 突 然 传 送 大 量 数 据 而 使 网 络 拥 塞 。 为 达 此 目 的 , 在传 送 开 始 时 , 采 用 了 慢 启 动 机 制 , 这 个 机 制 在 修 复 了 由 重 发 定 时 器 探 测 到 的数 据 丢 失 之 后 也 被 采 用 。 首 先 要 确 定 的 是 cwnd 的 初 始 值 IW(初 始 窗 口 大 小 ), 这 里 规 定 它 必 须 小于 或 等 于 2*SMSS 字 节 而 且 不 能 大 于 两 个 数 据 段 。 在 慢 启 动 期 间 , 每 收 到 一 个 新 的
13、 ACK,cwnd 最 多 增 长 1。 直 到 cwnd 超 过ssthresh 或 者 检 测 到 拥 塞 时 , 停 止 执 行 慢 启 动 算 法 , 转 入 拥 塞 避 免 阶 段 。 在拥 塞 避 免 期 间 , cwnd 在 每 个 ACK 以 1/cwnd(或 每 个 RTT 增 加 SMISS 个 字 节 )的 速 度 递 增 。 拥 塞 避 免 算 法 一 直 保 持 直 到 检 测 出 拥 塞 。 等 式 (5.1.1)给 出 了一 个 在 拥 塞 避 免 期 间 用 来 修 正 cwnd 值 的 公 式 : cwnd+=1/cwnd (5.1.1) 每 收 到 一 个
14、非 重 复 的 ACK 都 采 用 等 式 (5.1.1)来 调 整 cwnd。 等 式 (5.1.1)用于 近 似 拥 塞 避 免 算 法 的 增 长 。 在 实 现 中 , 在 拥 塞 避 免 期 间 常 用 公 式 :cwnd+=SMSS*SMSS/cwnd 来 修 正cwnd 的 值 , 当 SMSS*SMSS/cwnd1 时 , cwnd+=1。 另 一 种 改 进 的 方 案 是 每 当 新 的 ACK 到 来 时 记 下 被 新 确 认 的 字 节 数 , 然 后cwnd 就 可 增 加 相 应 字 节 数 , 这 个 增 加 的 数 目 最 多 可 达 到 SMSS 字 节 。
15、 一 旦 TCP 发 送 端 使 用 重 传 定 时 器 检 测 到 包 丢 失 时 , ssthresh 的 值 就 如 下设 置 : Ssthresh=max(FlightSize/2, 2*SMSS) (5.1.2) 式 中 , Filght Size 是 已 发 送 但 未 收 到 ACK 的 数 据 的 大 小 。 在 重 发 了 丢 失 的 数 据 段 之 后 , cwnd 必 须 被 设 置 成 LW(丢 失 窗 口 ), 它 等于 一 个 满 尺 寸 数 据 段 的 大 小 。 再 发 丢 失 的 数 据 段 之 后 , 发 送 端 起 用 慢 启 动 算法 增 长 窗 口 直
16、 到 该 窗 口 大 小 增 长 到 等 于 新 设 置 的 ssthresh 值 之 后 , 又 采 用拥 塞 避 免 算 法 了 。 2.快 速 重 传 与 快 速 恢 复 当 接 收 端 收 到 一 个 失 序 的 数 据 报 时 , 会 立 即 发 回 一 个 重 复 ACK, 这 个ACK 的 目 的 是 告 知 发 送 端 收 到 一 个 失 序 的 数 据 报 并 说 明 其 所 期 望 的 接 受 序 号 。从 发 送 端 的 角 度 看 , 重 复 ACK 可 能 是 许 多 网 络 问 题 引 起 的 。 首 先 , 它 们 有 可能 是 因 为 包 丢 失 而 引 起 。
17、 在 此 情 况 下 , 在 此 数 据 段 之 后 的 所 有 数 据 段 都 会 触发 重 复 ACK。 其 次 , 重 复 ACK 可 能 是 由 于 网 络 对 数 据 段 的 重 新 排 序 引 起 的 。最 后 , 重 复 ACK 有 可 能 是 ACK 或 数 据 段 被 网 络 复 制 所 引 起 的 。 此 外 , 当 接 收端 部 分 或 完 整 地 填 补 了 序 号 空 缺 应 立 即 发 送 一 个 ACK, 这 样 可 以 更 及 时 地 通知 发 送 端 , 使 其 迅 速 从 重 发 状 态 中 恢 复 过 来 。 TCP 发 送 端 应 该 使 用 快 速 重
18、 传 算 法 来 探 测 或 者 修 复 数 据 丢 失 , 在 收 到 3个 重 复 ACK(即 连 续 的 4 个 相 同 的 ACK, 标 志 着 1 个 数 据 段 已 丢 失 )时 , TCP不 等 重 传 定 时 器 超 时 就 立 即 重 传 看 来 已 丢 失 的 数 据 段 。 此 后 起 用 快 速 恢 复 算法 来 进 行 新 的 数 据 传 输 , 直 到 1 个 非 重 复 ACK 到 达 。 下 面 是 快 速 传 送 /快 速 恢 复 算 法 的 实 现 : ( 1) 当 第 二 个 重 复 ACK 收 到 时 , ssthresh 根 据 等 式 (5.1.2)
19、设 值 。 ( 2) 重 传 丢 失 的 数 据 段 并 将 cwnd 的 值 设 置 为 ssthresh+3*SMSS, 称 之为 给 拥 塞 窗 口 “充 气 ”。 ( 3) 此 后 对 每 个 接 收 到 一 个 重 复 ACK, 将 cwnd 增 大 SMSS 字 节 , 这 将 人为 地 扩 充 拥 塞 窗 口 用 以 反 映 已 经 离 开 网 络 的 附 加 数 据 段 。 ( 4) 如 果 cwnd 和 接 收 端 的 通 知 窗 口 值 允 许 的 话 , 发 送 一 个 数 据 段 。 ( 5) 当 下 一 个 确 认 新 数 据 的 ACK 到 达 时 , 设 定 cw
20、nd 值 为 ssthresh(步骤 1 设 置 的 值 ), 这 称 作 给 窗 口 “放 气 ”。 这 个 ACK 必 须 是 步 骤 1 触 发 的 重发 引 起 的 确 认 , 重 发 之 后 一 个 RTT(在 接 收 端 有 次 序 紊 乱 的 数 据 段 的 情 况 下 ,它 可 能 一 会 儿 就 到 达 )。 另 外 , 此 ACK 应 该 确 认 丢 失 数 据 段 和 第 二 个 重 复ACK 期 间 的 数 据 段 , 如 果 它 们 一 个 也 没 有 丢 失 的 话 。 Reno 算 法 的 性 能 分 析从 Reno 运 行 机 制 中 很 容 易 看 出 , 为
21、 了 维 持 一 个 动 态 平 衡 , 必 须 周 期 性 地产 生 一 定 量 的 丢 失 , 再 加 上 AIMD 机 制 -减 少 快 , 增 长 慢 , 尤 其 是 在 大 窗 口 环境 下 , 由 于 一 个 数 据 报 的 丢 失 所 带 来 的 窗 口 缩 小 要 花 费 很 长 的 时 间 来 恢 复 ,这 样 , 带 宽 利 用 率 不 可 能 很 高 且 随 着 网 络 的 链 路 带 宽 不 断 提 升 , 这 种 弊 端 将越 来 越 明 显 。 公 平 性 方 面 , 根 据 统 计 数 据 , Reno 的 公 平 性 还 是 得 到 了 相 当 的 肯 定 ,
22、它能 够 在 较 大 的 网 络 范 围 内 理 想 地 维 持 公 平 性 原 则 。数据链路控制协议也称链路通信规程,也就是 OSI 参考模型中的数据链路层协议。链路控制协议可分为异步协议和同步协议两大类。面向字符的同步协议是最早提出的同步协议,其典型代表是 IBM 公司的二进制同步通信(Binary Synchronous Communication、BISYNC 或 BSC)协议,通常,也称该协议为基本型协议。随后,ANSI 和 ISO 都提出类似的相应标准。ISO 的标准称为数据通信系统的基本型控制过程(Basic mode control procedures for data c
23、ommunication Systems),即 ISO 1745 标准。任何链路层协议均可由链路建立、数据传输和链路拆除三部分组成。为实现建链、拆链等链路管理以及同步等各种功能,除了正常传输的数据块和报文外,还需要一些控制字符。 BSC 协议用 ASC2 或 EBCDIC 字符集定义的传输控制( TC)字符来实现相应功能。这些传输控制字符的标记、名称及 ASC2 码值和 EBCDIC 码值见表 3.1。 各传输控制字符的功能如下: SOH(Start of Head): 序始或标题开始,用于表示报文(块)的标题信息或报头的开始。 STX(Start of TEXT):文始,标志标题信息的结束和
24、报文(块)文本的开始。 ETX(End of Text): 文终,标志报文(块)文本的结束。 EOT(End of Transmission): 送毕,用以表示一个或多个文本块的结束,并拆除链路。 ENQ(Enquire):询问,用以请求远程站给出响应,响应可能包括站的身份或状态。 ACK(Acknowledge): 确认,由接收方发出一肯定确认,作为对正确接收来自发送方的报文(块)的响应。 DLE(Data Link Escape): 转义,用以修改紧跟其后的有限个字符的意义。用于在 BSC 中实现透明方式的数据传输,或者当 10 个传输控制字符不够用时提供新的转义传输控制字符。 NAK(N
25、egative Acknowledge): 否认,由接收方发出的否定确认,作为对未正确接收来自发送方的响应。 SYN(Synchronous): 同字符,在同步协议中,用以实现节点之间的字符同步,或用于在列数据传输时保持该同步。 ETB(End of Transmission Block): 块终或组终,用以表示当报文分成多个数据块时, 一个数据块的结束。BSC 协议将在链路上传输的信息分为数据报文和监控报文又分为正向监控和反向监控两种。每一种报文中至少包含一个传输控制字符,用以确定报文中信息的性质或实现某种控制作用。 数据报文和文本组成。文本是要传送的有用数据信息,而报文是与文本传送及处 数
26、据链路层图 3.5理有关的辅助信息,报头有时也右不用,对于不超过长度限制的报文可只用一个数据块作为一个传输单位。接收方对于每一个收到的数据块都要给予确认,发送方收到返回的确认后,才能发送下一个数据块。BSC 协议为数据块格式可以有 5 种,如图 3.5 所示。BSC协议中所有发送的数据均跟在至少两个 SYT 字符之后,以使接收方能实现字符同步。报头字段用以说明数据文字段的包识别符(序号)及地址。所有数据块在块终限定符(ETX 或ETB)之后不有块验字符 BCC(Block Check Charracter),BCC 可以是垂直奇偶校验或16 位 CRC,校验范围自 STX 始,至 ETX 或
27、ETB 止。当发送的报文是二进制数据而不是字符串时,二进制数据中形同传输控制字符的比特串将会引传输混乱。为使二进制数据中允许与传输控制字符相同的数据(即数据的透明性),可在各帧中真正的传输控制字符(SYN 除外)前加上 DLE 转义字符,在发送时,若文本中也出现与 DLE 字符相同的二进制比特串,则可插入一个外加的 DLE 字符加以标记。 在接收端则进行同样的检测,若发现单个的 DLE 字符,则知其后的 DLE 为数据,在进一步处理前将其中一个删去。正、反向监控报文有四种格式,如图 3-6 所示。监控报文一般由单个传输控制字符或由若干个其它字符引导的单个传输控制字符组成。引导字符统称为前缀,它
28、包含识别符(序号)、地址信息、状态信息以及其它所需的信息。ACK 和 NAK 监控报文的作用,首先作为对先前所发数据块是否正确接收的响应,因而包含识符(序号);其次,用作对选择监控信息的响应,以 ACK 表示所选站能接收数据块,而 NAK 表示不能接收。ENQ 用作轮询和选择监控报文,在多结构中,轮询或选择的站地址在 ENQ 字符前。EOT 监控报文有用以标志报文的结束,并在两站点间除逻辑链路。面向字符的同步协议的最大缺点,是它和特定的字符编码集关系过于密切,不利于兼容性。为了实现数据的透明性而采用的字符填充法,实现起来比较麻烦,且也依赖于采用的字符编码集。另外,由于 BSC 是一个半双工协议
29、,它的链路传输效率很低,即使物理连路支持全双工传输,BSC 也不能加以运用。不过,由于 BSC 协议需要的缓冲存储容量最小,因而在面向终端的网络系统中仍然广泛使用。七十年代初,IBM 公司率先提出了面向比特的同步数据链路控制规程 SDLC。随后,ANSI和 ISO 均采纳并发展了 SDLC,并分别提出了自己的标准:ANSI 的高级通信控制过程ADCCP(Advanced Data Control Procedure),ISO 的高级数据链路控制规程 HDLC。链路控制协议着重于对分段成物理块或包的数据的逻辑传输,块或包由起始标志引导并由终止标志结束,也称为帧。帧是每个控制、每个响应以及用协议传
30、输的所有信息的媒体的工具。所有面向比特的数据链路控制协议均采用统一的帧格式,不论是数据还是单独的控制信息均以帧为单位传送。 每个帧前、后均有一标志码 01111110、用作帧的起始、终止指示及帧的同步。标志码不允许在帧的内部出现,以免引起畸意。为保证标志码的唯一性但又兼顾帧内数据的透明性,可以采用“0 比特插入法”来解决。该法在发送端监视除标志码以外的所有字段,当发现有连续 5 个“1”出现 数据链路层图 3-6时,便在其后添插一个“0”,然后继续发后继的比特流。在接收端,同样监除起始标志码以外的所有字段。当连续发现 5 个“1”出现后,若其后一个比特“0”则自动删除它,以恢复原来的比特流;若
31、发现连续 6 个“1”,则可能是插入的“0” 发生差错变成的 “1”,也可能是收到了帧的终止标志码。后两种情况,可以进一步通过帧中的帧检验序列来加以区分。“0 比特插入法”原理简单,很适合于硬件实现。 在面向比特的协议的帧格式中,有一个 8 比特的控制字段,可以用它以编码方式定义丰富的控制命令和应答,相当于起到了 BSC 协议中众多传输控制字符和转义序列的功能。作为面向比特的数据链路控制协议的典型,HDLC 具有如下特点:协议不依赖于任何一种字符编码集;数据报文可透明传输,用于实现透明传输的“0 比特插入法”易于硬件实现;全双工通信,不必等待确认便可连续发送数据,有较高的数据链路传输效率;所有帧均采用 CRC 校验,对信息帧进行编号,可纺止漏收或重份,传输可靠性高;传输控制功能与处理功能分离,具有较大灵活性和较完善的控制功能。由于以上特点,目前网络设计普遍使用 HDLC 作为数据链路管制协议。