计算机网络体系结构-质量服务

网络服务质量控制
QoS(Quality of Service,服务质量)指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术。

QoS基本测度:带宽、延迟、丢包率、可用性、稳定性

拥塞:网络或其一部分由于超载而引起性能严重下降的现象称为阻塞。
阻塞原因-资源相对不足
• 过多的突发报文
• 系统处理能力不足
• 重传处理不当
• 路由不合理

拥塞控制的目的:避免全局同步,超过崖点的吞吐量急剧下降,网络负载小于knee时,网络能及时处理到达的流量。

拥塞处理方式:①拥塞控制(对已经发生的网络过载作出反应避免拥塞)②拥塞避免(网络过载前检测和避免)

拥塞控制与资源分配:网络的关键是将其传输资源分配给用户或应用

两个端点:
①让网络来分配资源:分配资源很困难,很可能浪费资源
②让资源发送他们想要的数据:从拥塞发生中恢复,易于实现,但是可能会丢包

资源分配基本方式:
①依据处理对象(主机/路由器)②依据分配时间(传输前预留资源/传输中动态调整资源)③依据使用策略(窗口机制/依据接收者能力确定资源)

**资源分配评价标准:**①有效性(吞吐量尽量大,延迟尽量小)②公平性(合理但不一定均匀分配)

队列管理机制
①FIFO方法(缺省方式,先来先服务,队列长度有限,溢出丢弃)
②优先队列(按优先级排队,有区别处理用户需求,处理代价高于FIFO)
③随机公平队列SFQ(用hash函数将源宿地址映射到队列,hash函数需常更换)
④类别队列CBQ(将服务映射到队列,可以避免某服务完全被拒绝,类似于优先队列)
⑤加权公平队列WFQ(加权方式分配资源,可区分不同用户的流,可给一些队列高优先级)

主动队列管理(Active Queue Management,AQM),路由器中最常用的队列管理策略是“队尾丢弃”。它是一种拥塞恢复机制,能够维持Internet 的稳定运行,但是存在着满队列、死锁以及全局同步等问题。在此基础上改进的“首丢弃”和“随机丢弃”对死锁和全局同步是有效的,但没有解决持续的满队列问题。AQM 不是队列满才开始丢弃数据包,是一种主动拥塞控制机制,可以有效地解决“全局同步”问题。AQM 通常利用当前的队列长度等拥塞信息来控制中间节点队列。由于网络存在传输时间滞后,采样所得的队列长度等拥塞信息,是反映一段时间之前的网络状况。当拥塞信息被反馈至发送端时,又增加了额外的延迟时间,所以AQM存在响应相对滞后于实际网络状况的缺陷。另外AQM 还存在参数设置敏感的缺陷,在不同的网络状况很难保持其性能。为了维持队列长度稳定、减少排队时延并降低丢包率,主动队列管理总是提前丢包通知发送端降低发送速度,同样会导致中间节点的传输效率下降。可见主动队列管理是牺牲部分网络传输效率来获得低时延、队列长度稳定等性能。

为什么选择主动队列管理
• 锁定延时问题:drop-tail(队尾丢弃)允许一些流独占队列空间,锁定其他流
• 完整队列问题:drop tail可能在拥塞期间保持完整或者接近完整的队列
Lock-out问题解决:①随机丢弃②丢弃前面的③丢弃不合适的
Full Queues问题解决:①队列变满之前丢弃数据包(丢弃早期的)②预先通知发送者阻塞(RED)

WRED(加权随机早期探测)
在网络发生拥塞的时候,默认的是尾丢弃,我们不希望这样,我们总是希望先丢弃优先级低的数据包,而保证优先级高的数据包的发送,WRED是基于权重的随机早侦测,工作思想和WFQ有相同之处,因为WFQ在工作时,是依靠流量的优先级来分配相应带宽的,而WRED却是依靠流量的优先级来分配相应的丢弃几率的。

CHOKe
将新数据包与队列中的随机数据包进行比较;如果来自同一流程,则全丢弃,某则使用RED来决定新数据包的下一步动作。
这种方法可以寻找占用资源较多的流,即同时被选中两个或以上报文的概率更大。该方法针对恶意流,因此每到达一个,就丢弃两个或更多,使恶意流在队列中逐渐减少。

接纳控制
接纳控制是一个网络QoS过程,它决定了如何为具体不同需求的流分配带宽和延迟,通常以流为整体单位进行整体调节。(基于策略或基于现状)

DEC-bit(基于反馈的拥塞控制机制)
基本思想:在拥塞时路由器在数据包上设置一个位,在确认中接收端发送的中继位,发送端使用反馈来调整发送速率。
来源:信号过滤,发送方如何响应
关键问题:路由器何时、如何发送反馈

TCP阻塞控制
主机阻塞控制的线性控制模型:Xi(t+1) = ai + bi*Xi(t)

基于滑动窗口的拥塞控制
CWND的大小由TCP的拥塞控制算法决定
RWND的滑动由接收到的ACK决定

TCP的Delayed ACK机制
• 为了节约发送ACK报文所耗费的资源,数据的接收端按如下方式进行ACK报文响应:
-一般情况下延迟窗口为2,接收端收到了第2个数据报文后发送ACK报文;
-如果接收端等待的时间超过了Delayed ACK的超时阈值,接收端改为对每个收到的报文发送ACK;
-接收端发现丢包后将延迟窗口设为1,对每个到达的报文发出一个ACK,直到收到所有丢失的报文,再将延迟窗口设为2。
• Nagle算法:当数据以每次一个字节的方式进入发送方时,发送方只发送第一个字节,然后将其他的字节缓冲起来,直到送出去的那个字节被确认为止,然后将所有缓冲的字节放在一个TCP数据段中发送出去,并且开始继续缓冲字节,直到前面发送出去的字节全部被确认。(面向虚拟终端类应用)

TCP协议中的拥塞控制机制
标准TCP问题:

标准TCP将网络丢包的原因归结为拥塞,而忽略链路错误造成的丢包,这在高速网络环境中是不可取的。而传统的拥塞控制算法为了保证其公平性,采用了“加性增乘性减”(AIMD)拥塞控制思想,一旦丢包发生,窗口便被大幅度减少,这使得在存在丢包的高速环境中,即使理论带宽再大,实际带宽最终只能收敛到一个小值。
同时现代网络中间设备为解决流量突发问题(短时接收速率>发送速率),都存在较大的流量缓存功能,缓存队列的增加将导致报文RTT变大。

**TCP的拥塞控制分为两类:**①基于时延(BBR为代表) ②基于丢包(CUBIC为代表)。
1、基本概念
• 段:任意TCP报文
• 发送方最大段长(SMSS):发送方能发送的最大数据长度(不包括报头),与MTU和RMSS等因素有关
• 接收方最大段长(RMSS):接收方能接收的最大数据长度(不包括报头),这个参数在连接建立时约定,缺省为536B
• 全长段:数据长度为SMSS的报文
• 接收窗口(RWND):由接收者最新确认的窗口长度(实际的接收端缓冲长度)
• 拥塞窗口(CWND):给出当前网络可接受的最大数据量,它表达了数据发送方在收到接收方发来的ACK报文之前,可向网络发送的数据量的上限。它用来限制TCP数据发送的状态变量,使得在任意时刻有:

发送数据的序列号 ≤ 最大应答序列号 + min{CWND, RWND}

-CWND的初始上限不能超过接收方的窗口长度,但其值将随数据的发送情况使用不同的方法来调整
-CWND根据对ACK报文的接受情况进行变化,但CWND不会小于一个最大报文长度(MSS)
• 慢启动阈值(ssthresh):它决定使用何种方法来调整CWND的值,这是拥塞控制中慢启动阶段和拥塞避免阶段的分界点。
如果CWND < ssthresh,使用慢启动算法增加CWND的值,否则使用拥塞避免算法
• 飞行长度:已经发送但尚未确认的数据长度

2、慢启动与拥塞避免
• 当一个主机开始向一个TCP连接发送数据时,主机并不知道它与接收方之间的网络状态,需要对网络容量进行试探。
为了避免发送过大的报文,使得网络一开始就发送阻塞,TCP在开始数据传输时使用慢启动算法。慢启动和拥塞避免算法可用来控制TCP的飞行长度,其受到CWND和RWND的制约。
• 慢启动基本思想:主机发送了一个报文后要停下来等待应答。
每收到一个应答,CWND的值就增加一段的长度,直到CWND的值等于ssthresh的值,或网络发生了报文丢失。慢启动期间CWND的增长将随RTT呈指数级增长。初始时:

CWND = IW ≤ min{2 * SMSS, 2 * 段长}

• 当CWND ≥ ssthresh时,使用拥塞避免算法来调整CWND的值。这时用加法递增的来递增CWND,其目的是试探网络是否还有更多的容量可供使用。

CWND += SMSS * SMSS / CWND

3、快速重发和快速恢复
• TCP通常使用基于RTT的重发计时器来检查是否有报文丢失,若超时而未收到应答则要进行重发。
• 另外接收方可能收到失序的报文,这时它要返回已收到的有序报文的最大序列号,而这个应答序列号应该是已发送过的,因此发送方会收到重复的应答序列号。
• 为了提高传输效率,TCP发送方在收到重复的应答时使用快速重传算法和快速恢复算法来检测和修复丢失的数据。
• 快速重传算法要求发送方在收到3个相同的重复应答后立即启动重传,而不必等到重传计时器超时。

**高速信道问题:**信道很难保持在满负荷,另外TCP与AIMD表现出的RTT unfairness为(RTT2 / RTT1)2 - 马太效应
提高发送速率:RTT尽量小,CWND尽量大。

BIC(Binary Increase Congestion control):BIC将拥塞避免阶段的线性遍历算法改成二分搜索算法。

**CUBIC:**使用一个3次函数来确定拥塞窗口的大小,且与RTT无关。基于丢包做拥塞控制,常导致瓶颈路由器大量报文丢失。随着内存的不断降价,路由器设备的缓冲队列也会越来越大,CUBIC算法会造成更大的RTT时延!

基于时延探测的拥塞控制
• 任何时候一个全双工的TCP连接在每个方向都有一跳最慢的链路(瓶颈),它①决定该连接的最大数据交付速率;②在该点形成persistent queue,下游速率加快时队列缩短,上游速率加快时队列加长;③排队产生时延,隐藏大缓存使得丢包少但是RTT增大。
• 不管这个TCP连接由多少跳构成,以及各跳的容量如何,整个通路可看成是一个链路,具有两个限制传输性能的物理约束。

GOOGLE提出的新的拥塞控制算法:BBR拥塞控制算法
BBR对标准TCP问题的解决方式:

• 不再将丢包作为拥塞判断的一部分。TCP从SACK开始就提出将拥塞控制和选择重传机制分离,bbr也遵循了这一思想。
• 因为最优带宽和延迟无法同时测量(btlBw的测量会造成存在网络缓存增加RTT,而RTprop的测量要求网络缓存为空),所以分别估计带宽(btlBw)和延迟(RTprop),最后计算出cwnd。同时增加变量pacing rate(btlBw * 增益系数),用于控制发送端的发送速率,以解决发送端突发造成的网络排队问题。

BBR的组成
BBR算法实现上由5部分组成:
**1、即时速率的计算:**在bbr运行过程中,系统会跟踪当前为止最大的即时带宽。
**2、RTT的跟踪:**在bbr运行过程中,系统会跟踪当前为止最小RTT。
3、bbr pipe状态机的维持:bbr算法根据互联网的拥塞行为有针对性地定义了4种状态,即STARTUP,DRAIN,PROBE_BW,PROBE_RTT。bbr通过对上述计算的即时带宽bw以及rtt的持续观察,在这4个状态之间自由切换,相比之前的所有拥塞控制算法,其革命性的改进在于bbr拥塞算法不再跟踪系统的TCP拥塞状态机,而旨在用统一的方式来应对pacing_rate和cwnd的计算,不管当前TCP是处在Open状态还是处在Disorder状态,抑或已经在Recovery状态,换句话说,bbr算法感觉不到丢包,它能看到的就是bw和rtt!
**4、结果输出-pacing_rate和cwnd:**bbr的输出并不仅仅是一个cwnd,更重要的是pacing_rate。在传统意义上,cwnd是TCP拥塞控制算法的唯一输出,但是它仅仅规定了当前的TCP最多可以发送多少数据,它并没有规定怎么把这么多数据发出去。因此bbr在计算cwnd的同时,还计算了一个与之适配的pacing_rate,该pacing_rate规定cwnd指示的一窗数据的数据包之间,以多大的时间间隔发送出去。
5.其它外部机制的利用-fq,rack等:bbr之所以可以高效地运行且如此简单,是因为很多机制并不是它本身实现的,而是利用了外部的已有机制。

TIPS:
而BBR通过检测RTprop和BtlBw来实现拥塞控制。什么是RTprop呢?这是链路的物理时延,因为RTT里含有报文在路由器队列里的排队时间、ACK的延迟确认时间等。什么叫延迟确认呢?TCP每个报文必须被确认,确认动作是通过接收端发送ACK报文实现的,但由于TCP和IP头部有40个字节,如果不携带数据只为发送ACK网络效率过低,所以会让独立的ACK报文等一等,看看有没有数据发的时候顺便带给对方,或者等等看多个ACK一起发。所以,可以用下列公式表示RTT与RTprop的差别:
RTT我们可以测量得出,RTprop呢,我们只需要找到瓶颈路由器队列为空时多次RTT测量的最小值即可:
而BtlBw全称是bottleneck bandwith,即瓶颈带宽,我们可以通过测量已发送但未ACK确认的飞行中字节除以飞行时间deliveryRate来测量:
早在1979年Leonard Kleinrock就提出了第1条竖线是最好的拥塞控制点,但被Jeffrey M. Jaffe证明不可能实现,因为没有办法判断RTT变化到底是不是因为链路变化了,从而不同的设备瓶颈导致的,还是瓶颈路由器上的其他TCP连接的流量发生了大的变化。但我们有了RTprop和BtlBw后,当RTprop升高时我们便得到了BtlBw,这便找到第1条灰色竖线最好的拥塞控制点,也有了后续发送速率的依据。

BBR状态
• Startup状态:
这是bbr的加速阶段,类似于慢启动阶段,startup以指数的增益速度增加发送速率,希望快速探测到Btlbw瓶颈带宽,这里的增益系数为2/ln2。
• Drain:
DRAIN阶段存在的意义,是为了排空STARTUP阶段造成的网络缓存,使inflight大小等于BDP。在该阶段,bbr使用一个小的增益系数(STARTUP状态增益系数的倒数)计算pacing rate和cwnd,使得网络队列缓存被迅速排空。
• PROBE_BW:
该状态是BBR的一个稳定状态,BBR的大部分时间都在该状态运行,当BBR测量到瓶颈带宽和最小rtt,并且inflight等于BDP后,便开始以一个稳定的匀速维护着网络状态,偶尔小幅提速探测是否有更大带宽,偶尔小幅降速公平的让出部分带宽,即使用gain cycling方法进行带宽测试。
• PROBE_RTT:
如果BBR处于稳态且RTProp超过10秒没有降低,则进入该状态。该状态下,cwnd被设置为4个MSS,并对RTT重新测量,持续200ms,超时后,根据网络带宽是否满载决定状态切换为Startup或PROBE_BW。

BBR状态机简图
BDP带宽时延积:表示了单位时间通过能力与通过所需的时间之积,即在途的数据量,即inflight。

流的公平性控制:ProbeBW阶段使用gain循环来使大流快速向小流让出带宽,导致各个流可在几个循环周期内获得带宽公平。

流的稳定性控制:BBR将cwnd gain × BDP设为当前CWND的上限,限制过多报文的发送。如果遇到重发超时,则发送方认为所有的inflight报文丢失。这时BBR将CWND降为1,与CUBIC处理方式一致。

BBR几乎可以检测到所有的丢包了:
1).如果收到重复ACK(重复ACK,SACKed数量,SACKed最高值…),虽然TCP核心认为发生了丢包,但是不会进入PRR,BBR会不屑一顾,继续自己的策略,参见BBR引擎说明书;
2).如果真的发生了拥塞,BBR在最小RTT周期之后会发现这是真的,虽然滞后,但总比CUBIC之类滞后发现第二类缓存被填满强多了。BBR不会盲目降速,而是依然根据检测到的max-BW来,除非max-BW已经非常小!
3).如果发生监管丢包,BBR会在一段比较长的周期内检测到,它发现在这个周期内持续持有比较高的丢包率(检测到的Lost计数器偏大),且速率保持一致,那么BBR会将发送量限制在实际带宽的平均值。

BBR vs. CUBIC
• BBR的Startup与CUBIC的slow start相比,前者不受丢包或时延增加的影响(即使丢包也不离开Startup状态),因此更为鲁棒。此外,BBR是平滑地连续发送报文,而CUBIC是断续式发送,受ACK报文的限制。
• BBR比CUBIC更加保守,发现产生排队就限速,而不是等丢包了才限速。
• 由于丢包少且时延小,因此BBR比CUBIC效率更高。

Reno/CUBIC:
它们是事件驱动的!无论是丢包,还是RTT增加,都被视为一种严重的事件,这些严重的事件导致TCP拥塞控制系统在”To find current bandwidth“,”To avoid congestion“以及
”To probe more bandwidth“之间切换,最终落实下来的就是促使拥塞算法(无论Reno,Vegas还是CUBIC)调整窗口的大小。
那么谁来发现这些事件是否发生呢?答案是TCP拥塞控制状态机。拥塞控制状态机直接主导这些状态的切换,只要它发现丢包,不管是不是真的,都会拉低窗口值。所以说,Reno/CUBIC的窗口调整是被动的。
BBR:
bbr是反馈驱动的!bbr内置了自主的调速机制,不受TCP拥塞控制状态机的控制,bbr算法是自闭的,它可以自己完成VJ的所有状态探测以及切换,无需外界干涉,且对外界的干涉视而不见。
bbr周期性的试图探测是否有更多的带宽,如果有,那么就利用它,如果没有,就退回到之前的状态。所以说,bbr的窗口调整是主动的。

全局控制模型
**IntServ集成服务:**面向传输路径,引入了虚拟连接的概念。带宽资源必须经过显示的分配和管理才能满足应用的服务质量需要:因此有资源预留和准入控制。

通信一般从功能角度可以分为两大类:有时延要求(视频通信)、无时延要求

基于流:端到端的质量服务保证RSVP(带宽时延抖动有量化规定)
基于相关状态:可控负载型服务(负载不会超过token)

**RSVP资源预留协议:**是一种用于互联网上质量整合服务的协议。RSVP协议允许主机在网络上请求特殊服务质量用于特殊应用程序数据流的传输。路由器也使用RSVP发送服务质量(QOS)请求给所有结点(沿着流路径)并建立和维持这种状态以提供请求服务。通常RSVP请求将会引起每个节点数据路径上的资源预留。

集成服务的局限性
• 基于流的RSVP资源预留、调度处理以及缓冲区管理有利于提供QoS保证,但使系统开销过高,对于大型网络存在可扩展性问题和鲁棒性问题。
• 目前只有少量主机支持RSVP信令,大量现有的应用不支持,推广困难。
• 提供QoS保证的IntServ具有某种面向连接的特性,而IP网络的发展仍不具有面向连接的特性。
• 必要的政策控制(如AAA:认证、授权、记账)和pricing机制尚处于发展阶段,无法应用。
• 目前主要用作为MPLS的信令协议,支持流量工程和带QoS的LSP建立。

**DiffServ区分服务:**通过服务类别体现网络服务质量的差别,将用户流按服务类别聚类,以降低管理开销。
-区分服务是一种面向大规模网络的Class-Of-Service机制,用户数据可以在进入网络前提出自己的传输质量要求,网络服务提供者也可以提出可提供的服务质量(和代价)供用户选择。
-DS为NSP提供一种框架,使其可按各个用户所需的不同性能和价格来向他们提供不同服务。

**区分服务体系结构分层:**DS domain(管理者)和DS region(不同子网)
换管理者后,金牌银牌可能是不一样的,所以需要打通,是加钱换金牌服务,还是降级为银牌服务。

**区分服务体系结构基本模型:**①在网络边界对IP报头设置不同比特;②网络边缘节点根据这些比特对报文进行分类和调节,并指派给一个行为聚合(BA)。③每个行为聚合用一个DS CodePoint标识,这样报文在网络中进行转发时,要按其DSCP中定义的PHB进行处理。

补充:
BIC算法
BIC算法对窗口可能的最大值进行二分查找,它基于以下的事实:
1.如果发生丢包的时候,窗口的大小是W1,那么要保持线路满载却不丢包,实际的窗口最大值应该在W1以下;
2.如果检测到发生丢包,并且已经将窗口乘性减到了W2,那么实际的窗口值应该在W2以上。
因此,在TCP快速恢复阶段过去之后,便开始在W2~W1这个区间内进行二分搜索,寻找窗口的实际最大值。于是定义W1为Wmax,定义W2为Wmin。
以上说的是”道“,接下来我们看一下”术“,即如何驱动整个二分搜索的过程,非常简单!采用ACK驱动:每收到一个ACK的时候,便将窗口设置到Wmax和Wmin的中点,一直持续到接近Wmax。

CUBIC整体架构调用的逻辑如下:

  1. 连接每收到一个ack,则调用tcp_ack
  2. tcp_ack会调用bictcp_acked,用来更新cnt和delayed_ack(用来消除delay包的影响)
  3. tcp_ack会调用bictcp_cong_avoid,这是分两种情况:
    (1)snd_cwnd小于慢启动阈值,处于慢启动阶段,则调用tcp_slow_start
    (2)snd_cwnd大于慢启动阈值,处于拥塞避免阶段,则调用bictcp_update来更新bictcp,再调用tcp_cong_avoid_ai
  4. tcp_ack中如果检测到丢包,进入拥塞处理阶段,则调用bictcp_recalc_ssthresh来更新慢启动阈值
  5. tcp_ack中完成丢包重传后,退出拥塞处理阶段,则调用bictcp_undo_cwnd来更新snd_cwnd

CUBIC在设计上简化了BIC-TCP的窗口调整算法,在BIC-TCP的窗口调整中会出现一个凹和凸(这里的凹和凸指的是数学意义上的凹和凸,凹函数/凸函数)的增长曲线,CUBIC使用了一个三次函数(即一个立方函数),在三次函数曲线中同样存在一个凹和凸的部分,该曲线形状和BIC-TCP的曲线图十分相似,于是该部分取代BIC-TCP的增长曲线。另外,CUBIC中最关键的点在于它的窗口增长函数仅仅取决于连续的两次拥塞事件的时间间隔值,从而窗口增长完全独立于网络的时延RTT,之前讲述过的HSTCP存在严重的RTT不公平性,而CUBIC的RTT独立性质使得CUBIC能够在多条共享瓶颈链路的TCP连接之间保持良好的RRTT公平性。

来看下具体细节:当某次拥塞事件发生时,Wmax设置为此时发生拥塞时的窗口值,然后把窗口进行乘法减小,乘法减小因子设为β,当从快速恢复阶段退出然后进入到拥塞避免阶段,此时CUBIC的窗口增长开始按照“凹”式增长曲线进行增长,该过程一直持续直到窗口再次增长到Wmax,紧接着,该函数转入“凸”式增长阶段。该方式的增长可以使得窗口一直维持在Wmax附近,从而可以达到网络带宽的高利用率和协议本身的稳定性。
窗口的增长函数如下:W(t) = C * (t-K)3 + Wmax, 其中C和β为常量。
t为当前时间距上一次窗口减小的时间差,而K就代表该函数从W增长到Wmax的时间周期,。
当收到ACK后,CUBIC计算利用该算法计算下一个RTT内的窗口增长速度,即计算W(t+RTT),该值将作为cwnd的目标值,根据cwnd的大小,CUBIC将进入三种不同模式,如果cwnd会小于在标准TCP下经过上次拥塞之后的时刻t窗口将会达到的值(该值是通过标准TCP的窗口增长函数计算出来的),那么CUBIC就处于标准TCP模式,如果小于Wmax,那么位于凹阶段的,如果大于Wmax,那么处于凸阶段。

Hop-by-hop transport
逐跃传输是控制网络中数据流的原则。使用按跃点传输,数据块以存储和转发的方式从节点转发到节点。
由于按跃点传输不仅涉及源节点和目标节点,还涉及部分或所有中间节点,因此即使源节点和目标之间的路径在通信期间未永久连接,也允许转发数据。
但是,端到端原则主张,除非实现按跃得传输实现更好的性能,否则应端到端地实施传输控制。此外,逐跃传输要求在中间节点上提供每流状态信息,这限制了其可伸缩性。这就是为什么现在几乎所有的通信都由端到端传输协议(如TCP)控制的原因之一。
目前在稀疏移动网络领域的研究正在考虑对仅间歇性提供端到端连接的应用方案进行跳点传输,因为在这种情况下,按跳次传输可以带来可观的性能提升。

TOS(type of service)
服务类型(TOS)(8 bit)字段包括一个3 bit的优先权子字段(取值可以从000-111所有值),4 bit的TO S子字段和1 bit未用位但必须置0。4 bit的TO S分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。4 bit中只能置其中1 bit。如果所有4 bit均为0,那么就意味着是一般服务。
TOS常用来做QOS,用于在数据传输过程中的质量保证。说通俗一点,路窄、车多,所以对车标出优先级,有些车先走,有些车后走,有些车不让走。路由器跟交警一样,指挥交通,如何操作,取决事先确定的策略。对于终端而言(比如电脑),已经收到报文,所以就不会关心这个字段。

**CoS与QoS不同:**QoS根据带宽或者传输时间(如带宽优先级或流量整形)来划分服务等级,而CoS则是利用流量的传输优先级。支持IP的帧中继和 ATM网络可以使用户充分地利用QoS和CoS技术所带来的好处。通过CoS,用户可以实现穿过整个网络的端到端的优先级分配和传输。对于专用网络来说,由于服务提供商拥有整个网络,因此可以保证整个网络的优先级实施。

**CoS的工作过程如下:**首先,在每个连接的终端,CoS根据各种应用的需要为每个IP数据分组头设置区别服务Diff-Serv代码,也就是为数据分组设置优先级。网络数据的管理由用户来完成,Diff-Serv只是用来对数据进行划分优先级的协议。根据用户网络的不同,经过了优先级划分的IP分组被封装成帧中继或者ATM信元,并在用户的网络上传输。数据穿过用户网络后到达入口交换机,在那里帧中继或ATM信元被解封成为下行IP分组。入口交换机根据用户流量的需要测量下行数据流量,并根据不同流量类型的优先级以适当的顺序组装这些数据分组。之后,数据被包裹到多协议标签交换MPLS分组中,在运行MPLS的核心网络中传输。核心网络中的交换机可以保证数据的优先级服务并最终将数据转送给出口交换机,出口交换机再将MPLS分组解包成IP分组。在用户的出口接口处,IP分组按照最初的顺序重新调整后被封装成帧中继或者 ATM信元,信元通过回路最后传输到用户的设备。用户设备将分组再转换成IP数据并根据它们的优先级发送出去。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值