第二十三篇:网络拥塞了,TCP/IP如何解决的?

  1. 一.显示拥塞通知

当发生网络拥塞时,发送主机应该减少数据包的发送量。作为IP上层协议,TCP虽然也能控制网络拥塞,不过它是通过数据包的实际损坏情况来判断是否发生拥塞。然而这种方法不能在数据包损坏之前减少数据包的发送量。

为了解决这个问题,人们在IP层新增了一种使用显式拥塞通知的机制,即ECN(Explicit Configuration Notification)。

ECN为实现拥塞通知的功能,将IP首部的TOS字段置换为ENC字段,并在TCP首部的保留位追加CWR标志和ECE标志。

ECN的机制概括起来就是在发送包的IP首部中记录路由器是否遇到拥塞,并在返回包的TCP首部中通知是否发生过拥塞。拥塞检查在网络层进行,而拥塞通知则在传输层进行,这两层的互相协助实现了拥塞通知的功能。

二. 通信质量控制

1、QOS产生的背景

网络的普及和业务的多样化使得互联网流量激增,从而产生网络拥塞,增加转发时延,严重时还会产生丢包,导致业务质量下降甚至不可用。

所以,要在网络上开展这些实时性业务,就必须解决网络拥塞问题。

解决网络拥塞的最好的办法是增加网络的带宽,但从运营、维护的成本考虑,这是不现实的,最有效的解决方案就是应用一个“有保证”的策略对网络流量进行管理。

QoS技术就是在这种背景下发展起来的。QoS(Quality of Service)即服务质量,其目的是针对各种业务的不同需求,为其提供端到端的服务质量保证。

QoS是有效利用网络资源的工具,它允许不同的流量不平等的竞争网络资源,语音、视频和重要的数据应用在网络设备中可以优先得到服务。

QoS技术在当今的互联网中应用越来越多,其作用越来越重要。

2、QoS服务模型
1)Best-Effort服务模型

Best-Effort(尽力而为)是最简单的QoS服务模型,用户可以在任何时候,发出任意数量的报文,而且不需要通知网络。

提供Best-Effort服务时,网络尽最大的可能来发送报文,但对时延、丢包率等性能不提供任何保证。

Best-Effort服务模型适用于对时延、丢包率等性能要求不高的业务,是现在Internet的缺省服务模型,它适用于绝大多数网络应用,如FTP、E-Mail等。

2)IntServ服务模型

IntServ(综合服务)模型是指用户在发送报文前,需要通过信令(Signaling)向网络描述自己的流量参数,申请特定的QoS服务。

网络根据流量参数,预留资源以承诺满足该请求。在收到确认信息,确定网络已经为这个应用程序的报文预留了资源后,用户才开始发送报文。

用户发送的报文应该控制在流量参数描述的范围内。网络节点需要为每个流维护一个状态,并基于这个状态执行相应的QoS动作,来满足对用户的承诺。

IntServ模型使用了RSVP(Resource Reservation Protocol)协议作为信令,在一条已知路径的网络拓扑上预留带宽、优先级等资源,路径沿途的各网元必须为每个要求服务质量保证的数据流预留想要的资源,通过RSVP信息的预留,各网元可以判断是否有足够的资源可以使用。

只有所有的网元都给RSVP提供了足够的资源,“路径”方可建立。

3)DiffServ服务模型

DiffServ(差分服务)模型的基本原理是将网络中的流量分成多个类,每个类享受不同的处理,尤其是网络出现拥塞时不同的类会享受不同级别的处理,从而得到不同的丢包率、时延以及时延抖动。同一类的业务在网络中会被聚合起来统一发送,保证相同的时延、抖动、丢包率等QoS指标。

Diffserv模型中,业务流的分类和汇聚工作在网络边缘由边界节点完成。

边界节点可以通过多种条件(比如报文的源地址和目的地址、ToS域中的优先级、协议类型等)灵活地对报文进行分类,对不同的报文设置不同的标记字段,而其他节点只需要简单地识别报文中的这些标记,即可进行资源分配和流量控制。

与Intserv模型相比,DiffServ模型不需要信令。在DiffServ模型中,应用程序发出报文前,不需要预先向网络提出资源申请,而是通过设置报文的QoS参数信息,来告知网络节点它的QoS需求。

网络不需要为每个流维护状态,而是根据每个报文流指定的QoS参数信息来提供差分服务,即对报文的服务等级划分,有差别地进行流量控制和转发,提供端到端的QoS保证。

DiffServ模型充分考虑了IP网络本身灵活性、可扩展性强的特点,将复杂的服务质量保证通过报文自身携带的信息转换为单跳行为,从而大大减少了信令的工作,是当前网络中的主流服务模型。

3、基于DiffServ模型的QoS组成

本文介绍的QoS都是基于DiffServ服务模型的,基于Diffserv模型的QoS业务主要分为以下几大类:

① 报文分类和标记

要实现差分服务,需要首先将数据包分为不同的类别或者设置为不同的优先级。

报文分类即把数据包分为不同的类别,可以通过MQC配置中的流分类实现;

报文标记即为数据包设置不同的优先级,可以通过优先级映射和重标记优先级实现。

② 流量监管、流量整形和接口限速

流量监管和流量整形可以将业务流量限制在特定的带宽内,当业务流量超过额定带宽时,超过的流量将被丢弃或缓存。

其中,将超过的流量丢弃的技术称为流量监管,将超过的流量缓存的技术称为流量整形。

接口限速分为基于接口的流量监管和基于接口的流量整形。

③ 拥塞管理和拥塞避免

拥塞管理在网络发生拥塞时,将报文放入队列中缓存,并采取某种调度算法安排报文的转发次序;拥塞避免可以监督网络资源的使用情况,当发现拥塞有加剧的趋势时采取主动丢弃报文的策略,通过调整流量来解除网络的过载。

其中,报文分类和标记是实现差分服务的前提和基础;流量监管、流量整形、接口限速、拥塞管理和拥塞避免从不同方面对网络流量及其分配的资源实施控制,是提供差分服务的具体体现。

各种QoS技术在网络设备上的处理顺序如下图所示。

上述QoS技术在网络中的位置如下图所示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/446075.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pytorch与卷积神经网络实战笔记

课程视频链接 CNN卷积神经网络算法原理 全神经网络的整体结构 输入层(x1, x2, x3…)->隐藏层(全连接)->输出层,整体就类似于一个函数,输入x,经过函数module(x)得到输出y的过程&#xf…

笔试算法总结

文章目录 题目1题目2题目3题目4 题目1 使用 StringBuilder 模拟栈的行为&#xff0c;通过判断相邻2个字符是否相同&#xff0c;如果相同就进行删除 public class Main {public static String fun(String s) {if (s null || s.length() < 1) return s;StringBuilder builde…

闲谈Promise

预备知识 回调函数&#xff1a;当一个函数作为参数传入另一个函数中&#xff0c;并且它不会立刻执行&#xff0c;当满足一定条件之后&#xff0c;才会执行&#xff0c;这种函数称为回调函数。比如&#xff1a;定时器。异步任务&#xff1a;与之对应的概念是同步任务&#xff0…

【Axure原型分享】标签管理列表

今天和大家分享通过标签管理列表的原型模板&#xff0c;包括增删改查搜索筛选排序分页翻页等效果&#xff0c;这个模板是用中继器制作的&#xff0c;所以使用也很方便&#xff0c;初始数据我们只要在中继器表格里填写即可&#xff0c;具体效果可以观看下方视频或者打开预览地址…

Cesium.js(SuperMap iClient3D for Cesium)进行三维场景展示和图层动画

1&#xff09;&#xff1a;参考API文档&#xff1a;SuperMap iClient3D for Cesium 开发指南 2&#xff09;&#xff1a;官网示例&#xff1a;support.supermap.com.cn:8090/webgl/Cesium/examples/webgl/examples.html#layer 3&#xff09;&#xff1a;SuperMap iServer&…

电鳗带来灵感,防潮电源诞生,全打印技术的魅力

大家好&#xff01;今天来了解一项受电鳗启发的防潮完全可打印电源的研究——《A moisture-enabled fully printable power source inspired by electric eels》发表于《PNAS》。随着可穿戴电子设备的发展&#xff0c;对安全、一次性且具成本效益的电源需求大增。传统电池存在不…

LibreOffice SDK是LibreOffice软件的开发工具包

LibreOffice SDK是LibreOffice软件的开发工具包&#xff0c;它提供了一系列工具和库&#xff0c;使得开发者可以基于LibreOffice进行扩展或开发新的应用程序。以下是对LibreOffice SDK的详细介绍&#xff1a; 一、下载与安装 下载地址&#xff1a; 可以在LibreOffice的官方网站…

利用 Llama 3.1模型 + Dify开源LLM应用开发平台,在你的Windows环境中搭建一套AI工作流

文章目录 1. 什么是Ollama&#xff1f;2. 什么是Dify&#xff1f;3. 下载Ollama4. 安装Ollama5. Ollama Model library模型库6. 本地部署Llama 3.1模型7. 安装Docker Desktop8. 使用Docker-Compose部署Dify9. 注册Dify账号10. 集成本地部署的 Llama 3.1模型11. 集成智谱AI大模型…

RUM性能优化之图片加载

作者&#xff1a;三石 在现代Web开发中&#xff0c;图片作为内容表达的核心元素&#xff0c;其加载效率直接影响到页面的整体性能和用户体验。随着高清大图和动态图像的普及&#xff0c;优化图片加载变得尤为重要。RUM作为一种主动监测技术&#xff0c;能够帮助开发者从真实用户…

【CubeMLP】核心方法解读

abstract&#xff1a; 多模态情绪分析和抑郁估计是利用多模态数据预测人类心理状态的两个重要研究课题。以前的研究主要集中在开发有效的融合策略&#xff0c;以交换和整合来自不同模式的心智相关信息。一些基于mlp的技术最近在各种计算机视觉任务中取得了相当大的成功。受此启…

如何解决 Vim 中的 “E212: Can‘t open file for writing“ 错误:从编辑到权限管理(sudo)

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

C语言 | Leetcode C语言题解之第468题验证IP地址

题目&#xff1a; 题解&#xff1a; char * validIPAddress(char * queryIP) {int len strlen(queryIP);if (strchr(queryIP, .)) {// IPv4int last -1;for (int i 0; i < 4; i) {int cur -1;if (i 3) {cur len;} else {char * p strchr(queryIP last 1, .);if (p…

在Leaflet中使用divIcon进行自定义标绘实战

前言 之前在一些地理信息和旅游博主的信息介绍中&#xff0c;对于一些景点的信息时空分布。总是被他们的地图制作所深深吸引。与常规的地图文字标绘不同的是&#xff0c;在传统的地图标绘中&#xff0c;我们习惯于将文字信息直接标注到对应的位置点旁边。当然&#xff0c;这样其…

电脑快速切换IP地址命令是什么?详解与实践

有时&#xff0c;出于安全考虑或测试需要&#xff0c;我们可能需要快速切换电脑的IP地址。虽然这一过程在初学者看来可能略显复杂&#xff0c;但通过简单的命令和步骤&#xff0c; 即使是普通用户也能轻松实现。本文将详细介绍在Windows系统中快速切换IP地址的几种方法&#xf…

基于Jenkins+K8S构建DevOps自动化运维管理平台

目录 1.k8s助力DevOps在企业落地实践 1.1 传统方式部署项目为什么发布慢&#xff0c;效率低&#xff1f; 1.2 上线一个功能&#xff0c;有多少时间被浪费了&#xff1f; 1.3 如何解决发布慢&#xff0c;效率低的问题呢&#xff1f; 1.5 什么是DevOps&#xff1f; 1.5.1 敏…

潜水打捞系统助力,破解汽车打捞难题

随着人类活动的不断扩展&#xff0c;汽车落水事故频发&#xff0c;成为救援工作中的一大难题。汽车因其重量和结构特性&#xff0c;一旦沉入水体&#xff0c;打捞工作将面临巨大挑战。传统的打捞方法往往效率低下&#xff0c;且在操作过程中可能会对汽车造成进一步的损害&#…

Windows 下纯手工打造 QT 开发环境

用过 QtCreator 和 VS QT 插件&#xff0c;都觉得不是很理想。所以有了这个想法。 手工打造的 QT 的开发环境&#xff0c;是不需要安装上面两个程序的。 1、下载 vcpkg&#xff0c;编译 QT6 下载地址&#xff1a;https://github.com/microsoft/vcpkg.git 进入到 …

comfyui提示没有anything everywhere节点

错误信息说明 在使用comfyUI导入工作流的时候&#xff0c;提示没有Anything Everywhere节点 解决办法 进入到ComfyUI的custom_nodes目录下&#xff0c;执行以下命令 git clone https://github.com/chrisgoringe/cg-use-everywhere.git重启ComfyUI即可

顶会论文复现:PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

文章目录 1 资料2 我的总结3 复现源码首先你需要有gpt的api接口安装&#xff1a;数据集执行指令源码 4 结果 1 资料 我复现的源码:https://github.com/Whiffe/test_set_contamination 官网源码&#xff1a;https://github.com/tatsu-lab/test_set_contamination 论文&#x…

禁用微软的windos安全中心

目录 一、为什么禁用 二、WDControl_1.5.0程序禁用windows安全中心 步骤1--- 步骤2--- 三、禁用widows安全中心成功 一、为什么禁用 描述&#xff1a;下载第三方软件常常会收到病毒防护秒杀&#xff0c; 第1---直接无法下载 第2---提前下载在U盘解压会被干掉程序文件 …