改进"尽最大努力交付"的服务

网络层的作用就是负责在不同的网段尽力转发数据包,但是负责中专数据包的路由器并不关心数据包的内容和优先顺序。而是先到达的数据包先处理,后到达的数据包排队等待处理,路由器处理不过来就丢弃。

但是,有的在互联网上传输的音频视频数据就应该优先传输,这就要求要改进网络层的功能,即改进网络层 "尽最大努力交付" 的服务,以保证着急的数据优先传输。

1.1.使因特网提供质量保证的服务

  • 服务质量 QoS 是服务性能的总效果,此效果决定了一个用户对服务的满意程度。因此在最简单的意义上,有服务质量的服务就是能够满足用户的应用需求的服务。
  • 服务质量可用若干基本的性能指标来描述,包括可用性、差错率、响应时间、吞吐量、分组丢失率、连接建立时间、故障检测和改正时间等。服务提供者可向其用户保证某一种等级的服务质量。

1.2.改善的方面

主机 H1 和 H2 分别向主机 H3 和 H4 发送数据可通过以下方式实现流量控制:

  • 为数据分组打上标记:

需要给不同性质的分组打上不同的标记。当 H1 和 H2 的分组进入 R1 时, R1 应能识别实时数据分组,并使这些分组以高优先级进入输出队列,先进行传输,而仅在队列有多余空间时才准许低优先级的 FTP 数据分组进入。

即1.5Mb/s带宽的链路优先使用1Mb/s带宽传输实时音频数据,满足它的传输需求,剩下的0.5Mb/s带宽再用来传输优先级低的FTP文件数据。这样FTP文件数据的传输带宽最多只能占到0.5Mb/s,以此优先保证实时音频数据的传输带宽需要。

  • 为路由器增加分类机制:

应当使路由器增加分类(classification)机制,即路由器根据某些准则对输入分组进行分类,然后对不同类别的通信量给予不同的优先级。

例如,在路由器上设置只要遇到 源 / 目标 地址为某个地址的就优先传输。这样即使数据包没有设置优先级,路由器通过识别数据包的 源/目标 地址也能判断优先顺序。

  • 对数据流进行通信量的管制(policing):

路由器应能将对数据流进行通信量的管制(policing),使该数据流不影响其他正常数据流在网络中通过。例如,可将 H1 的数据率限定为 1 Mb/s。R1 不停地监视 H1 的数据率。只要其数据率超过规定的 1 Mb/s,R1 就将其中的某些分组丢弃。

比如:限定传输音频数据的带宽为1Mb/s,如果传输某一音频数据需要的带宽为1.2Mb/s那么路由器丢弃多于1Mb/s的0.2Mb/s带宽传输的数据包。

  • 在路由器中再增加调度机制:

应在路由器中再增加调度(scheduling)机制。利用调度功能给实时音频分配 1.0 Mb/s 的带宽,给传送FTP文件数据分配 0.5 Mb/s 的带宽(相当于在带宽为 1.5 Mb/s 的链路中划分出两个逻辑链路,彼此互不干扰),因而对这两种应用都有相应的服务质量保证。

  • 在路由器中再增加呼叫接纳机制:

总数据率已超过了 1.5 Mb/s 链路的带宽。比较合理的做法是让一个数据流通过 1.5 Mb/s 的链路,而阻止另一个数据流的通过。这就需要呼叫接纳(call admission)机制。数据流要预先声明所需的服务质量。

比如:带宽为1.5Mb/s的链路,先对带宽需求为1Mb/s的第一个数据进行传输。随后路由器收到带宽需求也为1Mb/s的第二个数据传输请求,路由器一看剩下的0.5Mb/s带宽不能满足第二个数据传输的需求,于是路由器拒绝传输第二个数据。

改进"尽最大努力交付"的服务的更多相关文章

  1. QNJR-GROUP/EasyTransaction: 依赖于Spring的一个柔性事务实现,包含 TCC事务,补偿事务,基于消息的最终一致性事务,基于消息的最大努力交付事务交付QNJR-GROUP/EasyTransaction: 依赖于Spring的一个柔性事务实现,包含 TCC事务,补偿事务,基于消息的最终一致性事务,基于消息的最大努力交付事务交付

    QNJR-GROUP/EasyTransaction: 依赖于Spring的一个柔性事务实现,包含 TCC事务,补偿事务,基于消息的最终一致性事务,基于消息的最大努力交付事务交付 大规模SOA系统的分 ...

  2. kubernetes实战-交付dubbo服务到k8s集群(四)使用blue ocean流水线构建dubbo-demo-service

    使用jenkins创建一个新的项目:dubbo-demo,选择流水线构建 勾选保存构建历史和指定项目为参数化构建项目: 添加构建参数:以下配置项,是王导根据多年生产经验总结出来的甩锅大法: 除了bas ...

  3. kubernetes实战-交付dubbo服务到k8s集群(一)准备工作

    本次交付的服务架构图:因为zookeeper属于有状态服务,不建议将有状态服务,交付到k8s,如mysql,zk等. 首先部署zk集群:zk是java服务,需要依赖jdk,jdk请自行下载: 集群分布 ...

  4. 改进基于Boost.Asio的聊天服务

    Boost.Asio是个非常易用的C++异步网络库,官方文档中一个示例是聊天服务,分为chat_message.chat_client.chat_server三个部分.chat_server的启动代码 ...

  5. kubernetes实战-交付dubbo服务到k8s集群(六)使用blue ocean流水线构建dubbo-consumer服务

    我们这里的dubbo-consumer是dubbo-demo-service的消费者: 我们之前已经在jenkins配置好了流水线,只需要填写参数就行了. 由于dubbo-consumer用的gite ...

  6. 实战交付一套dubbo微服务到k8s集群(7)之交付dubbo服务的消费者集群到K8S

    构建dubbo-demo-consumer,可以使用和dubbo-demo-service的流水线来构建 1.登录jenkins构建dubbo-demo-consumer 2.填写构建dubbo-de ...

  7. kubernetes实战-交付dubbo服务到k8s集群(五)交付dubbo-monitor监控服务到k8s

    首先下载 dubbo-monitor源码包7-200 dubbo-monitor是监控zookeeper状态的一个服务,另外还有dubbo-admin,效果一样,感兴趣的可以自己研究一下. # cd ...

  8. kubernetes实战-交付dubbo服务到k8s集群(三)安装配置maven和java运行时环境的底包镜像

    maven 官方地址: 官方地址 下载maven,shdd7-200 # cd /opt/src # wget https://archive.apache.org/dist/maven/maven- ...

  9. kubernetes实战-交付dubbo服务到k8s集群(二)交付jenkins到k8s集群

    首先下载jenkins镜像并上传到我们自己的私有仓库:7-200 # docker pull jenkins/jenkins:2.190.3 # docker tag 22b8b9a84dbe har ...

随机推荐

  1. USB Reverse Tether (a dirty solution)

    Tether your android phone to your PC using USB cable could share your 3g Internet connection with PC ...

  2. Hibernate一级缓存Session和对象的状态

    建议看原文:https://blog.csdn.net/qq_42402854/article/details/81461496 一.session简介        首先,SessionFactor ...

  3. 吴裕雄--天生自然C语言开发:字符串

    ] = {'H', 'e', 'l', 'l', 'o', '\0'}; char greeting[] = "Hello"; #include <stdio.h> i ...

  4. LeetCode No.100,101,102

    No.100 IsSameTree 相同的树 题目 给定两个二叉树,编写一个函数来检验它们是否相同. 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的. 示例 输入: 1 1 / \ ...

  5. day41-进程-管道

    #1.管道Pipe:双向通信: from multiprocessing import Pipe p1,p2 = Pipe() p1.send('hello') print(p2.recv()) p2 ...

  6. ssh 怎样以root用户登录

    #sudo vim /etc/ssh/sshd_config 找到并用#注释掉这行:PermitRootLogin prohibit-password 新建一行 添加:PermitRootLogin ...

  7. 次小生成树题(k) poj1679The Unique MST

    http://poj.org/problem?id=1679 #include<iostream> #include<vector> #include<cstdio> ...

  8. 渗透利器-BadUSB 控制外网主机详解 Teensy2.0++

    准备工作 一块 Teensy2.0++ 的板子(淘宝一搜就有) Arduino编译器 1.8.7版本下载连接:arduino下载地址 Teensy插件 下载连接:Teensy下载地址 [外链图片转存失 ...

  9. android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码

    Android精选源码 android模仿支付宝app"记账本"模块源码 android一个超轻量级剪贴板历史记录管理软件源码 android模仿QQ拖动红点消失动画效果源码 展示 ...

  10. 基于ci框架 修改出来了一个带农历的万年历。

    1这里没有写model:代码一看就懂,没什么负杂地方,就是麻烦一点. 直接control模块的代码: <?php if ( ! defined('BASEPATH')) exit('No dir ...