Total Pageviews

Tuesday, 18 August 2015

上海电信网络丢包分析

路由器的工作模式是存储转发,存储转发就意味着在路由器内部数据包还是需要队列的,也就会存在队列排队时间。在流量大的时候,在队列中排队时间会比 较长,而实际测到的情况并非如此。几乎在所有情况下,rtt都相当稳定。这就说明流量并未影响到路由器的正常工作。那么,对于出口的包,在国际出口前就限 速,丢掉一些,从而避免国际线路拥堵,不是合理的做法吗?我首先承认,在进入国际线路前,就把“超载”的流量选择性地丢掉一些,比到了国际线路再挤掉要合 理。但是,这种行为叫什么?QoS啊!电信一方面保留了大量的传输能力,另一方面采用丢弃这一暴力的方式,减少进入国际出口的包流量。却遮遮掩掩,因为 QoS就直说嘛,害我浪费那么多时间。
为了证明是不是QoS,我有做了一些试验。因为我不是什么vip,只好从流量类型上尝试。之前看过北邮方校长有篇综述论文,提到gfw的一个重点是 流量特征分析,其中voip的流量是高优先级通过的。于是找来这篇文章:国际VoIP流量特征分析. 我写了个程序测试了一下。500字节以下均匀分布的包,发送速度每秒1000个,丢包率在十几,而选择一些特定长度的包如,77,82,106 byte,丢包率可以降到个位数,但是这些包的负载能力太弱了,用这么小的包收发数据并不特别快。真正让我惊讶的是TCP syn的丢包率, 0%!你要跟我说这不是QoS,那肯定是丢的包都被我吃了。注意,我说这些并不是否定用QoS限流。
我不去谈什么我不懂的商业和业务,只谈谈技术好了。既然国内全程都是走你电信的网络,这种“超额”出口数据包为什么要到出口节点前才丢弃?家庭宽带 基本都是要拨号且限速的,在接入层路由器里面判断一下某个包的目的地是国外还是国内也是很容易的(因为无需很精确,几十条规则即可),只要在接入层路由 (或者接入服务器)判断出是访问国外,然后限速就好了,这样大家都有得玩。上海电信一边叫出口拥堵,那为什么又要到骨干网上绕一圈,快出口了,然后才做丢 包处理?是为了炫耀你电信骨干网的带宽吗?还有脸说总公司给的带宽不够?我从松江访问徐汇的机器质量差得令人发指,晚间丢包24%, rtt 700ms以上,stddev 超过200ms,全是依靠上海电信的市场垄断地位。