Je travaille actuellement sur une solution de mise en forme du trafic pour les entreprises de niveau FAI, et est arrivé à un problème intéressant (un peu philosophique).
En regardant le nombre de points finaux que le système devrait gérer (ce qui est d'environ ~ 20k), je me suis un peu inquiété de ce qui se passerait lorsque j'aurais besoin de définir / définir le trafic d'un plus grand nombre d'utilisateurs. Comme j'utilise actuellement l'arbre de mise en forme HFSC (voir tc-hfsc, principalement la même chose mais plus cool que HTB mieux connu) pour l'ensemble du réseau, je devrais utiliser plus de ClassID (évidemment au moins un pour chaque utilisateur sur le réseau). Le problème que j'ai trouvé était que les TC ClassID sont un peu limités - ce sont des nombres de 16 bits, ce qui me donne un maximum possible de 64 000 utilisateurs façonnés par cette solution.
De même, si je souhaite gérer efficacement les filtres TC (par exemple, sans utiliser la «technique de vidage complet»), je dois pouvoir supprimer ou modifier des entrées de filtre individuelles. (J'utilise quelque chose de similaire à la table de hachage de LARTC [1]). Encore une fois, la seule méthode qui semble fonctionner est de numéroter tous les filtres en utilisant des priorités individuelles (filtre tc add dev ... prio 1). Aucun autre paramètre ne peut être utilisé à cette fin, et, malheureusement, prio est également en 16 bits uniquement.
Ma question est la suivante: existe-t-il une bonne méthode pour agrandir "l'espace identifiant" disponible, comme les clsid 32 bits pour la commande 'tc class', et les priorités 32 bits (ou tout autre descripteur de modification) pour 'filtre tc' commander?
Merci beaucoup,
-mk
(btw j'espère que cela n'ira pas au scénario "64k utilisateurs devraient suffire à tout le monde" ...)
Réponses:
je pense que vous ne devriez pas mettre 64k utilisateurs avec des classes et des filtres en amont et en aval pour chacun d'eux sur la même interface. Vous pouvez répéter les gestionnaires pour chaque interface dont vous disposez, alors ajoutez d'autres interfaces. Vous aurez besoin d'un travail / serveur / NIC incroyable pour avoir ces choses. Si le serveur tombe en panne, vous aurez 64k utilisateurs hors ligne (et il se plantera facilement avec cette quantité de trafic). N'oubliez pas que CHAQUE paquet qui passe par votre carte réseau sera vérifié et classé par un filtre et envoyé à une classe pour être mis en file d'attente. C'est beaucoup de travail pour une carte réseau d'une passerelle ISP avec 64k clients. Principalement avec tout le flux vidéo que nous avons de nos jours (ce qui est difficile à mettre en file d'attente correctement).
la source
Vous pouvez diviser la gestion du trafic en deux machines (en utilisant une troisième) au lieu de gérer tout le trafic sur une machine. Le trafic peut être acheminé simplement en fonction de l'adresse IP source. Ainsi, vous disposerez de 10 000 utilisateurs de manière optimale si vous pouvez diviser la ou les plages IP de manière égale.
Bien sûr, vous pouvez utiliser plus de deux machines si nécessaire. Je pense que cela peut être mieux que de patcher le noyau Linux et de faire d'autres hacks. En bref, la mise en forme du trafic sera répartie sur plusieurs machines. Le nœud central transmettra simplement le trafic au bon nœud de traitement.
la source