Add complete French (fr) and Chinese (zh) translations for all documentation: - Root files: README, CHANGELOG, SECURITY, BETA-RELEASE - docs/: All 16 core documentation files - DOCS/: All 19 deep-dive documents including embedded/ and archive/ - package/secubox/: All 123+ package READMEs - Misc: secubox-tools/, scripts/, EXAMPLES/, config-backups/, streamlit-apps/ Total: 346 translation files created Each file includes language switcher links for easy navigation between English, French, and Chinese versions. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
12 KiB
Bandwidth Manager - QoS & Controle du Trafic
Version : 0.4.0 Derniere mise a jour : 2025-12-28 Statut : Actif
Gestion avancee de la bande passante pour OpenWrt avec regles QoS, quotas clients et integration SQM/CAKE.
Fonctionnalites
Traffic Shaping QoS
- Controle du trafic base sur des regles par application, port, IP ou MAC
- Limites de telechargement/upload par regle
- Systeme de priorite a 8 niveaux (1=le plus haut, 8=le plus bas)
- Support de la planification horaire
- Activation/desactivation des regles en temps reel
Quotas Clients
- Quotas de donnees mensuels par adresse MAC
- Suivi de l'utilisation avec compteurs iptables
- Actions configurables : limiter, bloquer ou notifier
- Reinitialisation mensuelle automatique (jour configurable)
- Surveillance des quotas en temps reel
Integration SQM/CAKE
- Gestion intelligente des files avec qdisc CAKE
- Traffic shaping automatique de la bande passante
- Configuration NAT-aware
- Compensation de surcharge de liaison (Ethernet, PPPoE, VLAN)
- Support alternatif FQ_CoDel et HTB
Surveillance en Temps Reel
- Utilisation de bande passante client en direct (rafraichissement auto toutes les 5s)
- Statistiques RX/TX par client
- Visualisation de la progression des quotas
- Historique d'utilisation
Installation
opkg update
opkg install luci-app-bandwidth-manager
/etc/init.d/rpcd restart
/etc/init.d/uhttpd restart
Dependances
- tc : Utilitaire de controle du trafic
- kmod-sched-core : Planificateur de trafic kernel
- kmod-sched-cake : Module qdisc CAKE
- kmod-ifb : Peripherique Intermediate Functional Block
- sqm-scripts : Scripts SQM
- iptables : Pour le suivi du trafic
- iptables-mod-conntrack-extra : Extensions de suivi de connexion
Configuration
Configuration UCI
Editer /etc/config/bandwidth :
config global 'global'
option enabled '1'
option interface 'br-lan'
option sqm_enabled '1'
config sqm 'sqm'
option download_speed '100000' # kbit/s
option upload_speed '50000' # kbit/s
option qdisc 'cake'
option nat '1'
option overhead '22' # Surcharge PPPoE
config rule 'rule_youtube'
option name 'Limiter YouTube'
option type 'application'
option target 'youtube'
option limit_down '5000' # kbit/s
option limit_up '1000' # kbit/s
option priority '6'
option enabled '1'
config quota 'quota_phone'
option mac 'AA:BB:CC:DD:EE:FF'
option name 'iPhone Jean'
option limit_mb '10240' # 10 Go
option action 'throttle'
option reset_day '1'
option enabled '1'
Options de Configuration
Section Global
enabled: Activer/desactiver le gestionnaire de bande passanteinterface: Interface reseau a gerer (defaut : br-lan)sqm_enabled: Activer SQM/CAKE
Section SQM
download_speed: Vitesse de telechargement en kbit/supload_speed: Vitesse d'upload en kbit/sqdisc: Discipline de file (cake, fq_codel, htb)nat: Mode NAT (1=active, 0=desactive)overhead: Surcharge de liaison en octets (0, 18, 22, 40)
Section Rule
name: Nom de la regletype: Type de regle (application, port, ip, mac)target: Valeur cible (nom d'app, numero de port, IP ou MAC)limit_down: Limite de telechargement en kbit/s (0=illimite)limit_up: Limite d'upload en kbit/s (0=illimite)priority: Niveau de priorite (1-8)schedule: Horaire optionnel (ex. "Lun-Ven 08:00-18:00")enabled: Activer/desactiver la regle
Section Quota
mac: Adresse MAC du clientname: Nom conviviallimit_mb: Limite mensuelle en Moaction: Action en cas de depassement (throttle, block, notify)reset_day: Jour du mois pour reinitialiser (1-28)enabled: Activer/desactiver le quota
Utilisation
Interface Web
Naviguer vers Reseau → Bandwidth Manager dans LuCI.
Onglet Vue d'ensemble
- Statut systeme (QoS actif, interface, SQM)
- Statistiques de trafic (octets et paquets RX/TX)
- Resume des regles actives
- Quotas clients avec barres de progression
Onglet Regles QoS
- Creer/editer/supprimer des regles de traffic shaping
- Configurer type, cible, limites et priorite
- Activer/desactiver les regles individuellement
- Definir des horaires
Onglet Quotas Clients
- Gerer les quotas de donnees mensuels par MAC
- Definir limites et actions
- Reinitialiser les compteurs de quota
- Voir l'utilisation actuelle
Onglet Utilisation Temps Reel
- Utilisation de bande passante en direct par client
- Rafraichissement auto toutes les 5 secondes
- Repartition telechargement/upload
- Progression des quotas pour les clients surveilles
Onglet Parametres
- Activation/desactivation globale
- Selection d'interface
- Configuration SQM/CAKE
- Parametres de suivi du trafic
- Configuration des alertes
Ligne de Commande
Obtenir le Statut
ubus call luci.bandwidth-manager status
Lister les Regles QoS
ubus call luci.bandwidth-manager list_rules
Ajouter une Regle QoS
ubus call luci.bandwidth-manager add_rule '{
"name": "Limiter Torrent",
"type": "port",
"target": "6881-6889",
"limit_down": 3000,
"limit_up": 500,
"priority": 7
}'
Supprimer une Regle
ubus call luci.bandwidth-manager delete_rule '{
"rule_id": "rule_1234567890"
}'
Lister les Quotas Clients
ubus call luci.bandwidth-manager list_quotas
Definir un Quota
ubus call luci.bandwidth-manager set_quota '{
"mac": "AA:BB:CC:DD:EE:FF",
"name": "iPhone John",
"limit_mb": 10240,
"action": "throttle",
"reset_day": 1
}'
Obtenir les Details d'un Quota
ubus call luci.bandwidth-manager get_quota '{
"mac": "AA:BB:CC:DD:EE:FF"
}'
Reinitialiser le Compteur de Quota
ubus call luci.bandwidth-manager reset_quota '{
"mac": "AA:BB:CC:DD:EE:FF"
}'
Obtenir l'Utilisation Temps Reel
ubus call luci.bandwidth-manager get_usage_realtime
Obtenir l'Historique d'Utilisation
ubus call luci.bandwidth-manager get_usage_history '{
"timeframe": "24h",
"mac": "AA:BB:CC:DD:EE:FF"
}'
Options de timeframe : 1h, 6h, 24h, 7d, 30d
Reference API ubus
status()
Obtenir le statut systeme et les statistiques globales.
Retourne :
{
"enabled": true,
"interface": "br-lan",
"sqm_enabled": true,
"qos_active": true,
"stats": {
"rx_bytes": 1234567890,
"tx_bytes": 987654321,
"rx_packets": 1234567,
"tx_packets": 987654
},
"rule_count": 5,
"quota_count": 3
}
list_rules()
Lister toutes les regles QoS.
Retourne :
{
"rules": [
{
"id": "rule_youtube",
"name": "Limiter YouTube",
"type": "application",
"target": "youtube",
"limit_down": 5000,
"limit_up": 1000,
"priority": 6,
"enabled": true,
"schedule": ""
}
]
}
add_rule(name, type, target, limit_down, limit_up, priority)
Ajouter une nouvelle regle QoS.
Retourne :
{
"success": true,
"rule_id": "rule_1234567890",
"message": "Regle creee avec succes"
}
delete_rule(rule_id)
Supprimer une regle QoS.
Retourne :
{
"success": true,
"message": "Regle supprimee avec succes"
}
list_quotas()
Lister tous les quotas clients avec l'utilisation actuelle.
Retourne :
{
"quotas": [
{
"id": "quota_phone",
"mac": "AA:BB:CC:DD:EE:FF",
"name": "iPhone Jean",
"limit_mb": 10240,
"used_mb": 7850,
"percent": 76,
"action": "throttle",
"reset_day": 1,
"enabled": true
}
]
}
get_quota(mac)
Obtenir les informations detaillees de quota pour une MAC specifique.
Retourne :
{
"success": true,
"quota_id": "quota_phone",
"mac": "AA:BB:CC:DD:EE:FF",
"name": "iPhone Jean",
"limit_mb": 10240,
"used_mb": 7850,
"remaining_mb": 2390,
"percent": 76,
"action": "throttle",
"reset_day": 1
}
set_quota(mac, name, limit_mb, action, reset_day)
Creer ou mettre a jour un quota client.
Retourne :
{
"success": true,
"quota_id": "quota_1234567890",
"message": "Quota cree avec succes"
}
reset_quota(mac)
Reinitialiser le compteur de quota pour un client.
Retourne :
{
"success": true,
"message": "Compteur de quota reinitialise pour AA:BB:CC:DD:EE:FF"
}
get_usage_realtime()
Obtenir l'utilisation de bande passante en temps reel pour tous les clients actifs.
Retourne :
{
"clients": [
{
"mac": "AA:BB:CC:DD:EE:FF",
"ip": "192.168.1.100",
"hostname": "iPhone",
"rx_bytes": 1234567,
"tx_bytes": 987654,
"has_quota": true,
"limit_mb": 10240,
"used_mb": 7850
}
]
}
get_usage_history(timeframe, mac)
Obtenir les donnees d'historique d'utilisation.
Parametres :
timeframe: "1h", "6h", "24h", "7d", "30d"mac: Adresse MAC (optionnel, vide pour tous les clients)
Retourne :
{
"history": [
{
"mac": "AA:BB:CC:DD:EE:FF",
"timestamp": 1640000000,
"rx_bytes": 1234567,
"tx_bytes": 987654
}
]
}
Suivi du Trafic
Bandwidth Manager utilise iptables pour la comptabilite du trafic par client :
# Creer la chaine de suivi
iptables -N BW_TRACKING
# Ajouter des regles pour chaque MAC
iptables -A BW_TRACKING -m mac --mac-source AA:BB:CC:DD:EE:FF
iptables -A BW_TRACKING -m mac --mac-source BB:CC:DD:EE:FF:00
# Inserer dans la chaine FORWARD
iptables -I FORWARD -j BW_TRACKING
# Voir les compteurs
iptables -L BW_TRACKING -n -v -x
Les donnees d'utilisation sont stockees dans /tmp/bandwidth_usage.db au format pipe-delimited :
MAC|Timestamp|RX_Bytes|TX_Bytes
Implementation QoS
CAKE (Recommande)
tc qdisc add dev br-lan root cake bandwidth 100000kbit
Avantages :
- Gestion active des files (AQM)
- Fair queuing base sur les flux
- NAT-aware
- Faible latence
HTB (Controle Manuel)
tc qdisc add dev br-lan root handle 1: htb default 10
tc class add dev br-lan parent 1: classid 1:1 htb rate 100mbit
tc class add dev br-lan parent 1:1 classid 1:10 htb rate 50mbit ceil 100mbit prio 5
Depannage
QoS Non Fonctionnel
Verifier si QoS est actif :
tc qdisc show dev br-lan
Verifier les regles iptables :
iptables -L BW_TRACKING -n -v
Suivi de Quota Inexact
Reinitialiser les compteurs iptables :
iptables -Z BW_TRACKING
Verifier la base de donnees d'utilisation :
cat /tmp/bandwidth_usage.db
Utilisation CPU Elevee
Reduire la frequence de suivi ou utiliser le flow offloading hardware si disponible :
echo 1 > /sys/class/net/br-lan/offload/tx_offload
Bonnes Pratiques
- Definir des Limites Realistes : Configurer les vitesses telechargement/upload a 85-95% de votre vitesse de connexion reelle
- Utiliser CAKE : Preferer le qdisc CAKE pour les meilleures performances et la plus faible latence
- Surveiller d'Abord : Utiliser la vue temps reel pour comprendre les patterns de trafic avant de definir des quotas
- Reinitialisation Reguliere : Configurer les reinitialisations mensuelles le jour 1 pour s'aligner avec la facturation FAI
- Priorite Judicieuse : Reserver la priorite 1-2 pour VoIP/gaming, utiliser 5 (normal) pour la plupart du trafic
Considerations de Securite
- Les adresses MAC peuvent etre usurpees - utiliser avec d'autres mesures de securite
- Le suivi des quotas necessite l'acces iptables - securiser votre routeur
- Les emails d'alerte peuvent contenir des informations sensibles - utiliser des connexions chiffrees
- Les regles de traffic shaping sont visibles uniquement par l'administrateur reseau
Licence
Apache-2.0
Mainteneur
Projet SecuBox support@secubox.com
Version
1.0.0