当前位置: 首页 > news >正文

如何绕开运营商的 QoS 限制

运营商针对 UDP 进行限制,这是 QUIC 以及类似 UDP-Based 协议的推广阻力之一,上了线很多问题,丢包,慢等的问题严重增加运维,运营成本。

按照运营商五元组 QoS 这种简单粗暴不惹事的原则,只要换一个端口就可绕开限制。很多 UDP 服务,用久了就慢,往往重启一下就好了,大概就是这原因,我不是运营商,所以不能确定。

此外,若限制单 IP 或源 IP/目标 IP 二元组,考虑到 NAT,可能引起用户投诉,所以如果要限制 IP 二元组,一般发生在 NAT 之前。

千万不要觉得运营商在公网大流量下解析 TCP,UDP 报头是什么难事,TCP 和 UDP 报头均将两个端口号放在前 32 位,解析两个协议可用同一套代码,从固定位置取值 hash 即可。如果 TCP 当初将端口号安排在报头变长部分,或者干脆和 payload 一起加密,就真没法解析了,运营商就没办法将数据包映射到流。但这也损害了端主机的分层模型-必须在解密后才能解复用(密钥从何协商而来?),或至少要先 “理解” 上层逻辑,从 TLV 中解出端口…

UDP-Based 协议的优势是可随便换端口,可这么好的特性往往大家都不用,偏偏把 UDP 视作 “连接”。QUIC 头有个 Connection ID 字段,这个才标识 “连接”,UDP packet 只是一个箱子,所以 QUIC 可以通过不断换端口来避开 QoS 限制。若是自研协议,可以学 QUIC 的样子换端口,加个 “会话层” 而已。

我此前的经验,换端口有时没有效果有时有,限速发生在不同位置效果不同。举个例子,如果运营商对你的流量做了 NAT,且在 NAT 之前针对你的源 IP/目标 IP 二元组限制,那换端口也没用,但在 NAT 之后,多 inner IP 共享少得多的 outer IP,典型的 NAPT 场景,运营商一般不会对 IP 二元组进行限制以免误伤招致投诉甚至客户流失,这种情况下,你换端口,基本上就绕过了。

此外,IPv6 可能还不太一样,虽然 IPv6 号称可以点到点,但同时也可以更精细定位到谁是谁。

在 QoS 限制五元组之外,运营商还可能针对目标端口进行限制。由于 UDP 无连接,易打洞的特点,在公网私搭服务器是相对容易的,但凡运营商发现有大流量发向同一端口,可能就会限制了。关于目标端口要不要换的问题,能换就换。
我倾向于在传输层以上实现自己的换端口协议,无论换源端口还是换目标端口,就像 QUIC 那样。

再看 TCP。

TCP 自带拥塞控制,sender 发太猛会丢包,丢包会乘法比例减少 cwnd,似乎不需要额外 QoS 限制。但运营商的事该做还得做,且谁也不能保证 sender 的 TCP 实现一定标准,现在有很多魔改,如一个报文发两遍,所谓 FEC 就是这样跟运营商对着干,抢带宽。

运营商 QoS 手段很简单,跟 UDP 一样,直接针对元组限速或丢包(也可能是管理员疏忽或懒惰,加上的限制策略忘删了)。应对方案也一样,断开重连,换个端口。但由于很多应用都没断点续传,TCP 重连成本很高,虽有 fastopen 新特性,但运营商设备往往不支持。

但可构建 TCP 隧道,实现类似直播的延时 buffer,断点续传,通过这个方法重连 TCP 隧道,达到换端口的目的。或构建多条隧道实现平滑切端口。

TCP 四次挥手太昂贵,Time-Wait 没现实意义,为降低 TCP 断连成本,选择 RST 而不是优雅断开是高尚的。

TCP 为闭环,处理 SYN/FIN 状态机最麻烦,如果经常和 TCP 打交道,80%+ 的问题都和连接管理相关,但 TCP 连接管理标准中想避开的问题发生概率极低。不为小概率事件付出太多,这是 RST 断连的依据。fastopen 运营商不支持也没办法,但还是要试一下 SYN 报文携带一些数据能不能过去,我用该手段做过一个敲门方案,完全可以通过(但不能保证所有线路都可通过),如果对端是自己的,那就收了,省掉握手开销。

换端口,RST 重连,SYN 捎带,这些都是简单常见的绕开限制的方法,至于别的一些奇技淫巧,参考 TCP 不可靠传输 和 假 TCP。

浙江温州皮鞋湿,下雨进水不会胖。

相关文章:

如何绕开运营商的 QoS 限制

运营商针对 UDP 进行限制,这是 QUIC 以及类似 UDP-Based 协议的推广阻力之一,上了线很多问题,丢包,慢等的问题严重增加运维,运营成本。 按照运营商五元组 QoS 这种简单粗暴不惹事的原则,只要换一个端口就可…...

C#基础教程22 异常处理

文章目录 C# 异常处理语法C# 中的异常类异常类 描述异常处理创建用户自定义异常C# 异常处理 异常是在程序执行期间出现的问题。C# 中的异常是对程序运行时出现的特殊情况的一种响应,比如尝试除以零。 异常提供了一种把程序控制权从某个部分转移到另一个部分的方式。C# 异常处理…...

java八股文--java基础

java基础1.什么是面向对象,谈谈对面向对象的理解2.JDK JRE JVM的区别与联系3.和equals4.hashCode与equals5.String StringBuffer StringBuilder的区别6.重载和重写的区别7.接口和抽象类8.List和Set的区别9.ArrayList和LinkedList10.HashMap和HashTable的区别&#x…...

2022年全国职业院校技能大赛(中职组)网络安全竞赛试题A模块第四套解析(详细)

2022年全国职业院校技能大赛(中职组) 网络安全竞赛试题 (4) (总分100分) 赛题说明 一、竞赛项目简介 “网络安全”竞赛共分A.基础设施设置与安全加固;B.网络安全事件响应、数字取证调查和应用安全;C.CTF夺旗-攻击;D.CTF夺旗-防御等四个模块。根据比赛实际情况,竞…...

【Spark】spark使用jdbc连接带有kerberos认证的hive jdbc

背景 这个需求就是spark不通过spark-hive的方式访问hive数据,而是通过spark读取hive jdbc的方式访问hive数据,因为这个hive有kerberos认证,在网上也不是很容易搜索到这样的操作案例。不多bb,直接上教程。 准备工作 准备一个hiv…...

【Maven】项目中pom.xml坐标定义以及pom基本配置

目录 一、pom.xml坐标定义 二、pom 基本配置 一、pom.xml坐标定义 在 pom.xml 中定义坐标&#xff0c;内容包括&#xff1a;groupId、artifactId、version&#xff0c;详细内容如下&#xff1a; <!--项目名称&#xff0c;定义为组织名项目名&#xff0c;类似包名-->&l…...

Linux GCC 编译详解

文章目录一、GCC 编译器简介二、GCC 工作流编程语言的发展GCC 工作流程gcc 和 g 的区别三、使用 GCC 编译GCC 编译格式GCC 编译流程多个源文件编译一、GCC 编译器简介 首先&#xff0c;什么是编译器呢&#xff1f; 我们可以使用编辑器&#xff08;如 linux 下的 vi、windows 下…...

谁说程序员不懂了浪费,女神节安排

Python的PyQt框架的使用一、前言二、女神节文案三、浪漫的代码四、官宣文案一、前言 个人主页: ζ小菜鸡大家好&#xff0c;我是ζ小菜鸡&#xff0c;特在这个特殊的日子献上此文&#xff0c;希望小伙伴们能讨自己的女神欢心。 二、女神节文案 1.生活一半是柴米油盐&#xff0c…...

上市公司管理层短视指标(2007-2020)

1、数据说明&#xff1a;将研发⽀出的减少量&#xff08;∆R&D&#xff09;作为管理层短视⾏为的度量指标&#xff0c;即∆R&D为公司t年的研发⽀出减去t-1年的研发⽀出并除以t-1年末的总资产再乘以100。2、数据来源&#xff1a;自主整理3、时间跨度&#xff1a;2007-20…...

IDDPM 和 DDIM 对比

IDDPM 和 DDPM 对比IDDPMDDIMIDDPM IDDPM&#xff1a;Improved Denoising diffusion probabilistic models learning Σθ\Sigma_{\theta}Σθ​&#xff0c; 即Σθ(xt,t)exp⁡(vlog⁡βt(1−v)log⁡β~t)\Sigma_{\theta}\left(x_{t}, t\right)\exp \left(v \log \beta_{t}(1…...

链表OJ题(上)

✅每日一练&#xff1a;876. 链表的中间结点 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 定义快慢指针&#xff0c;让快指针走2步&#xff0c;慢指针走1步&#xff0c;当fast或者fast.next为空时&#xff0c;走完链表&#xff0c;此时slow就是中间位置 pub…...

【题解】百度2021校招Web前端工程师笔试卷(第一批):单选题、多选题

题目来源&#xff1a;牛客网公司真题_免费模拟题库_企业面试|笔试真题 (nowcoder.com) 若有错误请指正&#xff01; 单选题 1 某主机的 IP 地址为 212.212.77.55&#xff0c;子网掩码为 255.255.252.0。若该主机向其所在子网发送广播分组&#xff0c;则目的地址可以是&…...

论文解读:SuperPoint: Self-Supervised Interest Point Detection and Description

发表时间: 2018年 项目地址&#xff1a;https://arxiv.org/abs/1712.07629 论文地址&#xff1a;https://github.com/magicleap/SuperPointPretrainedNetwork 本文提出了一种用于训练计算机视觉中大量多视点几何问题的兴趣点检测器和描述符的自监督框架。与patch-based的神经网…...

游戏玩的多,陪玩你了解的多吗?用Python来采集陪玩数据,看看行情和美照

前言 (&#xff61;&#xff65;∀&#xff65;)&#xff89;&#xff9e;嗨 大家好 现在应该每个人都玩过游戏吧&#xff0c;有些的上瘾&#xff0c;天天玩停不下来&#xff0c;有些的倒是没啥感觉 有游戏就肯定有陪玩啊&#xff0c;毕竟当朋友忙的时候&#xff0c;自己一个…...

React框架创建项目详细流程-项目的基本配置-项目的代码规范

文章目录React创建项目流程与规范项目规范项目配置目录结构样式重置Router配置Redux状态管理axios配置React创建项目流程与规范 项目规范 项目规范: 在项目中都会有一些开发规范和代码风格, 下面介绍一下我采用的规范与风格 文件夹、文件名称统一小写、多个单词以连接符(-)连…...

nnunet入门之一 (CT图像分割)

目录安装环境数据处理预处理训练测试MIC-DKFZ/nnUNet 选择Linux环境运行该项目&#xff0c;Windows环境需要更改较多的参数&#xff0c;暂不支持。 安装环境 安装cuda, cudnn&#xff0c;已安装的检测cuda版本 检测cuda版本&#xff1a; nvcc -v cd /usr/local nvidia-smi&…...

从0到1_批量下载视频

简介&#xff1a;真实从0到1&#xff0c;童叟无欺&#xff5e; 目标&#xff1a;用python批量下载搜索视频&#xff0c;以“CG 服装”为例 搜索图片就不放啦&#xff0c;不能过审 本章主要介绍如何用python把搜索到的视频直接下载到自己的本地文件夹中&#xff5e; 介绍一下工作…...

CNCF x Alibaba云原生技术公开课 第十二章 可观测性:监控与日志

1、监控 监控类型 资源监控&#xff1a;cpu、内存、网络等。性能监控&#xff1a;apm监控&#xff0c;一般是通过一些 Hook 的机制在&#xff0c;在虚拟机层、字节码执行层通过隐式调用&#xff0c;或者是在应用层显示注入&#xff0c;获取更深层次的一个监控指标&#xff0c…...

C语言宏定义几个问题

1.#define Ant A虽说做的是将代码中Ant替换成A&#xff0c;但是是整体的替换&#xff0c;不能将整体分离替换。 不带宏参定义一般形式如下&#xff1a; 格式&#xff1a; #define 标识符 字符串 其中“标识符”为所定义的宏名&#xff0c;“字符串”可以是常数、表达式、格式串…...

王道计算机组成原理课代表 - 考研计算机 第二章 数据的表示和运算 究极精华总结笔记

本篇博客是考研期间学习王道课程 传送门 的笔记&#xff0c;以及一整年里对 计算机组成 知识点的理解的总结。希望对新一届的计算机考研人提供帮助&#xff01;&#xff01;&#xff01; 关于对 数据的表示和运算 章节知识点总结的十分全面&#xff0c;涵括了《计算机组成原理…...

从零开始:DeepLabV3+在Cityscapes数据集上的完整训练流程

1. 环境准备与数据下载 第一次接触DeepLabV3和Cityscapes数据集时&#xff0c;我被这个组合的潜力所吸引——它能精准识别街景中的车辆、行人、建筑物等元素&#xff0c;就像给计算机装上了"透视眼"。但真正开始实操时&#xff0c;发现从环境搭建到数据处理的每个环节…...

快速部署Super Qwen Voice World:复古像素风语音合成中心体验

快速部署Super Qwen Voice World&#xff1a;复古像素风语音合成中心体验 1. 项目简介与核心价值 Super Qwen Voice World是一个基于Qwen3-TTS技术构建的语音合成平台&#xff0c;它将传统的语音合成过程转化为一场充满趣味的8-bit游戏冒险。这个项目最吸引人的特点是&#x…...

如何快速美化Windows任务栏:TranslucentTB完全指南

如何快速美化Windows任务栏&#xff1a;TranslucentTB完全指南 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 你是否厌倦了Windows系统一…...

雷达式多参数水文监测站

雷达式多参数水文监测站用先进的非接触式测量技术&#xff0c;结合水库断面参数精准计算流量&#xff0c;全程无需接触水体&#xff0c;从根源上规避水体环境对监测设备的影响。不受风、环境温度、雾霾、水体泥沙、漂浮物等外界因素干扰&#xff0c;即便在汛期水流浑浊、漂浮物…...

CosyVoice CPU运行效率优化实战:从原理到性能调优

最近在做一个实时语音处理的项目&#xff0c;用到了CosyVoice这个框架。项目上线初期&#xff0c;发现服务在CPU上的表现不太理想&#xff0c;尤其是在处理并发语音流时&#xff0c;CPU占用率经常飙高&#xff0c;处理延迟也时高时低&#xff0c;很不稳定。经过一番排查和优化&…...

Python调用SM9遭遇“Unknown curve”?紧急修复手册:从OpenSSL 3.0.7到国密SM9曲线OID映射全对照

第一章&#xff1a;Python调用SM9遭遇“Unknown curve”问题的根源定位当使用 Python&#xff08;如通过 cryptography 或 gmssl 库&#xff09;实现国密 SM9 算法时&#xff0c;常见报错 ValueError: Unknown curve 并非源于椭圆曲线参数缺失&#xff0c;而是因底层密码学库未…...

水晶排课 13.9.0.5:专注学校教务排课场景,集智能自动排课、灵活课表调整、多维度视图与便捷输出于一体,高效解决排课冲突,适用于中小学各类教务管理需求。

大家好&#xff0c;我是大飞哥。在学校教务管理中&#xff0c;排课是一项繁琐又容易出错的工作 —— 既要兼顾教师课时、班级需求&#xff0c;又要避免冲突&#xff0c;这款水晶排课 13.9.0.5就是专门解决这些问题的工具&#xff0c;它是一款专业高效的教务排课软件&#xff0c…...

OpenClaw故障模拟:Qwen3.5-4B-Claude在异常操作场景下的恢复能力

OpenClaw故障模拟&#xff1a;Qwen3.5-4B-Claude在异常操作场景下的恢复能力 1. 为什么需要测试AI助手的故障恢复能力 上周我在用OpenClaw自动整理项目文档时&#xff0c;亲眼目睹了一场"数字灾难"——脚本误删了正在编辑的Markdown文件&#xff0c;而我没有开启版…...

OpenClaw技能市场巡礼:Top10 GLM-4.7-Flash增强模块推荐

OpenClaw技能市场巡礼&#xff1a;Top10 GLM-4.7-Flash增强模块推荐 1. 为什么需要关注技能市场&#xff1f; 第一次接触OpenClaw时&#xff0c;我以为它只是个简单的自动化工具。直到在ClawHub技能市场看到有人用GLM-4.7-Flash模型实现了简历自动打分系统&#xff0c;才意识…...

QMCDecode终极指南:3分钟解锁QQ音乐加密文件,让音乐真正属于你!

QMCDecode终极指南&#xff1a;3分钟解锁QQ音乐加密文件&#xff0c;让音乐真正属于你&#xff01; 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac&#xff0c;qmc0,qmc3转mp3, mflac,mflac0等转flac)&#xff0c;仅支持macOS&#xff0c;可自动识别到…...