手上有两条 4M 的带宽的网络,带宽叠加已经 OK 了( PS:学校网络,使用某蜘蛛的“使用基于数据包的负载均衡策略”),但局限就在于只能用在下载之类的多线程活动。
有没有办法在浏览网页比如看直播的时候也进行叠加(因为看直播时仅仅使用了一条带宽)?
因为我很少下载,直播也看 OW 之类的,如果仅仅使用单条 4M,许多码率大的直播间都无法观看!
1
Love4Taylor 2017-07-06 00:57:19 +08:00
|
2
HFX3389 OP @Love4Taylor #1 视频看了,但是对我来说没啥用啊!
因为我这是通过虚拟机虚拟多个网卡,每个网卡一个上面下发下来独立的 IP,学校根据 IP 的登陆情况来决定是否开放网络的,所以这个蜘蛛就正好! 那个 MPTCP 不懂是啥。。。 |
3
Love4Taylor 2017-07-06 01:19:50 +08:00
@HFX3389 #2 只是供参考而已 想链路聚合只能拆分数据包来传输 目前我所知道的一个就是 MPTCP
|
4
wwqgtxx 2017-07-06 01:41:49 +08:00 via iPhone
同校园网多 ip 聚合的路过,只不过我是用两台虚拟机开 ss,然后在其中一台上开 haproxy 做的,为了 udp 转发还只能用 socat 把 udp 转发到本虚拟机的 ss 上,最后在外围机器上用 sscap 开全局代理跑的
不过我这种方案最大的局限在于 udp 只能转发到一台上,没办法均衡负载( haproxy 不支持 udp ),不过 tcp 单线程测速的确可以达到速度叠加的作用 |
6
xratzh 2017-07-06 02:22:52 +08:00 via iPhone
策略路由,分别 4m 给不同俩人用,我以前双拨后打算这样,后面觉得没必要就放弃了
|
7
HFX3389 OP @xratzh #6 我是自己一个人用,喜欢看 OW 直播,但是现在一般 OW 直播都要 8M 左右的宽带!想聚合,并不是共享!
|
8
wwqgtxx 2017-07-06 08:46:08 +08:00 via iPhone
核心思想就是
虚拟机 1: 只运行一个 ss-libev 在 8388 端口 虚拟机 2: 运行一个 ss-libev 在 8388 端口,然后运行一个 haproxy 在 1091 端口,haproxy 配置为均衡负载,上游分别为本机的 8388 端口及虚拟机 1 的 8388 端口。由于 haproxy 不支持 udp,再开一个 socat 把本机的 udp 8388 转发到本机的 1091 端口(这个地方就导致 udp 实际上并没有实现均衡负载) 主机: 运行 sstap 设置上游为虚拟机 2 的 1091 端口 |
9
KCheshireCat 2017-07-06 10:32:17 +08:00
@wwqgtxx #8
|-------tun1-------| 客户端-----| |-------server-------|-----------外网 |-------tun2-------| 是这样么? 用两个或者多个无状态的隧道来分流,再用一个跳板服务器重新汇聚成流,发往远端. |
10
wwqgtxx 2017-07-06 10:37:23 +08:00 via iPhone
@KCheshireCat 实际上我这只是一个一转多转发而已,由于我们这里校园网只是限速,出口是共用的,所以汇聚的工作就由校园网出口网关自动完成了
|
11
wwqgtxx 2017-07-06 10:43:00 +08:00 via iPhone
当然这个地方也可以配置跳板服务器来聚合,即给上面的两个虚拟机中运行的 ss-libev 服务端配置一个相同的上级代理即可
之前可能是我没表达清楚,我在两个虚拟机中运行的 ss-libev 是 ss-server 并不是 ss-client,因为我这里并不需要实现自动 fq 的功能 |
12
wwqgtxx 2017-07-06 10:47:24 +08:00 via iPhone
用 ss-server 而不是直接开 socks5 代理主要是因为找不到好用的支持 udp 转发的 socks5 服务器软件,我试过 ccproxy,到如果在前端加上 haproxy 就会导致 udp 失效,用 v2ray 倒是可以实现和 haproxy 兼容,但是连接量大了之后内存占用大的吓人( 300mb 以上),最后还是退而求其次用 ss-libev 的 ss-server,这货来来回回就占用 20m,只不过 ss 协议的 udp 转发本身也是走 udp 协议的,所以没办法用 haproxy 转发
|
13
wwqgtxx 2017-07-06 10:55:15 +08:00
@KCheshireCat 所以最后画图应该就是
|-->虚拟机 2 的 ss-server->校园网->| 主机 ss-tap->虚拟机 2 的 haproxy--| |->校园网出口网关->互联网 |->虚拟机 1 的 ss-server->校园网-> | |
14
wwqgtxx 2017-07-06 10:56:29 +08:00
........................................................|-->虚拟机 2 的 ss-server->校园网->|
主机 ss-tap->虚拟机 2 的 haproxy--|....................................................... |->校园网出口网关->互联网 ........................................................|->虚拟机 1 的 ss-server->校园网-> | ps:v2ex 的回复自动过滤空格真蛋疼,把排班全都打乱了 |
15
KCheshireCat 2017-07-06 11:00:09 +08:00
|
16
wwqgtxx 2017-07-06 11:14:48 +08:00
@KCheshireCat 理论上是这样,可能是因为现在大部分的下载软件都是多线程下载的吧,所以就起到了速度叠加的作用,至于真正的单 TCP 能不能叠加我还真的没有测试过
|
17
wwqgtxx 2017-07-06 11:34:44 +08:00
@KCheshireCat 好吧,刚刚试了一下,如果不用多线程下载的确达不到聚合的作用,之前都是用 speedtest 测试的,没想到那货居然是用多线程测速的。。。
|
18
ixiaoyui 2017-07-06 11:53:00 +08:00
如果客户端有公网 ip,一般意义上的网页浏览和在线直播不可能多线负载均衡,因为这些业务本身都是单线程的,而且业务的连续性是以客户端的 ip 和端口号来区分的,来自同 ip 同端口的数据流服务器会认为是一个合法业务(和 nat 原理神似),要是临时换了 ip 或者端口继续传输数据,服务器就六亲不认了,而且服务器也不知道来自不同 ip 的请求竟然是同一个客户端的同一个业务发出的,服务器很崩溃。
nat 环境访问公网也不行,nat 也是按照客户端地址和端口为标记进行地址转换的,一般情况下,客户端地址一变,对应的 nat 后的出口端口也会变,导致单线程业务无法继续,也就不可能对网页浏览和在线直播进行负载均衡。 总之,这种单线程的业务目前无法负载均衡,但多开几个直播还是能把带宽吃满的。 |