Limiter la bande passante avec Mac OS X

Date: 23/01/2008 | Catégories: Open-source,Reseau,Systeme | Tags: ,

Attention:  Apple a choisi de migrer de IPFW vers PF à partir de OS X Lion (ce qui en soit un un bon choix…).

La syntaxe est complètement différente. Pour effectuer une limite de bande passante avec PF il faut passer par un module externe (à voir si il est installé par défaut sous OS X Lion) nommé altq.

Je conseille la lecture des billets suivants:
De IPFW à PF (sur ce blog)
Packet Queueing and Prioritization
Bandwidth Limiting with pf and ALTQ

bsd.jpeg

Je le rappelle assez souvent, Mac OS X est basée sur un noyau BSD. Ce dernier est très efficace, notamment en ce qui concerne les fonctions réseaux. Il est ainsi possible, en passant par la ligne de commande de limiter un flux à une bande passante donnée.

Par exemple, imaginons que l'on veuille limiter la bande passante d'un transfert de fichier HTTP venant du site www.telecharger.com afin de pouvoir continuer à surfer dans de bonne condition.

Il suffit de saisir les commandes suivantes:

# sudo ipfw pipe 1 config bw 1Mbit/s

Cette première commande génère un tuyau virtuel de 1 Mbit par seconde.

On peut voir la liste des tuyaux virtuels avec la commande:

# sudo ipfw pipe show

Ensuite on associe notre transfert de fichier HTTP (c'est donc du TCP sur le port 80) à ce tuyau virtuel:

# sudo ipfw add 1 pipe 1 proto tcp src-port 80 src-ip www.telecharger.com

Le débit du transfert HTTP devrait être limité à 1 Mbp/s.

Pour supprimer cette limitation, il suffit de supprimer la règle:

# sudo ipfw del 1

Enfin pour supprimer le tuyau virtuel:

# sudo ipfw pipe 1 delete

Il est même possible de simuler des délais de transit et des pertes de paquets dans ces tuyaux virtuels... et je ne parle même pas des fonctions de qualité de service (QoS de type priorité ou RED queue...).

Si c'est pas beau ça...