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>
540 lines
12 KiB
Markdown
540 lines
12 KiB
Markdown
[English](README.md) | [Francais](README.fr.md) | [中文](README.zh.md)
|
|
|
|
# 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
|
|
|
|
```bash
|
|
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` :
|
|
|
|
```bash
|
|
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 passante
|
|
- `interface` : Interface reseau a gerer (defaut : br-lan)
|
|
- `sqm_enabled` : Activer SQM/CAKE
|
|
|
|
#### Section SQM
|
|
- `download_speed` : Vitesse de telechargement en kbit/s
|
|
- `upload_speed` : Vitesse d'upload en kbit/s
|
|
- `qdisc` : 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 regle
|
|
- `type` : 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 client
|
|
- `name` : Nom convivial
|
|
- `limit_mb` : Limite mensuelle en Mo
|
|
- `action` : 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
|
|
|
|
```bash
|
|
ubus call luci.bandwidth-manager status
|
|
```
|
|
|
|
#### Lister les Regles QoS
|
|
|
|
```bash
|
|
ubus call luci.bandwidth-manager list_rules
|
|
```
|
|
|
|
#### Ajouter une Regle QoS
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
ubus call luci.bandwidth-manager delete_rule '{
|
|
"rule_id": "rule_1234567890"
|
|
}'
|
|
```
|
|
|
|
#### Lister les Quotas Clients
|
|
|
|
```bash
|
|
ubus call luci.bandwidth-manager list_quotas
|
|
```
|
|
|
|
#### Definir un Quota
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
ubus call luci.bandwidth-manager get_quota '{
|
|
"mac": "AA:BB:CC:DD:EE:FF"
|
|
}'
|
|
```
|
|
|
|
#### Reinitialiser le Compteur de Quota
|
|
|
|
```bash
|
|
ubus call luci.bandwidth-manager reset_quota '{
|
|
"mac": "AA:BB:CC:DD:EE:FF"
|
|
}'
|
|
```
|
|
|
|
#### Obtenir l'Utilisation Temps Reel
|
|
|
|
```bash
|
|
ubus call luci.bandwidth-manager get_usage_realtime
|
|
```
|
|
|
|
#### Obtenir l'Historique d'Utilisation
|
|
|
|
```bash
|
|
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 :**
|
|
```json
|
|
{
|
|
"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 :**
|
|
```json
|
|
{
|
|
"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 :**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"rule_id": "rule_1234567890",
|
|
"message": "Regle creee avec succes"
|
|
}
|
|
```
|
|
|
|
### delete_rule(rule_id)
|
|
|
|
Supprimer une regle QoS.
|
|
|
|
**Retourne :**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"message": "Regle supprimee avec succes"
|
|
}
|
|
```
|
|
|
|
### list_quotas()
|
|
|
|
Lister tous les quotas clients avec l'utilisation actuelle.
|
|
|
|
**Retourne :**
|
|
```json
|
|
{
|
|
"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 :**
|
|
```json
|
|
{
|
|
"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 :**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"quota_id": "quota_1234567890",
|
|
"message": "Quota cree avec succes"
|
|
}
|
|
```
|
|
|
|
### reset_quota(mac)
|
|
|
|
Reinitialiser le compteur de quota pour un client.
|
|
|
|
**Retourne :**
|
|
```json
|
|
{
|
|
"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 :**
|
|
```json
|
|
{
|
|
"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 :**
|
|
```json
|
|
{
|
|
"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 :
|
|
|
|
```bash
|
|
# 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)
|
|
|
|
```bash
|
|
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)
|
|
|
|
```bash
|
|
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 :
|
|
```bash
|
|
tc qdisc show dev br-lan
|
|
```
|
|
|
|
Verifier les regles iptables :
|
|
```bash
|
|
iptables -L BW_TRACKING -n -v
|
|
```
|
|
|
|
### Suivi de Quota Inexact
|
|
|
|
Reinitialiser les compteurs iptables :
|
|
```bash
|
|
iptables -Z BW_TRACKING
|
|
```
|
|
|
|
Verifier la base de donnees d'utilisation :
|
|
```bash
|
|
cat /tmp/bandwidth_usage.db
|
|
```
|
|
|
|
### Utilisation CPU Elevee
|
|
|
|
Reduire la frequence de suivi ou utiliser le flow offloading hardware si disponible :
|
|
```bash
|
|
echo 1 > /sys/class/net/br-lan/offload/tx_offload
|
|
```
|
|
|
|
## Bonnes Pratiques
|
|
|
|
1. **Definir des Limites Realistes** : Configurer les vitesses telechargement/upload a 85-95% de votre vitesse de connexion reelle
|
|
2. **Utiliser CAKE** : Preferer le qdisc CAKE pour les meilleures performances et la plus faible latence
|
|
3. **Surveiller d'Abord** : Utiliser la vue temps reel pour comprendre les patterns de trafic avant de definir des quotas
|
|
4. **Reinitialisation Reguliere** : Configurer les reinitialisations mensuelles le jour 1 pour s'aligner avec la facturation FAI
|
|
5. **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
|