显示标签为“OpenWrt”的博文。显示所有博文
显示标签为“OpenWrt”的博文。显示所有博文

2019年12月28日星期六

在路由器上定时预解析DNS,解决加密DNS(DNS-over-TLS)解析时间长的问题

下载地址

预备条件

  • Perl 5 
  • dnsmasq

使用方法

  1. 修改/etc/dnsmasq.conf,添加以下几行以启用日志记录功能,并把DNS解析最短过期时间调整为1小时
    log-async=20
    log-queries
    log-facility=/var/log/dnsmasq.log

    min-cache-ttl=3600

  2. get_popular_websites.pl, prefetch_domains.pl, env_var三个文件下载到路由器上,一般放在/usr/bin文件夹。
  3. 修改/etc/crond/root,将cron文件的内容添加到末尾。

原理与细节

通过定时提取dnsmasq的日志文件,统计每个域名的解析次数。大于ceil(exp($today/10 + 1))即把该域名作为经常访问的域名,并加入预解析名单。其中$today为当天的日数

解决OpenWRT上搭建PPTP服务器,Android客户端无DNS解析的问题

问题出在dnsmasq的设置上。在LuCI管理界面DHCP and DNS设置里,找到







2018年4月4日星期三

用 Heavy Hitter Filter (HHF) qdisc 有效解决多线程下载软件霸占网速问题

  多线程下载软件,例如迅雷和IDM,在有效提升下载速度、压榨下行全部潜力的同时,也给其他网络活动带来了灾难性的后果。BBR拥塞控制算法的使用,更使得本来狭小的网络空间变得缓慢不堪。一旦局域网内一个用户开始下载,其他用户的网页浏览都将受到严重影响,甚至一分钟都无法显示网页首屏,体验十分糟糕。
  fq_codel、pie、cake等调度器的使用,在一定程度上缓解了这种情况,但并不能解决多线程下载软件和BBR的“强势进攻”。即使提高丢包率(如降低target,提高αβ),也无法降低对正常的网络活动的影响。若能有这样一个调度器,能把大流量下载流量和正常流量区分开来,并给予正常流量极大的优先级,将会极好地解决这一问题。
  Heavy Hitter Filter (HHF) 的诞生,解决了大流量和小流量的区分问题。在一系列参数的控制下,HHF能够自动地把大流量连接和正常流量连接区分开来,分配到两个队列中,并赋予不同的传输优先级,具体介绍可以看这里

HHF的关键参数介绍:
  1. reset_timeout:重置计数器的间隔时间,HHF以一个间隔时间内连接传输的流量为标准来判断该连接是否为大流量连接。默认为40ms。
  2. hhf_admit_bytes:将连接分类为大流量连接的阈值。默认为131072Bytes(128KBytes)。
  3. non_hh_weight:正常流量的权重。默认为2(2:1)。设置为1000以上时对霸占网速的连接遏制有良好的效果
当连接速度超过hhf_admit_bytes/reset_timeout时(默认参数下为128KB/40ms=25.6Mbps),该连接即被分类为大流量连接。若要设置为速度大于1Mbps时连接被定义为大流量连接,可将hhf_admit_bytes设为1Mbps×40ms=5120Bytes。

最后的命令,与htb配合使用:
tc qdisc add dev $dev parent x:y hhf limit 1024 non_hh_weight 1000 admit_bytes 5120