Existem muitos artigos na Internet dedicados à limitação de velocidade e compartilhamento de tráfego no equipamento MikroTik, mas quase todos consideram apenas a Árvore de filas, que requer um entendimento profundo e é redundante em muitas tarefas e pode ser substituída por Filas simples.
Filas simplificadas - um mecanismo para dividir a capacidade do canal e priorizar o tráfego vinculado a um destino específico. O tráfego de entrada e saída é calculado em relação ao destino.
Existem três opções para objetivos: ip, sub-rede, interface. Você pode adicionar vários destinos para uma regra.
Parte teórica
Modeladores, planejadores e filas
A taxa de dados é medida em relação à informação transmitida em bits por segundo de tempo - bit / s. A unidade de bit é pequena, então eles usam os prefixos kilo (kbit / s), mega (Mbit / s), gig (Gbit / s).
A velocidade de transmissão de pacotes nas redes de comunicação é sempre igual à velocidade de transmissão do meio (por exemplo, 100Mbit / s para Ethernet 100BASE-TX). Se for necessário reduzir essa velocidade, um dispositivo intermediário, como um roteador, recebendo pacotes de uma interface na velocidade máxima, envia-os de outra com um certo atraso; se os pacotes excederem o limite de velocidade definido, eles serão armazenados em uma fila e enviados de acordo com o primeiro a entrar, primeiro a sair ( FIFO), se a fila estiver cheia (tamanho ausente ou zero), o roteador descartará os pacotes.
Limite - limite de velocidade administrativa para o tráfego proveniente da interface.
Shaper (Shaper) - um algoritmo de software que atrasa e descarta pacotes em excesso.
Scheduler (Sheduler) - um algoritmo que decide como armazenar e enviar pacotes que ultrapassam o limite.
Filas - algoritmos de armazenamento e priorização de tráfego.
Exemplos gráficos do trabalho de um shaper e agendador.
Usando um modelador fora de linha

Usando um Shaper com um Agendador

Filas simples no fluxo de pacotes
Filas simples vêm depois da Árvore de filas, às vezes filas simples são usadas para limitar rapidamente o tráfego a um (ou vários) usuários, sem interferir na Árvore de filas.
Fluxo de pacotes simplificado para os interessados Mecânica de filas: none, pfifo, pcq
none - nenhuma fila; se o limite for excedido, todos os novos pacotes serão descartados.
O pfifo é um algoritmo fifo orientado a pacotes. Armazena o número de pacotes especificados nas configurações. Usado por padrão em filas simples.

pcq (por fila de conexão) - todo o tráfego é dividido em sub-filas, dependendo de um conjunto de condições. De cada sub-fila, parte do tráfego é enviada alternadamente. O espaço vago é ocupado pelo tráfego recém-chegado. Se o local na sub-fila acabar, os pacotes destinados a ele serão descartados.

Considere uma pequena parte das configurações:
Taxa : limite de velocidade para cada uma das sub-filas.
Limite : tamanho da sub-fila em kilobytes.
Limite total : o tamanho total de todas as sub-filas em kilobytes.
A proporção Limite / Limite total é selecionada com base na situação. Por padrão, 40 filas (2000/50), sujeitas ao preenchimento máximo de tráfego.
Explosão : sobre ele será menor.
Classificador : com base no que dividir o tráfego em filas.
O classificador divide seqüencialmente várias conexões (conexões), se você selecionar [IP] -> [Firewall] -> [Conexões], pode-se observar que a maioria das conexões contém o endereço e a porta do remetente (endereço src. Porta src. Porta) e o destinatário ( endereço padrão, porta padrão).
Discutimos filas simples, portanto, para simplificar, consideraremos que filtramos apenas o tráfego proveniente da interface wan; nesse caso, em relação ao destino, o tráfego de saída (upload) será classificado por src. endereço e a entrada (download) da dst. endereço.
A classificação por porta ajudará a evitar a situação de entupir a fila com o tráfego de um aplicativo, se um aplicativo produzir muitas conexões de saída (por exemplo, torrent ou Web. Navegador com várias guias), o src será diferente. porta e tráfego também serão divididos em filas.
Modelagem dinâmica usando PCQ
Se a taxa for codificada, cada subfluxo terá uma velocidade determinada e não poderá exceder até que a velocidade total de todos os subfluxos exceda o limite mais alto (em filas simples, é o limite total); nesse caso, a velocidade de todos os subfluxos diminuirá proporcionalmente.

Se a Taxa estiver definida como 0, a restrição mais alta será compartilhada entre todos os sub-fluxos. De fato, isso é modelagem dinâmica.

Se a Taxa estiver definida como 0 e o Limite total para filas simples não for especificado, a velocidade entre os subencadeamentos será dividida com base em um limite mais alto, se as filas não estiverem aninhadas, essa é uma limitação da interface física. Se o seu plano tarifário for mais baixo, parte do tráfego será eliminada no equipamento do fornecedor e não haverá benefício nas filas.

Os demais tipos de filas (SFQ, RED) têm suas próprias peculiaridades e aplicativos e também podem ser usados para filas simples, mas agora não são de nosso interesse.
Rotulagem de Pacotes
Sim, em filas simples, você pode usar o tráfego rotulado. Isso não é um pré-requisito (diferente da Árvore de filas), mas permite que você se afaste das limitações do destino.
A rotulagem de tráfego ocorre em [IP] -> [Firewall] -> [Mangle], no total, existem três tipos de etiquetas: Conexão, Pacote, Rota. Cada pacote pode conter um rótulo de cada tipo. Uma vez no mangle, a embalagem passa uma a uma de acordo com todas as regras; se houver duas etiquetas de conjunto derretidas, a regra inferior substituirá a etiqueta da etiqueta superior. Para evitar a substituição, você pode desativar a passagem de um pacote pela cadeia na primeira regra ( passtrought=no
).
Ao configurar filas, você pode usar apenas rótulos de pacotes ( action=mark-packet
). Mas, para melhorar o desempenho (os rótulos das conexões são verificados mais rapidamente do que as condições de cada pacote), é recomendável marcar as conexões ( action=mark-connection
) primeiro e depois os pacotes nessa conexão ( action=mark-package
). A regra com conexões de pré-marcação nem sempre é verdadeira, mas se você chegou a esse entendimento ao criar filas, deve usar a Árvore de filas.
Você pode marcar o tráfego de trânsito em qualquer uma das cadeias de fluxo de pacotes, mas na maioria dos casos eu prefiro usar o encaminhamento, porque Nesta fase, os endereços do destinatário com o remetente e os nomes das interfaces de entrada e saída são conhecidos.
Exemplo de rotulagem de tráfego
/ip firewall mangle add action=mark-connection chain=forward connection-state=new dst-port=5060,10000-20000 new-connection-mark=output-sip-and-rtp passthrough=yes protocol=udp src-address=192.168.100.0/24 add action=mark-packet chain=forward connection-mark=output-sip-and-rtp new-packet-mark=output-packet-sip-and-rtp passthrough=no
O que é burst
Geralmente, o limite de velocidade é entendido como um certo valor estático do limite por segundo ao atingir os pacotes descartados ou na fila. O Burst opera com um valor médio por unidade de tempo, isso possibilita o uso de velocidades mais altas (pico) em curtos períodos de tempo e limita a velocidade com uma carga constante no canal.
Limite máximo é a principal limitação.
Limite de Ruptura - velocidade de pico, tem prioridade sobre o Limite Máximo ao observar a velocidade média especificada.
Limite de Ruptura - velocidade do limite.
Burst Time - hora.
O alvo obtém a velocidade do Limite de Ruptura, mas a cada segundo a velocidade média do tempo de Ruptura será calculada. Se a velocidade média por um determinado tempo exceder o limite de ruptura, o usuário ficará limitado ao limite máximo; se a velocidade média retornar ao normal, o alvo receberá novamente o limite de explosão.
Estudo de caso de rupturaRegra de ruptura:

Fluxograma mostrando a alteração da velocidade desejada:

E como é a velocidade de destino alterada:

Se você estiver interessado no tema Burst, recomendo ler as informações no wiki , existem gráficos e tabelas com base nas quais será melhor entender como os valores de Limite e Tempo afetam o limite de velocidade.
Limite de diferença em e limite máximo

Limite em - velocidade garantida para a regra. É desejável que a soma de todo o limite em não exceda a largura de banda do canal. Sempre menor que o máximo.
Limite máximo - velocidade máxima para a regra. Se o "orçamento" da fila permitir, a largura de banda máxima será alocada.
Normalmente, apenas o limite máximo é indicado em filas simplificadas e isso funciona bem, mas em uma configuração de fila em cascata, os dois limites devem ser especificados.
Parte prática
Filas simples são configuradas em [Filas] -> [Filas simples].
As regras são processadas alternadamente de cima para baixo, a primeira regra adequada é aplicada ao pacote que passa. De fato, uma exceção pode ser feita a partir de qualquer regra, colocando uma regra mais específica acima.
Limite de velocidade do host / sub-rede / interface
Geralmente é usado quando é necessário diminuir a velocidade de um usuário específico.
Nome: qualquer nome
Destino: endereço, sub-rede ou interface.
Upload de destino: limite de velocidade de saída.
Targer Download: limite de velocidade recebido.
Limite de velocidade de 1Mbit / s:

/queue simple add max-limit=1M/1M name=Limit-For-100.200 queue=default/default target=192.168.100.200/32
Em Estatísticas, você pode verificar a velocidade atual do destino, o número de pacotes na fila e o número de pacotes descartados.
Limite de velocidade para um recurso remoto
Opção sem rotular pacotes.
No campo dst, da mesma forma que o destino pode ser especificado: ip, sub-rede, interface. Nas condições da Internet moderna, isso não é suficiente, mas pode ser útil para pequenas empresas e limites de velocidade entre escritórios.

/queue simple add dst=192.168.200.10/32 max-limit=10M/10M name=Limit-For-Fileserver target=192.168.100.0/24
Divisão igual de canal entre participantes da sub-rede (pcq)
Uma regra que salvará sua sub-rede doméstica ou do escritório da captura exclusiva de canal (no exemplo 50 Mb / s, ajuste ao seu canal) por um usuário.

As filas pcq especificadas estão presentes na configuração básica, mas anexo capturas de tela em caso de alterações.

# /queue type add kind=pcq name=pcq-upload-default pcq-burst-rate=0 pcq-burst-threshold=0 pcq-burst-time=10s pcq-classifier=src-address pcq-dst-address-mask=32 pcq-dst-address6-mask=128 pcq-limit=50KiB pcq-rate=0 pcq-src-address-mask=32 pcq-src-address6-mask=128 pcq-total-limit=2000KiB add kind=pcq name=pcq-download-default pcq-burst-rate=0 pcq-burst-threshold=0 pcq-burst-time=10s pcq-classifier=dst-address pcq-dst-address-mask=32 pcq-dst-address6-mask=128 pcq-limit=50KiB pcq-rate=0 pcq-src-address-mask=32 pcq-src-address6-mask=128 pcq-total-limit=2000KiB # Simple queues /queue simple add max-limit=50M/50M name=Limit-Equivalent queue=pcq-upload-default/pcq-download-default target=192.168.100.0/24
Na guia Estatísticas, você pode ver quantos threads de pcq estão atualmente na fila.

Tráfego marcado
A opção dst é bastante limitada e, se você quiser usar nomes de domínio ou listas de endereços, precisará recorrer à marcação de tráfego. Por exemplo, removeremos as restrições para o domínio yandex.ru (sim, um monte de cdn'ok está conectado lá e outras coisas, e para operação normal, você precisará adicioná-las).
Em uma versão recente, tornou-se possível adicionar nomes de domínio às listas de endereços, o mikrotik os resolverá automaticamente e adicionará entradas dinâmicas.

Marcando o tráfego http / https (conexão e pacotes na conexão) para os endereços especificados:



Regra na fila simples:

# /ip firewall address-list add address=yandex.ru list=ForQueues add address=yastatic.net list=ForQueues # /ip firewall mangle add action=mark-connection chain=forward connection-state=new dst-address-list=ForQueues dst-port=80,443 new-connection-mark=Mark-ForQueues passthrough=yes protocol=tcp src-address=192.168.100.0/24 add action=mark-packet chain=forward connection-mark=Mark-ForQueues new-packet-mark=Mark-Packet-ForQueues passthrough=no # Simple Queue /queue simple add max-limit=1M/1M name=Limit-For-Yandex packet-marks=Mark-Packet-ForQueues target=192.168.100.0/24
Filas em cascata
Tudo o que foi dito acima se refere à limitação e divisão da velocidade entre os participantes da rede, é hora de abordar o tema da priorização de tráfego. Normalmente, é necessário para tráfego interativo (voip, vcs, ssh, rdp, ...) em um canal limitado e ocupado.
Para filas em cascata, o parâmetro Parent é responsável, que se refere à fila "parent". Para funcionar, todo o tráfego das filas "filho" deve ser capturado pelo pai.
O parâmetro Priority é responsável por qual tráfego será adicionado à fila anteriormente, funciona apenas em filas filhas (ou em "pai" se não tiverem "filho"), pode levar valores de 1 (prioridade mais alta) a 8 e não possui nada comum com tags QoS (DSCP; TOS).
Pré-marcação de tráfego:

/ip firewall mangle add action=mark-connection chain=forward connection-state=related,new dst-port=5060,10000-20000 in-interface=br-lan new-connection-mark=mark-conn-voip passthrough=yes protocol=udp add action=mark-packet chain=forward connection-mark=mark-conn-voip new-packet-mark=mark-pkg-voip passthrough=no add action=mark-connection chain=forward connection-state=new dst-port=80,443 in-interface=br-lan new-connection-mark=mark-conn-web passthrough=yes protocol=tcp
Filas no SimpleQueue:





/queue simple add limit-at=24M/24M max-limit=25M/25M name=main target=10.10.10.0/24 add limit-at=5M/5M max-limit=8M/8M name=voip packet-marks=mark-pkg-voip parent=main priority=1/1 queue=pcq-upload-default/pcq-download-default target="" add limit-at=10M/10M max-limit=20M/20M name=web packet-marks=mark-pkg-web parent=main priority=2/2 queue=pcq-upload-default/pcq-download-default target="" add limit-at=10M/10M max-limit=20M/20M name=other packet-marks=mark-pkg-other parent=main priority=3/3 queue=pcq-upload-default/pcq-download-default target=""
Agora, se você precisar fazer uma restrição para um IP, basta colocar a regra na frente da cascata de filas.
Posfácio
O Simple Queues é uma ferramenta bastante interessante e funcional para configurações domésticas e SOHO. Com uma regra (sem recorrer à rotulagem de tráfego), você pode resolver o problema de captura de canal por um dispositivo. Mas, se você usar o FastTrack, esqueça as filas - o tráfego passará por elas.
Para configurações mais complexas, existem árvores de filas (árvores HTB).