计算机网络技术与服务/服务质量
服务质量 是试图 [1] 保证针对生成非弹性流量的多媒体网络应用程序的数据包延迟和抖动[2] 的特定要求的一组技术。
- 主要方法
已经为服务质量提出了三种方法
- 综合服务 (IntServ):它要求对网络基础设施进行根本性的改变,以便应用程序可以预留端到端的带宽→ 主机和路由器中的新复杂软件;
- 差异化服务 (DiffServ):它对网络基础设施的要求较少;
- 自由放任:谁关心延迟和服务质量,网络永远不会拥塞→ 应用程序层的所有复杂性。
- 需要数据包标记才能让路由器区分不同类别;以及新的路由器策略来相应地处理数据包。
- 为一类提供保护(隔离)以防止其他类别。
- 在提供隔离的同时,最好尽可能有效地使用资源。
- 流通过呼叫接入声明其需求,然后网络可能会阻止呼叫(例如,忙音),如果它不能满足需求。
调度机制的目标是管理传入数据包的优先级。
它易于实现,并且只有在存在复杂的 丢弃策略 时才有效
- 尾部丢弃:总是丢弃到达的数据包;
- 随机:随机丢弃队列中的一个数据包;
- 优先级:丢弃最低优先级类别的数据包。
每个类别都有一个缓冲区可用,并且始终为最高优先级类别的数据包提供服务。
它不提供隔离,并且可能会导致饥饿:低优先级缓冲区中的数据包永远不会得到服务,因为高优先级数据包不断到达。此外,如果高优先级队列暂时为空,允许开始传输低优先级队列中的数据包,但高优先级数据包在传输开始后立即到达,则后者将不得不等待传输结束,尤其是在数据包很长的情况下→ 引入传输延迟。
它循环扫描类别队列,为每个类别提供服务(如果可用)。
它提供了隔离,而且很公平,但它不提供优先级。
它通过将轮询调度与优先级调度相结合来概括轮询调度。
每个类别在每个周期中获得加权的服务量,并且类别 的带宽 权重为 由以下公式给出(空队列的权重为零)
但是,这种解决方案的可扩展性不是很好,因为该公式涉及浮点运算,需要为每个数据包计算。
监管机制的目标是限制流量,使其不超过已声明的参数,例如
- (长期)平均速率:每单位时间可以发送多少个数据包;
- 峰值速率:以每分钟数据包数衡量;
- (最大)突发大小:连续发送的最大数据包数(没有间歇性空闲)。
令牌桶 是用于将输入限制为指定突发大小和平均速率的技术
- 一个桶可以容纳 个令牌;
- 令牌以 个令牌/秒的速度生成,除非桶已满;
- 在长度为 的时间段内,允许通过的包数量小于等于 。
- 资源预留
本质上,主机请求一个需要一些资源的服务(路径消息):如果网络能够提供此服务,则将为用户提供服务,否则将不提供服务(预留消息)。
资源预留是 IP 中没有的原生功能。
- 呼叫接入
到达的会话使用资源预留协议(RSVP)信令协议来声明
- R-spec:它定义了请求的服务质量;
- T-spec:它定义了流量特性。
接收方,而不是发送方,指定资源预留。
这绝对不是一个可扩展的解决方案。它仍然存在主要问题,目前没有更好的理由去实现 IntServ。
区分服务(DiffServ)是 IETF 提出的一个用于服务质量的架构:它将复杂性(桶和缓冲区)从网络核心移动到边缘路由器(或主机)→ 提高可扩展性。
DiffServ 架构由两个主要组件组成,它们执行每流流量管理
- 边缘路由器:它们将数据包标记为符合配置文件(高优先级语音流量)或不符合配置文件(低优先级数据流量);
- 核心路由器:它们根据边缘的标记执行缓冲和调度,优先处理符合配置文件的数据包。
标记由边缘路由器在区分服务代码点(DSCP)字段中执行,该字段位于 IPv4 头部的“服务类型”字段中的前 6 位,以及 IPv6 的“优先级”字段中。
最好让源在应用层执行标记,因为只有源才能准确地知道流量类型(语音流量或数据流量),但是大多数用户会将所有数据包声明为高优先级,因为他们不会诚实→标记需要由提供商控制的网关执行。但是,一些研究发现,由于加密流量等原因,路由器最多只能识别 20-30% 的流量→ 通过将 PC 连接到一个端口,将电话连接到另一个端口,可以简化路由器的区分,这样路由器就可以根据输入端口标记流量。
正在开发一些每跳行为(PHB)
- 快速转发:某类数据包的发送速率等于或超过指定的速率;
- 保证转发:四类流量:每类流量都保证最小的带宽,以及三个丢弃优先级分区。
PHB 指定要提供的服务,而不是如何实现这些服务。