|
|
本帖最后由 flippy 于 2020-5-1 19:01 编辑
首先:环境说明
- N1 35+、35+o两个版本,设置为旁路由或单臂主路由,
- 当N1做旁路由时,主路由是我家云+RTL8153(RTL8153是WAN口),占用了光猫的两个LAN口
- 两种模式下,N1 的网线都是直接插在光猫的LAN口上
- 光猫的最后一个LAN口是接K2P的(本测试与K2P无关)
我家云一直很稳定而且快速,但N1总是有些问题,speedtest测电信站点,有时很慢(几十m),有时又很快(几百m),尝试了各种办法,换内核,换dtb等,终究是效果有限,现在终于找到真正的锅了,先看图:
看出来了吧,原因就是网卡的流控方式影响的。(用dmesg | grep dwmac 命令查看) 当流控打开(rx/tx)时,测速很快,流控关闭(off) ,测速时快时慢不稳定。
因为speedtest是大流量测速,所以必须控制流量,否则就会造成网络堵塞,iperf3测速也有类似情况,就是 retr包数量很多。一般上网或看视频时,流量其实并不大,所以没什么影响。
那么,怎样才能打开流控呢?很简单,换个交换机吧,实测用tp-link sg1008m,以及水星sg105m接n1,以及接K2P的LAN口(潘多拉固件),流控都能打开,而接光猫则不行。
另外,为什么+o版采用 带有 force_thresh_dma_mode的dtb,测速效果会比较好呢,原因是:force_thresh_dma_mode 实际上就是一种变相的流控方式,但副作用也很明显, tx的速率下降到750m了。
有人问,那把N1接到硬路由的LAN口会怎么样呢?这个还是以 dmesg| grep dwmac 的结果为准吧,如果显示流控是开的就行(rx/tx),是off的就不行。
另外一口锅是mtu来背的,主贴里已经讲过某些时候eth0的mtu变成1536,这时需要修改mtu到1472才行。
1536的mtu, 用 ping -s 1492 任意ip地址 测试都是不通的,大包无法拆包,小包不影响
ping -s 1492,就是用1492+8字节包头来ping,正常情况下应该拆成两个包,但mtu是1536时凡是大于1500的包都拆不开,结果就不通了。
1492换成更大的数字也一样。
最后,请回贴的网友能否贴一下自己的情况,交换机型号,流控是否打开,测速是否正常,以供其他网友参考,谢谢!
最终版DTB,推荐用+O版固件,已经接近完美了,当N1的网卡能够开启流控时,内网测速和speedtest测速都能跑满,如果不能开启流控,则使用带thresh那个dtb,用软流控代替硬流控。具体参见附件中的说明。
注:修改/boot/uEnv.txt时,千万不要图省事复制粘贴,我说了只用改 FDT=/boot/dtb/amlogic/xxxxx.dtb那一行,其它的不能改。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
查看全部评分
|