如何合理利用多个中国大陆小带宽服务器?

我们知道在中国大陆带宽单价非常昂贵,一个1Mbps 带宽的机子一年就得卖好几百人民币,这是不值当的,当然我们可以去低价漂阿里云、腾讯云的轻量服务器,99包年,但是带宽太小很难崩。

所以,我们必须构建一个能够把多个99包年云服务器带宽叠加起来的解决方案才行,否则买单台也亏,在我眼中几兆上传带宽太小了,连小水管都不是,小水管起码30上商用上行带宽,我这边本地都是拉的几条200M/200M上下行对等带宽的固定IP商业带宽。

无法榨干这些垃圾小带宽服务器的是一种技术人员的重大失误,近期入手两台服务器,一个华为云3M、一个腾讯云4M带宽的机子。

把它两个带宽叠加在一起就有7M,1080P视频是能稳定流畅看了,4M带宽单机吞吐看1080P有点够呛。

当然,我现在非常非常的气愤,因为我本来可以买到两台腾讯云4M轻量服务器的,但是我当时居然退单了想第二天再来,这波就给坑了,等下个月看有没有机会入手一台。

腾讯云这个饥饿营销,玩的可以啊,妥妥恶心人。

利用中国大陆多个小带宽机子,非常重要是多个小带宽大陆机的流控/帧控算法,对于UDP/IP类的带宽聚合是帧控算法,对于TCP/IP类的带宽聚合是流控算法。

但是我们并需要实现那么的复杂,可以直接采用 “TCP/IP”、“KCP/ENET” 之类的传输控制协议作为下层。

这可以减少我们自己需要去实现:“带宽退让”、“ARQ”、“SACK(选择确认)”、“NAK(否定应答)”、“ACK(确认应答)” 等这些机制。

带宽退让是滑块窗口与重传这部分关联的算法,目的是为了平衡链路拥塞层度,这些可以用成熟现成的控制算法来实现它们。

我们要做的轻量的控制算法,即:只需要保证帧的序及帧缓存积压的问题,就可以,另外我推荐用TCP/IP作为下一层,因为KCP这些协议不适合传输大包,它们是为了小包及时性设计的,所以可以容忍20~30%的带宽损失。

但是我们做小带宽聚合器的目的是什么?是为了提高单机可以获得最大带宽,让这些小带宽机子带宽要榨干,狠狠跑起来,而且更现实的时,这些小带宽机子总带宽大小就几Mbps 上传,你居然会上ENET、KCP这些功耗比较大的控制协议,是不是不合适。

OK,回到重点:

1、由于每个链路通路之间延迟是不同的

     所以:虽然用TCP/IP、KCP这些下层协议保证了段的连续性,但在多个链接输入帧的情况下会出现乱序的问题,如果是单个链接,直连不就好,搞这些东西干什么,搞这个东西目的就是为了榨干所有中国大陆中转机的上行带宽。

2、帧序在链路长时间工作之后,100%会出现序号回绕问题(可以参考TCP/IP、KCP协议栈是怎么处理的)

     一般按照通信行业长期测试的经验,若帧序为四个字节,产生序号回绕问题:只需要通过该公式即可确定:BOOL wraparound = (ack - seq) > (UINT32_MAX / 2)

    帧序回绕问题在接收端处理,但需要确保基本对于接受缓存挤压的帧(TCP之中为段)正确排序,这个不难处理,排序时根据这个算法判断就可以了。

但要注意一个点:

    插入算法应该要高度优化下,必须做成快速插入(来保证排序顺序),而不是很高成本的排序,在控制算法之中,由于通路之间的延迟、乱序、拥塞层度不同,可能会产生很严重的接收端积压问题,一次性积压个几百帧是一点问题都没有的。

    但积压大量的帧缓存,可能会产生很高的网络延迟,这是控制协议的弊端,但是你还真的自己好好做下控制协议,若你不在自己这层控制,让UDP/IP的应用去自己去处理这些问题,它们的传输效率就会非常慢的。

   举个小例子:QUIC/IETF HTTP3.0,如果你在你这层不控制帧序,就以上面两个机子的带宽条件,视频链接速度只有5000 ~ 6000,但是你带了控制协议,它们速度可以达到7000 ~ 10000Kbps,所以不要认为没有作用及意义。

3、连续确认

     这个简单讲讲就行了,当输入帧序为当前接收端确认帧时(注意:ACK都是预测法,即它永远ACK下一帧) 

     因为链路之间速度、延迟、拥塞的不同,可能未来的帧已经提前到达接收端,并且接收端将其缓存堆积在链上(接收方缓冲区),但需要确认的帧还没有到达,这个途中可能积压了几十、几百个帧。

    所以;你需要在确认了下个帧之后,连续确认堆积在接收方队列缓存之中的帧,以便提高网络的传输效率。

当然还有一些细节上的东西要处理,本文就不过多聊这些东西了,大体解决上面那三个就可以,对于TCP/IP的带宽聚合器;可以查阅 Rust 语言编写的开源工具:

surban/aggligator: Aggregates multiple links (TCP, Bluetooth, USB or similar) into one connection having their combined bandwidth and provides resiliency against failure of individual links. (github.com)

本人不需要这种工具,是单独做了一个UDP/IP的,但这两种实现都大同小异,中心思想都是需要一个专用控制协议来处理的,底层传输介质用TCP、还是UDP+KCP 这类都可以,当然这取决于实际的生产场景。

NETWORK UDP/IP AGGLIGATOR 猛禽宽频聚合器【鱼合掌不可兼得,但可以强行兼一下】

游戏延迟:成都移动 -(广州华为云/广州腾讯云;聚合)- 54~57 RTT

宽频吞吐:3 + 4 = 7Mbps 打满带宽

效果图(一):

效果图(二): 

效果图(三):

欲获取猛禽工具,可以在我的GITHUB上面找到我们TG群的地址,加入进来获取,目前这个工具暂时是不开源的,本文也只是大约聊聊,它是怎么实现的。 

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

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

相关文章

07节-51单片机-矩阵键盘

文章目录 1矩阵键盘原理2.扫描的概念3.弱上拉4.实战-实现矩阵键盘对应按钮按下显示对应值4.1配置代码模板 5.键盘锁 1矩阵键盘原理 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式 采用逐行或逐列的“扫描”,就可以读…

回归预测 | Matlab基于RIME-SVR霜冰算法优化支持向量机的数据多输入单输出回归预测

回归预测 | Matlab基于RIME-SVR霜冰算法优化支持向量机的数据多输入单输出回归预测 目录 回归预测 | Matlab基于RIME-SVR霜冰算法优化支持向量机的数据多输入单输出回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab基于RIME-SVR霜冰算法优化支持向量机的数…

【AI工具之Prezo如何自动生成PPT操作步骤】

先说优缺点: 最大的优点就是免费(但说实话功能和体验方面很弱)支持中文提问(最好用英文),智能生成图文(但是只能生成英文内容)可以AI生成图片,图片很精美酷炫&#xff0…

Java学习-详述main方法、可变参数、数组的工具类、二维数组

详述main方法 【1】main方法:程序的入口,在同一个类中,如果有多个方法,那么虚拟机就会识别main方法,从这个方法作为程序的入口 【2】main方法格式严格要求: public static void main(String[] args){} p…

bonding原理分析和问题排查

bonding原理 发送端: 使用网卡bond3模式(广播模式BOND_MODE_BROADCAST)将报文从两个网卡同时发出,无需修改报文。 接收端: 根据发送节点时间的链路通断状态,接收端设置一条线路为活动线,另一条…

diffusion model 简单demo

参考自: Probabilistic Diffusion Model概率扩散模型理论与完整PyTorch代码详细解读 diffusion 简单demo 扩散模型之DDPM 核心公式和逻辑 q_x 计算公式,后面会用到: 推理: 代码 import matplotlib.pyplot as plt import nump…

【devops】 阿里云挂载云盘 | 扩展系统硬盘 | 不重启服务器增加硬盘容量

扩容分区和文件系统(Linux) 文档地址 https://help.aliyun.com/zh/ecs/user-guide/extend-the-partitions-and-file-systems-of-disks-on-a-linux-instance?spm5176.smartservice_service_robot_chat_new.help.dexternal.4ac4f625Ol66kL#50541782adxmp…

C++ UML 类图介绍与设计

1 类图概述 UML(Unified Modeling Language),即统一建模语言,是用来设计软件的可视化建模语言。它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。UML从目标系统的不同角度出发,定义了用例图、类图、对象图、状态图、活动图…

高效率改写文章,一键智能改写工具有妙招

如今,写作已经成为人们日常生活中不可或缺的一部分。无论是职场人士撰写工作报告,还是专业的作者创作文章,都离不开对文字的润色和改写。然而,随着工作量与时间压力的增加,如何在保证质量的前提下提高文章改写的效率成…

关于GDAL计算图像坐标的几个问题

关于GDAL计算图像坐标的几个问题_gdal读取菱形四角点坐标-CSDN博客 这篇文章写的很好,讲清楚了图像行列号与图像点坐标(x,y)对应关系,以及图像行列号如何转为地理坐标的,转载一下做个备份。 1.关于GDAL计算图像坐标的…

数据库服务的运行与登录

打开数据库服务 数据库服务: SQL Server(MSSQLServer) 运行在服务器端的应用程序, 提供数据的存储 / 处理和事务等在使用DBMS的客户端之前必须首先打开该服务 客户端连接到服务器 关于客户端 / 服务器端的说明 客户端 : 数据库管理系统(DBMS), 应用程序服务器端 : 安装的数据…

通过本机电脑远程访问路由器loopback的ip

实验拓扑图 本机电脑增加路由信息 正常设置telnet用户,然后通过本地电脑telnet 软件ensp中的设备,尝试是否可以正常访问即可 测试通过本地电脑可以正常访问ensp里面设备的loopback的ip地址了 最重要的一点是本机需要增加一条路由route add ip mask 下…

户外旅行摄影手册,旅游摄影完全攻略

一、资料前言 本套旅游摄影资料,大小295.47M,共有9个文件。 二、资料目录 《川藏线旅游摄影》杨桦.彩印版.pdf 《户外摄影指南》(Essential.Guide.to.Outdoor.photography.amateur)影印版.pdf 《旅行摄影大师班》(英)科尼什.扫描版.PDF 《旅行摄影…

迈向智能工厂:工业互联网时代的生产革命-亿发

随着各行各业数字化转型的加速推进,企业对于数据资产高效流动的需求日益增长,工业互联网网络也在数字经济发展中扮演着愈发重要的角色。什么是智能工厂简单来说就是基于万物互联的技术基础,实现企业内部数据的自由流动,从而促进数…

【高阶数据结构】哈希表 {哈希函数和哈希冲突;哈希冲突的解决方案:开放地址法,拉链法;红黑树结构 VS 哈希结构}

一、哈希表的概念 顺序结构以及平衡树 顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系。因此在查找一个元素时,必须要经过关键码的多次比较。顺序查找时间复杂度为O(N);平衡树中为树的高度,即O(log_2 N)&#xf…

【第1节】书生·浦语大模型全链路开源开放体系

目录 1 简介2 内容(1)书生浦语大模型发展历程(2)体系(3)亮点(4)全链路体系构建a.数据b 预训练c 微调d 评测e.模型部署f.agent 智能体 3 相关论文解读4 ref 1 简介 书生浦语 InternLM…

深入理解GCC/G++在CentOS上的应用

文章目录 深入理解GCC/G在CentOS上的应用编译C和C源文件C语言编译C语言编译 编译过程的详解预处理编译汇编链接 链接动态库和静态库静态库和动态库安装静态库 结论 深入理解GCC/G在CentOS上的应用 在前文的基础上,我们已经了解了CentOS的基本特性和如何在其上安装及…

Python零基础从小白打怪升级中~~~~~~~多线程

线程安全和锁 一、全局解释器锁 首先需要明确的一点是GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念。 GIL全称global interpreter lock,全局解释器锁。 每个线程在执行的时候都需要先获取GIL,保证同一时刻只…

IDEA plugins 好用的插件集

IDEA plugins RestfulToolkit 1. 安装插件 File–>Settings --> plugins --> RestfulToolkit 2.插件有点: 2.1、帮助把项目中的 RestURL 按照项目汇总出来,找到对应URL直接在IDEA上面进行请求测试。 2.2、开发Java Web页面项目,经…

学习笔记------时序约束之时钟周期约束

本文摘自《VIVADO从此开始》高亚军 主时钟周期约束 主时钟,即从FPGA的全局时钟引脚进入的时钟或者由高速收发器输出的时钟。 对于时钟约束,有三个要素描述:时钟源,占空比和时钟周期。 单端时钟输入 这里我们新建一个工程&#x…