Temat: [mało znane pakiety] ratelimit
W repozytorium OpenWrt można znaleźć się setki pakietów. Niektóre są mało znane, choć realizują ciekawe funkcje. Jednym z nich jest ratelimit.
Właściwie to oszukuję już na początku tego opisu. Pakiet jest mało znany bo dopiero pojawił się oficjalnie w repo openwrt (nie jest dostępny w bieżącym wydaniu stabilnym, jest tylko w 24.10-SNAPSHOT oraz wersji rozwojowej), i powstał jako część nowego projektu uspot. Ale nie ma problemów żeby go używać niezależnie.
Sam pakiet służy do dynamicznego limitowania przepustowości internetu dla użytkowników. Mamy co prawda już taki pakiet jak nft-qos który z powodzeniem stosuję w obrazach mifi, który opiera się na innej zasadzie (wykorzystuje nftables), ale co szkodzi mieć inną alternatywę.
Instalacja
opkg update
opkg install ratelimitJak już wspomniałem, jest on tylko w wersji rozwojowej OpenWrt, więc jeżeli ktoś obecnie używa wydania stabilnego to musi poczekać do następnego wydania.
Limitowanie klienta
Szybki przykład: chcemy klienta o adresie MAC 01:02:03:04:05:06 podłączonego do lanu przyciąć do 2Mbps. Robimy:
ubus call ratelimit client_set '{"device":"br-lan","address":"01:02:03:04:05:06","rate":"2mbit"}'Cała magia dzieje się pod spodem wykorzystując tc/ifb, natychmiastowo wprowadzając odpowiednie kolejki do systemu i limitując tego klienta do podanego limitu.
Status
Można sprawdzić stan kolejek wołając
ubus call ratelimit dump
{
"defaults": {
},
"devices": {
"br-lan": {
"name": "br-lan",
"clients": {
"01:02:03:04:05:06: {
"address": "01:02:03:04:05:06",
"id": 0,
"data": {
"rate_ingress": "2mbit",
"rate_egress": "2mbit"
}
}
},
"client_order": [
{
"address": "01:02:03:04:05:06",
"id": 0,
"data": {
"rate_ingress": "2mbit",
"rate_egress": "2mbit"
}
}
]
}
}
}Więcej przykładów można znaleźć na stronie projektu: https://github.com/f00b4r0/ratelimit