Para  utilizarmos o controle de tráfego com 
HTB temos que saber que o 
Linux possui os seguintes componentes para o controle de tráfego, são eles: 
Seus conceitos encontram-se detalhados logo abaixo.
Qdisc
Os qdiscs (qdisc é abreviação de 
Queueing Discipline -  algo como Disciplina de Enfileiramento) nada mais são do que as filas de saída dos pacotes. O Linux possui dois tipos de qdisc: classless e classfull. 
Os qdiscs classless não podem conter classes definidas pelo usuário, porém os qdiscs classfull podem conter subclasses definidas pelo usuário, podendo desta forma separar e atribuir quantidades de banda diferentes para cada tipo de fluxo definido. 
O qdisc chamado de "root" só pode ser atribuído para cada interface de rede. Por padrão o Linux atribui o qdisc "pfifo_fast" para todas as interfaces de rede de sua máquina, porém isso pode ser mudado, como veremos mais adiante. 
Claro que existem mais qdiscs classless e classfull do que os que vou conceituar aqui, no entanto vou citar apenas os utilizados por mim para implementar o controle de tráfego com HTB.
Classless Qdiscs
PFIFO_FAST:
O 
pfifo_fast é o qdisc padrão do Linux e é baseado no FIFO (First-in First-out).
SFQ (Stochastic Fairness Queueing):
Este qdisc é utilizado para que se possa distribuir de maneira igualitária a oportunidade de cada flow  ser servido. E para que isso possa acontecer ele se utiliza do algoritmo de escalonamento "round-robin" para servir as filas. Ele possui um parâmetro "perturb", que verifica em segundos a solicitação de banda por conexão.
Classfull Qdiscs
HTB:
O HTB é um qdisc com suporte a classes, por isso ele pode ser usado como um qdisc (escalonador) ou apenas uma classe. Quando utilizado com uma classe, ele possui o parâmetro opcional "default", que indica a subclasse por onde o pacote deve ir quando não for classificado por nenhum filtro definido pelo usuário.
Como escalonador o HTB possui, dentre outros, os seguintes parâmetros :
-  rate - velocidade de transmissão dos pacotes.
-  burst - tamanho máximo em bytes que pode ser acumulado para rajada.
-  ceil - velocidade total da classe superior. Utilizado para fazer o "borrowing", ou seja, empréstimo de banda excedente de uma classe para outra.
Class
As classes só existem em qdiscs classfull, elas são utilizadas para dividir o tráfego, para assim se necessário dar um tratamento diferenciado. Existem dois tipos de classes, as "leafs" (ou "folhas"), que são classes que não possuem "filhos" e as "inner" (ou "internas"), que são classes que possuem "filhos".
Filter
Os filtros tem a função de separar o tráfego entre as diversas classes de um qdisc classfull. Esta função é feita através de classificadores.
Classificadores
Os classificadores no Linux são utilizados para identificar certas características e/ou padrões dos pacotes e fluxo, permitindo assim a separação em classes. Falarei apenas do classificador U32, no qual utilizei em meus estudos.
U32:
O u32 é um classificador muito bom e que possui uns parâmetros interessantes, no qual é possível identificar IP de origem/destino, porta de origem/destino e até mesmo o protocolo, abaixo listo os parâmetros que utilizei:
-  ip src IP/MASK - classifica pacotes com origem em IP/MASK.
-  ip dst IP/MASK - classifica pacotes com destino em IP/MASK.
-  ip sport NN 0xffff - classifica pacotes com porta de origem NN. O parâmetro 0xffff é uma máscara de 32 bits.
-  ip dport NN 0xffff - classifica pacotes com porta de destino NN. O parâmetro 0xfff é uma máscara de 32 bits.
-  ip protocol NN 0xff - classifica pacotes de acordo com o protocolo especificado. No Debian Sarge dar uma olhada em /etc/protocols.
-  flowid X:Y - classifica que pacotes que tiverem este identificador devem ser colocado na class X:Y.