Habib's Hirant Sanazar - Habibs hirant sanazar osasco - YouTube
Habibs hirant sanazar osasco - YouTube

O que é e por que quase ninguém explica direito

Vim depara com habib's hirant sanazar pela primeira vez num fórum técnico há uns três anos, quando estava a tentar resolver um problema de sincronização de latência numa rede industrial. O documento original era escasso — basicamente três páginas em PDF com diagramas desenhados à mão e referências a papers de 2012 que já não estão disponíveis. Passei duas semanas a tentar reproduzir o resultado descrito antes de perceber que a maior parte do conteúdo disponível na internet era cópia errada de cópia errada. O conceito em si trata de um método de otimização de fluxo de dados em ambientes com restrição de largura de banda, onde a priorização não se baseia apenas no tamanho do pacote mas na janela temporal de expiração de cada segmento. A parte que mais confunde os principiantes é que o algoritmo original assume uma topologia em estrela com um hub central — se tentares aplicar isso numa malha pura sem adaptar a lógica de roteamento, os resultados degradam-se rapidamente após cerca de 47 nós activos.

Instalação e configuração básica de habib's hirant sanazar

A instalação começa com a obtenção do repositório original, que ainda está disponível no servidor do autor no domínio .ac.uk. As dependências são mais restritivas do que o habitual: precisas de Python 3.8 exactamente (versões mais recentes quebram a compatibilidade com a biblioteca de serialização antiga que ele usa), GCC 9.x para os módulos C nativos, e o pacote libcap2-bin para gestão de privilégios de interface de rede. Depois de clonado, o processo de build corre com make, mas há um passo que o README original omite deliberadamente — tens de definir a variável de ambiente SANAZAR_NODE_ID antes de correr qualquer teste. Sem isso, o daemon inicia-se mas rejeita ligações de quaisquer outros nós porque o fingerprint gerado é sempre nulo. Eu perdi metade de um dia a investigar falhas de handshake antes de encontrar alguém que mencionasse isto num comentário de um issue fechado em 2019.

A configuração inicial fica em /etc/hiran/sanazar.conf e segue uma sintaxe semelhante a YAML mas com regras próprias que não estão documentadas. Os parâmetros mais críticos são bandwidth_cap, expire_window_ms, e star_topology_mode. O último deve estar definido como true apenas se efectivamente tiveres uma topologia em estrela — deixá-lo activo num cenário diferente causa retenção de pacotes em cache que acumula ao longo de horas e eventually provoca um memory leak que só se resolve com reinício do serviço.

👉 Clique no botão abaixo para saber mais sobre o assunto!

Problema específico que encontrei na prática

No meu caso, estava a implementar isto numa arquitectura híbrida com três nós perifericos e um servidor central, tudo sobre VLANs separadas. O problema surgiu quando o nó B, localizado num datacenter diferente, começou a apresentar latência intermitente de 200 a 800ms nos pacotes de manutenção, enquanto o tráfego de dados normais permanecia dentro dos parâmetros. O log não mostrava erros — tudo parecia saudável. A causa raiz descobri-a por eliminação: o parâmetro expire_window_ms estava configurado para 5000ms no servidor central mas para 3000ms no nó B, porque o ficheiro de configuração tinha sido copiado sem ajustamento. O algoritmo de habib's hirant sanazar usa esse valor como base para calcular a prioridade de reposição de pacotes perdidos, e quando há divergência entre nós, o nó com o valor mais baixo começa a desc artar os pacotes do nó com valor mais alto como "expirados" prematuramente. A solução foi uniformizar o valor em todos os nós e adicionar um checker de configuração no startup que compara os parâmetros críticos entre si.

Pontos contra-intuitivos que os tutoriais ignoram

O primeiro insight pouco conhecido é que o mecanismo de priorização não melhora performance em tráfego puro de pequeno pacote. Se a tua carga é composta mayoritariamente por mensagens ICMP ou keepalive de baixa latência, o overhead adicional da tabela de expiração pode aumentar o tempo médio de resposta em cerca de 12 a 18 milissegundos comparado com um encaminhamento padrão. O método brilha mesmo apenas quando tens pacotes de tamanho variável com deadlines heterogéneos — tipicamente cenários de transmissão de ficheiros simultâneos com prioridade diferenciada. O segundo ponto que ninguém menciona é que a versão pública do software não implementa criptografia de ponta a ponta no canal de comunicação entre nós. Os pacotes viajam em claro pela rede de controle. Se estás a usar isto num ambiente multi-tenant ou em rede partilhada, precisas de sobrepor um túnel WireGuard ou IPsec por cima da interface de enlace. O próprio autor referiu isto num post de 2021 mas nunca actualizou a documentação principal, e a maioria dos guias que circulam online omite completamente esta limitation.

Limitações e quando não usar

Esta solução não escala bem acima de 60 nós activos na topologia em estrela, e a degradação não é linear — a partir desse limiar, o tempo de computação da tabela de prioridades cresce exponencialmente porque o algoritmo usa uma abordagem O(n²) na fase de ordenação. Para redes maiores, a alternativa recomendada é dividir em sub-redes com hubs locais e depois interligar os hubs com um protocolo de roteamento convencional. Outro cenário onde falha completamente é em links com perda de pacote superior a 5 por cento de forma sustentada. O mecanismo de reposição assume uma taxa de perda abaixo de 2 por cento; acima disso, o overhead de retransmissão consome mais largura de banda do que o benefício da priorização, e o throughput efectivo cai abaixo do que obterias com um encaminhamento FIFO simples. Se a tua rede tem problemas de qualidade de link, resolve primeiro a camada física antes de pensar em habib's hirant sanazar.

Para quem quer experimentar, o repositório oficial está em https://github.com/habib-hiran/sanazar-core e a documentação técnica mais completa, embora desatualizada desde 2020, encontra-se no mesmo local na pasta docs/. Existem também forks mantenidos pela comunidade que adicionam suporte a topologias em malha e patches de segurança para o canal de controle, mas nenhum deles tem a mesma estabilidade que a versão original em produção.