带宽叠加只能用在下载之类的多线程工作嘛?

2017-07-06 00:36:14 +08:00
 HFX3389

手上有两条 4M 的带宽的网络,带宽叠加已经 OK 了( PS:学校网络,使用某蜘蛛的“使用基于数据包的负载均衡策略”),但局限就在于只能用在下载之类的多线程活动。

有没有办法在浏览网页比如看直播的时候也进行叠加(因为看直播时仅仅使用了一条带宽)?

因为我很少下载,直播也看 OW 之类的,如果仅仅使用单条 4M,许多码率大的直播间都无法观看!

5879 次点击
所在节点    宽带症候群
18 条回复
Love4Taylor
2017-07-06 00:57:19 +08:00
HFX3389
2017-07-06 01:10:41 +08:00
@Love4Taylor #1 视频看了,但是对我来说没啥用啊!
因为我这是通过虚拟机虚拟多个网卡,每个网卡一个上面下发下来独立的 IP,学校根据 IP 的登陆情况来决定是否开放网络的,所以这个蜘蛛就正好!
那个 MPTCP 不懂是啥。。。
Love4Taylor
2017-07-06 01:19:50 +08:00
@HFX3389 #2 只是供参考而已 想链路聚合只能拆分数据包来传输 目前我所知道的一个就是 MPTCP
wwqgtxx
2017-07-06 01:41:49 +08:00
同校园网多 ip 聚合的路过,只不过我是用两台虚拟机开 ss,然后在其中一台上开 haproxy 做的,为了 udp 转发还只能用 socat 把 udp 转发到本虚拟机的 ss 上,最后在外围机器上用 sscap 开全局代理跑的

不过我这种方案最大的局限在于 udp 只能转发到一台上,没办法均衡负载( haproxy 不支持 udp ),不过 tcp 单线程测速的确可以达到速度叠加的作用
HFX3389
2017-07-06 01:46:39 +08:00
@wwqgtxx #4 多谢!能稍微说得再清楚些嘛?
xratzh
2017-07-06 02:22:52 +08:00
策略路由,分别 4m 给不同俩人用,我以前双拨后打算这样,后面觉得没必要就放弃了
HFX3389
2017-07-06 02:25:14 +08:00
@xratzh #6 我是自己一个人用,喜欢看 OW 直播,但是现在一般 OW 直播都要 8M 左右的宽带!想聚合,并不是共享!
wwqgtxx
2017-07-06 08:46:08 +08:00
核心思想就是
虚拟机 1: 只运行一个 ss-libev 在 8388 端口
虚拟机 2: 运行一个 ss-libev 在 8388 端口,然后运行一个 haproxy 在 1091 端口,haproxy 配置为均衡负载,上游分别为本机的 8388 端口及虚拟机 1 的 8388 端口。由于 haproxy 不支持 udp,再开一个 socat 把本机的 udp 8388 转发到本机的 1091 端口(这个地方就导致 udp 实际上并没有实现均衡负载)
主机: 运行 sstap 设置上游为虚拟机 2 的 1091 端口
KCheshireCat
2017-07-06 10:32:17 +08:00
@wwqgtxx #8


|-------tun1-------|
客户端-----| |-------server-------|-----------外网
|-------tun2-------|

是这样么?

用两个或者多个无状态的隧道来分流,再用一个跳板服务器重新汇聚成流,发往远端.
wwqgtxx
2017-07-06 10:37:23 +08:00
@KCheshireCat 实际上我这只是一个一转多转发而已,由于我们这里校园网只是限速,出口是共用的,所以汇聚的工作就由校园网出口网关自动完成了
wwqgtxx
2017-07-06 10:43:00 +08:00
当然这个地方也可以配置跳板服务器来聚合,即给上面的两个虚拟机中运行的 ss-libev 服务端配置一个相同的上级代理即可

之前可能是我没表达清楚,我在两个虚拟机中运行的 ss-libev 是 ss-server 并不是 ss-client,因为我这里并不需要实现自动 fq 的功能
wwqgtxx
2017-07-06 10:47:24 +08:00
用 ss-server 而不是直接开 socks5 代理主要是因为找不到好用的支持 udp 转发的 socks5 服务器软件,我试过 ccproxy,到如果在前端加上 haproxy 就会导致 udp 失效,用 v2ray 倒是可以实现和 haproxy 兼容,但是连接量大了之后内存占用大的吓人( 300mb 以上),最后还是退而求其次用 ss-libev 的 ss-server,这货来来回回就占用 20m,只不过 ss 协议的 udp 转发本身也是走 udp 协议的,所以没办法用 haproxy 转发
wwqgtxx
2017-07-06 10:55:15 +08:00
@KCheshireCat 所以最后画图应该就是

|-->虚拟机 2 的 ss-server->校园网->|
主机 ss-tap->虚拟机 2 的 haproxy--| |->校园网出口网关->互联网
|->虚拟机 1 的 ss-server->校园网-> |
wwqgtxx
2017-07-06 10:56:29 +08:00
........................................................|-->虚拟机 2 的 ss-server->校园网->|
主机 ss-tap->虚拟机 2 的 haproxy--|....................................................... |->校园网出口网关->互联网
........................................................|->虚拟机 1 的 ss-server->校园网-> |


ps:v2ex 的回复自动过滤空格真蛋疼,把排班全都打乱了
KCheshireCat
2017-07-06 11:00:09 +08:00
@wwqgtxx #13

这样的话我有点想不通

虚拟机都是桥接在校园网里,各自都有校园内网 IP 的吧.

按理来说网关会把这两个 IP 发出来的流区分为两条流的啊,怎么会汇聚呢?
wwqgtxx
2017-07-06 11:14:48 +08:00
@KCheshireCat 理论上是这样,可能是因为现在大部分的下载软件都是多线程下载的吧,所以就起到了速度叠加的作用,至于真正的单 TCP 能不能叠加我还真的没有测试过
wwqgtxx
2017-07-06 11:34:44 +08:00
@KCheshireCat 好吧,刚刚试了一下,如果不用多线程下载的确达不到聚合的作用,之前都是用 speedtest 测试的,没想到那货居然是用多线程测速的。。。
ixiaoyui
2017-07-06 11:53:00 +08:00
如果客户端有公网 ip,一般意义上的网页浏览和在线直播不可能多线负载均衡,因为这些业务本身都是单线程的,而且业务的连续性是以客户端的 ip 和端口号来区分的,来自同 ip 同端口的数据流服务器会认为是一个合法业务(和 nat 原理神似),要是临时换了 ip 或者端口继续传输数据,服务器就六亲不认了,而且服务器也不知道来自不同 ip 的请求竟然是同一个客户端的同一个业务发出的,服务器很崩溃。

nat 环境访问公网也不行,nat 也是按照客户端地址和端口为标记进行地址转换的,一般情况下,客户端地址一变,对应的 nat 后的出口端口也会变,导致单线程业务无法继续,也就不可能对网页浏览和在线直播进行负载均衡。

总之,这种单线程的业务目前无法负载均衡,但多开几个直播还是能把带宽吃满的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/373354

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX