Skip to content

Instantly share code, notes, and snippets.

@leleobhz
Created February 4, 2017 16:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save leleobhz/d97612cdd3af960a7eeb66c0a2b74914 to your computer and use it in GitHub Desktop.
Save leleobhz/d97612cdd3af960a7eeb66c0a2b74914 to your computer and use it in GitHub Desktop.
ZeroTier TechFAQ pt_BR - Partial
** Como o ZeroTier funciona? **
Os nós de endpoint ZeroTier formam uma rede ponto a ponto e usam um conjunto de nós pré configurados chamados servidores raiz (Atualmente rodados por nós, federação está nos planos) como pontos de ancoragem estaveis para uma conexão de peer quase instantânea e sem configuração prévia. Nas documentações antigass nós chamavamos de super nós, mas começamos a chama-los de raiz porque suas funções são mais limitadas do que implica o termo super e está mais próximo do que seria um servidor raiz de DNS. Eles executam o mesmo programa de código aberto que um nó ZeroTier regular. Eles são simplesmente "abençoados" como nós principais e rodam em datacenters gigantes com redes rápidas de IP fixo.
Nós chamamos esta rede ponto a ponto de Virtual Layer 1 (VL1). No modelo OSI de arquitetura de redes, este seria o "cabo". Como ZeroTier se trata de virtualização de redes, estes cabos são imaginários, feitos de matemática (criptografia e endereçamento, no lugar de cabos físicos ou radio enlaces.
Sobre este cabeamento virtual, o software ZeroTier cria o VL2: uma camada Ethernet virtual similar ao VXLAN. LANs VL2 são o que seus dispositivos, containers, máquinas virtuais e aplicações veem como "rede". Considerando que o VL2 parece e se comporta como o protocolo Ethernet, todos os protocolos que usamos todos os dias (IPv4, IPv6, TCP, etc) funcionam corretamente. ZeroTier permite uma comunicação ponto a ponto sobre redes convencionais com protocolos de rede padrão.
Os endereços de dispositivo com 10 dígitos do ZeroTier são endereços VL1. A numeração de 16 dígitos hexadecimais que identificam as redes são identificadores de rede VL2. Identificadores de rede são maiores que identificadores de dispositivo porque os identificadores de dispositivo contém os identificadores de dispositivo: Para cada rede existe um controlador primário de rede responsável por configurar a rede e os certificados dos membros. A rede 8056c2e21c000001 que sugerimos para testes na página inicial do projeto é controlada pelo controlador de rede 8056c2e21c que nós operamos.
** Quais portas ele usa? **
Por padrão, o ZeroTier usa a porta UDP 9993, ainda que peers remotos possam aparecer em portas diferentes devido ao NAT em suas pontas.
Se o protocolo UDP for incomunicavel, ZeroTier irá tentar a porta de saída TCP 443 como alternativa. Nós provemos um relay TCP de último recurso como serviço gratuito, portanto o ZeroTier irá funcionar praticamente em qualquer lugar, mas se você puder modificar a sua rede para eliminar a necessidade disso, a performance será muito melhor. O relay TCP de última-alternativa é o modo de operação mais lento possível.
** Como o trafego flui na rede ZeroTier? **
Sempre que possível, o trafego flui diretamente de um dispositivo para o outro. O ZeroTier usa um mecanismo chamado "Transport Triggered Link Provisioning" para estabelecer conexões diretas, assim como técnicas como "UDP hole punching" (https://projetos.inf.ufsc.br/arquivos_projetos/projeto_7/MonografiaVOIPH323NAT.pdf - Sessão 4.2.3) para possibilitar o funcionamento sobre dispositivos que executem NAT. Estas técnicas são similares às utilizadas por telefones VoIP, aplicações de videoconferência e outros programas que usam conexões ponto a ponto diretas.
Se a conectividade direta for impossível, ZeroTier provê um redirecionamento de tráfego gratúito. Isso garante um serviço quase que universalmente acessível, ainda que a performance torne-se pior se a conexão direta não puder ser estabelecida. (Veja a sessão Solução de problemas para os passos que podem garantir que a conectividade direta está funcionando).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment