dtaht / ceropackages-3.10 Goto Github PK
View Code? Open in Web Editor NEWOpenWRT package repository for Cerowrt
Home Page: http://www.bufferbloat.net/projects/cerowrt/wiki
OpenWRT package repository for Cerowrt
Home Page: http://www.bufferbloat.net/projects/cerowrt/wiki
I noticed unnecessary layer7 files on my router and started investigating bit. It looks like both qos-scripts and sqm-scripts included those files unnecessarily. Openwrt bug: https://dev.openwrt.org/ticket/19506
Nbd has already fixed iptables and qos-scripts (and indirectly also sqm, as those files were removed from iptables), but I think that SQM may still have unnecessary dependencies: for iptables-mod-filter and possibly also for iptables-mod-conntrack-extra.
Those dependencies originate from the original import of qos-scripts to cerowrt as the basis for the new "aqm-scripts", current SQM: bc8363c
iptables-mod-filter (and kmod-ipt-filter) currently define only packet content string matching. The filter package also pulls in kmod-lib-textsearch, adding to the size. To my knowledge, the string matching is not used in SQM.
https://dev.openwrt.org/browser/trunk/package/network/utils/iptables/Makefile#L117
https://dev.openwrt.org/browser/trunk/package/kernel/linux/modules/netfilter.mk#L163
https://dev.openwrt.org/browser/trunk/include/netfilter.mk#L101
Similarly, iptables-mod-conntrack-extra defines "Matches: - connbytes, - connlimit, - connmark, - recent, - helper" and "Targets - CONNMARK". I don't think that they are used in SQM. (CONNMARK is used by qos, so it is needed there)
https://dev.openwrt.org/browser/trunk/package/network/utils/iptables/Makefile#L97
https://dev.openwrt.org/browser/trunk/package/kernel/linux/modules/netfilter.mk#L142
https://dev.openwrt.org/browser/trunk/include/netfilter.mk#L80
dcsp, tos are defined in "iptables-mod-ipopt", while MARK target is in core iptables.
https://dev.openwrt.org/browser/trunk/include/netfilter.mk#L106
https://dev.openwrt.org/browser/trunk/include/netfilter.mk#L61
So, I don't see a need for iptables-mod-filter and iptables-mod-conntrack-extra in SQM. Or at least the need for them is not immediately visible in the source. I haven't yet tested very deeply, but removing the iptables-mod-filter from my current build did not cause any problems.
I am no netfilter/iptables expert, but though to highlight the possible bloat to the devs.
HTB emit warning message when downloading torrents.
[ 668.732458] htb: too many events!
[ 833.856513] htb: too many events!
Stopping SQM seems to lose the knowledge about the active interface at some point.
The default "ge00" defined in https://github.com/dtaht/ceropackages-3.10/blob/master/net/sqm-scripts/files/usr/lib/sqm/functions.sh#L45 seems to be visible in the command flow, although the section has been named eth1 and the interface specified as eth1 in /etc/config/sqm. After stopping there is a new /sys/class/net/ifb4ge00, although that was never created at the startup phase.
Starting SQM, checking the state in 3 ways, the stopping SQM and checking status:
root@OpenWrt:/usr/lib/sqm# ls /sys/class/net/
6in4-sixxs eth0 eth1 gretap0 sit0 wlan0
br-lan eth0.1 gre0 lo teql0 wlan1
root@OpenWrt:/usr/lib/sqm# /etc/init.d/sqm start
SQM: Queue Setup Script: /usr/lib/sqm/simple.qos
SQM: ifb associated with interface eth1:
SQM: trying to create new IFB: ifb4eth1
Failed to find sch_fq_codel. Maybe it is a built in module ?
SQM: Squashing differentiad services code points (DSCP) from ingress.
SQM: get_limit: CURLIMIT: 1001
SQM: get_limit: CURLIMIT: 1001
SQM: get_limit: CURLIMIT: 1001
SQM: egress shaping activated
SQM: Perform DSCP based filtering on ingress. (3-tier classification)
SQM: get_limit: CURLIMIT: 1001
SQM: get_limit: CURLIMIT: 1001
SQM: get_limit: CURLIMIT: 1001
SQM: ingress shaping activated
root@OpenWrt:/usr/lib/sqm# ls /sys/class/net/
6in4-sixxs eth0 eth1 gretap0 lo teql0 wlan1
br-lan eth0.1 gre0 ifb4eth1 sit0 wlan0
root@OpenWrt:/usr/lib/sqm# ls /var/run/SQM/
SQM_active_on_eth1
root@OpenWrt:/usr/lib/sqm# ifconfig | grep ifb
ifb4eth1 Link encap:Ethernet HWaddr 06:FC:39:70:43:81
root@OpenWrt:/usr/lib/sqm# /etc/init.d/sqm stop
SQM: Stopping SQM on interface: eth1
Cannot find device "ge00"
SQM: ifb associated with interface ge00:
SQM: trying to create new IFB: ifb4ge00
SQM: /usr/lib/sqm/stop.sh Stopping eth1
SQM: ifb associated with interface eth1: ifb4eth1
SQM: ifb4eth1 shaper deleted
SQM: ifb4eth1 interface deleted
root@OpenWrt:/usr/lib/sqm# ls /sys/class/net/
6in4-sixxs eth0 eth1 gretap0 lo teql0 wlan1
br-lan eth0.1 gre0 ifb4ge00 sit0 wlan0
root@OpenWrt:/usr/lib/sqm# ls /var/run/SQM/
root@OpenWrt:/usr/lib/sqm# ifconfig | grep ifb
root@OpenWrt:/usr/lib/sqm#
Config:
root@OpenWrt:/usr/lib/sqm# cat /etc/config/sqm
config queue 'eth1'
option enabled '1'
option interface 'eth1'
option qdisc 'fq_codel'
option script 'simple.qos'
option qdisc_advanced '0'
option linklayer 'none'
option download '85000'
option upload '10000'
diff --git a/devel/libasio/Makefile b/devel/libasio/Makefile
index 657b998..9922753 100644
--- a/devel/libasio/Makefile
+++ b/devel/libasio/Makefile
@@ -27,7 +27,7 @@ include $(INCLUDE_DIR)/package.mk
define Package/libasio
SECTION:=libs
CATEGORY:=Libraries
I get this error while doing make menuconfig. I can choose sqm-scripts, but luci-app-sqm is not displayed as an option in the menuconfig.
I was able to build it some commits ago.
$ make menuconfig
tmp/.config-package.in:16344:error: recursive dependency detected!
tmp/.config-package.in:16344: symbol PACKAGE_iptables is selected by PACKAGE_sqm-scripts
tmp/.config-package.in:577: symbol PACKAGE_sqm-scripts is selected by PACKAGE_luci-app-sqm
tmp/.config-package.in:15111: symbol PACKAGE_luci-app-sqm depends on PACKAGE_lua
tmp/.config-package.in:10822: symbol PACKAGE_lua is selected by PACKAGE_luci-base
tmp/.config-package.in:15623: symbol PACKAGE_luci-base is selected by PACKAGE_luci-lib-luaneightbl
tmp/.config-package.in:15683: symbol PACKAGE_luci-lib-luaneightbl is selected by PACKAGE_luci-app-olsr
tmp/.config-package.in:14894: symbol PACKAGE_luci-app-olsr is selected by PACKAGE_luci-app-olsr-services
tmp/.config-package.in:14909: symbol PACKAGE_luci-app-olsr-services is selected by PACKAGE_luci-mod-freifunk-community
tmp/.config-package.in:15854: symbol PACKAGE_luci-mod-freifunk-community depends on PACKAGE_iptables
configuration written to .config
*** End of the configuration.
*** Execute 'make' to start the build or try 'make help'.
I am not sure if this bug belongs to you.
I installed sqm-scripts and luci-app-sqm over to barrier breaker
Error Message as below:
Tue Apr 29 09:19:01 2014 daemon.notice netifd: Interface 'wan6' is setting up now
Tue Apr 29 09:19:01 2014 daemon.notice netifd: Interface 'wan' is now up
Tue Apr 29 09:19:01 2014 user.notice firewall: Reloading firewall due to ifup of lan (br-lan)
Tue Apr 29 09:19:01 2014 kern.info kernel: [ 29.140000] br-lan: port 1(eth0.1) entered forwarding state
Tue Apr 29 09:19:03 2014 user.emerg syslog: RTNETLINK answers: Invalid argument
Tue Apr 29 09:19:03 2014 user.emerg syslog: We have an error talking to the kernel
Tue Apr 29 09:19:03 2014 user.emerg syslog: RTNETLINK answers: Invalid argument
Tue Apr 29 09:19:03 2014 user.emerg syslog: We have an error talking to the kernel
Tue Apr 29 09:19:03 2014 user.emerg syslog: RTNETLINK answers: Invalid argument
Tue Apr 29 09:19:03 2014 user.emerg syslog: We have an error talking to the kernel
Tue Apr 29 09:19:03 2014 user.emerg syslog: RTNETLINK answers: Invalid argument
Tue Apr 29 09:19:03 2014 user.emerg syslog: We have an error talking to the kernel
Tue Apr 29 09:19:03 2014 user.emerg syslog: RTNETLINK answers: Invalid argument
Tue Apr 29 09:19:03 2014 user.emerg syslog: We have an error talking to the kernel
Tue Apr 29 09:19:03 2014 user.emerg syslog: RTNETLINK answers: Invalid argument
Tue Apr 29 09:19:03 2014 user.emerg syslog: We have an error talking to the kernel
Tue Apr 29 09:19:03 2014 user.emerg syslog: RTNETLINK answers: Invalid argument
Tue Apr 29 09:19:03 2014 user.emerg syslog: We have an error talking to the kernel
Tue Apr 29 09:19:03 2014 user.emerg syslog: RTNETLINK answers: Invalid argument
Tue Apr 29 09:19:03 2014 user.emerg syslog: We have an error talking to the kernel
Tue Apr 29 09:19:03 2014 user.emerg syslog: RTNETLINK answers: Invalid argument
Tue Apr 29 09:19:03 2014 user.emerg syslog: We have an error talking to the kernel
Tue Apr 29 09:19:03 2014 user.emerg syslog: RTNETLINK answers: Invalid argument
Tue Apr 29 09:19:03 2014 user.emerg syslog: We have an error talking to the kernel
Tue Apr 29 09:19:03 2014 user.emerg syslog: RTNETLINK answers: Invalid argument
Tue Apr 29 09:19:03 2014 user.emerg syslog: We have an error talking to the kernel
Tue Apr 29 09:19:03 2014 user.emerg syslog: RTNETLINK answers: Invalid argument
Tue Apr 29 09:19:03 2014 user.emerg syslog: We have an error talking to the kernel
Tue Apr 29 09:19:03 2014 user.emerg syslog: RTNETLINK answers: Invalid argument
Tue Apr 29 09:19:03 2014 user.emerg syslog: We have an error talking to the kernel
Tue Apr 29 09:19:03 2014 user.emerg syslog: RTNETLINK answers: Invalid argument
Tue Apr 29 09:19:03 2014 user.emerg syslog: We have an error talking to the kernel
Tue Apr 29 09:19:03 2014 user.emerg syslog: RTNETLINK answers: Invalid argument
Tue Apr 29 09:19:03 2014 user.emerg syslog: We have an error talking to the kernel
Tue Apr 29 09:19:03 2014 user.emerg syslog: RTNETLINK answers: Invalid argument
Tue Apr 29 09:19:03 2014 user.emerg syslog: We have an error talking to the kernel
Tue Apr 29 09:19:03 2014 kern.info kernel: [ 31.510000] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
Tue Apr 29 09:19:03 2014 kern.info kernel: [ 31.570000] device wlan0 entered promiscuous mode
Tue Apr 29 09:19:04 2014 user.notice root: get_limit: CURLIMIT: 1001
Tue Apr 29 09:19:04 2014 user.notice root: get_limit: CURLIMIT: 1001
Tue Apr 29 09:19:04 2014 daemon.notice netifd: Interface 'wan6' is now up
Tue Apr 29 09:19:04 2014 daemon.notice netifd: IP tunnel '6in4-wan6' link is up
Tue Apr 29 09:19:04 2014 user.notice root: get_limit: CURLIMIT: 1001
Tue Apr 29 09:19:04 2014 user.notice root: egress shaping activated
Tue Apr 29 09:19:05 2014 user.emerg syslog: sh: bad number
Tue Apr 29 09:19:05 2014 kern.info kernel: [ 33.010000] br-lan: port 2(wlan0) entered forwarding state
Tue Apr 29 09:19:05 2014 kern.info kernel: [ 33.010000] br-lan: port 2(wlan0) entered forwarding state
Tue Apr 29 09:19:05 2014 kern.info kernel: [ 33.010000] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
I noticed a few months ago there was a patch on the OpenWrt mailing list trying to get sqm-scripts added to OpenWrt... which seems to have gone nowhere.
Now that OpenWrt's package feed is on GitHub and very accessible, perhaps you guys should issue a pull request?
Cheers,
Roger
I want to try Cake shaper with Openwrt in my old PC, so I followed this information: https://www.bufferbloat.net/projects/codel/wiki/Cake/ to install Cake to Openwrt
Target Profile -> TP-LINK Archer C5/C7
Luci -> Collections -> Luci (*)
Applications -> luci-app-sqm (*)
Kernel Modules -> Network Support -> kmod-sched-cake & kmod-sched-fq_pie (*)
Network -> Routing & Redirection -> tc-adv (*)
replacing the Target Profile with x86_64 generic. Then, I tried to make it, then this error happens: dtaht/sched_fq_pie#1 . After manually removing sched_fq_pie as a hard dependency to tc-adv in the Makefiles, OpenWrt compiles normally
When I tried the last change to sqm (8e42148#diff-c0e2726c9acd18d9adb638d16edc764eR128) in my Openwrt build for ar71xx (trunk Chaos Calmer, based on kernel 3.10.49), the script choked on the creation of the new ifb (line 128).
The command "ip link add" seems to require the "name" keyword before the name of the ifb being created.
root@OpenWrt:/# ls -d /sys/devices/virtual/net/ifb*
/sys/devices/virtual/net/ifb0
root@OpenWrt:/# ip link add ifb4eth1 type ifb
Error: argument "ifb4eth1" is wrong: Unknown device
root@OpenWrt:/# ip link add name ifb4eth1 type ifb
root@OpenWrt:/# ls -d /sys/devices/virtual/net/ifb*
/sys/devices/virtual/net/ifb0 /sys/devices/virtual/net/ifb4eth1
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.