Usando dial-out gRPC para coleta segura de telemetria
Entenda o dial-out do gRPC
A partir do Junos OS Release 22.4R1, o JTI oferece suporte remoto para dial-out gRPC em roteadores da Série ACX, roteadores da Série MX, roteadores da Série PTX e switches da Série QFX. Com o dialout do gRPC, o dispositivo-alvo (servidor) inicia uma sessão de gRPC com o coletor (cliente). Quando a sessão é estabelecida, o alvo transmite os dados de telemetria especificados pela assinatura do grupo de sensores ao coletor. Isso contrasta com o método de discagem de interface de gerenciamento de rede (gNMI) gRPC, no qual o coletor inicia uma conexão com o dispositivo alvo.
O dial-out do gRPC simplifica as estatísticas de telemetria de streaming. Configurar o dispositivo-alvo para transmitir estatísticas e exportá-las para um endereço IP de coletor elimina a carga do acesso que está sendo colocado no coletor (cliente). (ver Figura 1).

O dial-out do gRPC oferece vários benefícios em comparação com o dial-in gRPC:
Reduz a exposição de dispositivos-alvo a ameaças fora de sua topologia.
Simplifica o acesso a um dispositivo alvo. O método gRPC Dial-In requer que um coletor supere uma série de configurações complexas de firewall para obter acesso ao dispositivo alvo. O gRPC Dial-Out não.
Os coletores podem ser apátridos; sem a necessidade de iniciar uma sessão, eles simplesmente ouvem, se inscrevem e armazenam dados coletados.
Suporte à criptografia mútua para aumentar a segurança.
Para permitir a exportação de estatísticas, inclua o e sensor
as export-profile
declarações no nível [edit services analytics
] de hierarquia. O perfil de exportação deve incluir a taxa de relatórios, o serviço de transporte (por exemplo, gRPC) e o formato (por exemplo, gbp-gnmi). A configuração do sensor deve incluir o nome do coletor (nome do servidor), o nome do perfil de exportação e o caminho dos recursos. Um exemplo de um caminho de recursos é /interfaces/interface[name='fxp0'.
Configure um endereço de origem IP para conexões de discagem gRPC legadas
Começando pelo Junos OS Evolved Release 24.2R1, o JTI oferece suporte à configuração de um endereço IP de origem para conexões de discagem de serviço gRPC legadas em roteadores da Série ACX, roteadores da Série PTX e switches da Série QFX. Em versões anteriores que oferecem suporte ao dial-out gRPC legado, o endereço IP da interface de saída é usado como endereço fonte sem a opção de configurar um endereço IP de origem. Esse recurso oferece suporte a implantações FLEX, oferecendo a capacidade de enviar dial-out do endereço IP ou endereço de interface especificado do roteador (como um endereço loopback0).
Se você não configurar um endereço local, o endereço local padrão será usado.
Para configurar um endereço local:
Veja também
Configure uma instância de roteamento para conexões de discagem gRPC legadas
Começando pelo Junos OS Evolved Release 24.2R1, o JTI oferece suporte à configuração de uma instância de roteamento para conexões de discagem de serviço gRPC legadas em roteadores da Série ACX, roteadores da Série PTX e switches da Série QFX.
Se você não configurar uma instância de roteamento, a instância de roteamento padrão será usada.
Para configurar uma instância de roteamento:
Veja também
Visão geral dos túneis gRPC
Um túnel gRPC funciona como um protocolo cliente-servidor que disca uma sessão do alvo para o cliente TCP através da instância de roteamento padrão ou instância de roteamento configurada. Se você não optar por configurar uma instância de roteamento, o túnel gRPC usa a instância de roteamento padrão.
Você pode configurar o endereço fonte para cada sessão de túnel gRPC para discar uma conexão com o servidor do túnel. Se você não configurar o endereço de origem, o kernel escolhe o endereço de origem que pode chegar ao servidor do túnel.
Para obter mais informações sobre túneis gRPC, consulte https://github.com/openconfig/grpctunnel.
Um túnel gRPC tem três entidades principais:
-
Target — representa o dispositivo de rede. O alvo é um cliente gRPC.
-
Tunnel Server — uma entidade de software que é um aplicativo off-box que gerencia a assinatura e os registros direcionados. O servidor de túnel é um servidor gRPC.
-
Tunnel Client — uma entidade de software que executa tarefas do cliente. O cliente do túnel pode ser autônomo dentro do servidor do túnel. O cliente do túnel também é um cliente gRPC.
Benefícios do uso de uma sessão de túnel gRPC:
-
Supera uma série de configurações complexas de firewall à medida que a conexão é estabelecida do lado do servidor.
-
Acesse vários aplicativos de servidor TCP, como gNMI-gNOI, SSH ou NETCONF-SSH sem quaisquer requisitos operacionais.
Arquitetura de túnel gRPC
Um túnel gRPC é uma infraestrutura genérica para aplicativos baseados em TCP se comunicarem dentro de mensagens gRPC.
Em geral, o cliente TCP inicia uma conexão com o servidor ou o alvo do TCP. Os dispositivos Junos atuam como alvo que executa aplicativos de servidor TCP, como gNMI-gNOI, SSH e NETCONF-SSH. Se um cliente não conseguir entrar em contato com o servidor, os motivos comuns podem ser:
-
O servidor é executado em configurações complexas de firewall com firewalls que impedem conexões de entrada.
-
O servidor é executado em um roteador que implementa a tradução de endereços de rede (NAT).
-
O servidor se depara com quaisquer outros requisitos operacionais, o que impede conexões externas.
Quando um cliente TCP não é capaz de atingir um alvo, você pode configurar uma sessão de túnel gRPC para estabelecer uma conexão entre o cliente TCP e o alvo. Uma sessão de túnel gRPC estabelece uma conexão na direção inversa onde um alvo disca para um cliente TCP.
Para usar uma sessão de túnel gRPC, um cliente de túnel é adicionado ao lado alvo onde o processo de túnel grpc é executado e todas as configurações relacionadas ao túnel gRPC são realizadas. No lado cliente do TCP, um servidor de túnel é adicionado.
Você deve incluir a grpc-tunnel
declaração de configuração na [edit system services
] hierarquia para configurar uma sessão de túnel gRPC.
Segurança de túnel gRPC
O túnel gRPC é um modelo de discagem onde um dispositivo inicia uma conexão com base na configuração. O túnel gRPC está em um canal de gRPC seguro que usa certificados TLS.
Veja também
Exemplo: configure um túnel gRPC
Visão geral
Esta seção abrange as etapas necessárias para configurar o alvo para este exemplo. O foco está no alvo, pois esse é o dispositivo Junos onde o túnel gRPC está configurado.
Requisitos
Este exemplo usa os seguintes componentes de software e hardware:
-
Junos OS ou Junos Evolved Release 22.4 ou posterior para dispositivos de roteamento e comutação
-
Um dispositivo host como cliente do túnel
-
Um dispositivo host como servidor de túnel
Topologia
A Figura 1 mostra a topologia usada neste exemplo.

Com base na configuração Junos do dispositivo alvo, ele disca um túnel grpc para o servidor do túnel. O dispositivo alvo se registra com o servidor de túnel por meio do RPC de fluxo de registro.
Quando um cliente solicita uma sessão de TCP a um alvo específico, o servidor de túnel atua como um intermediário e se conecta à sessão alvo registrada acima no servidor do túnel.
Se o alvo suportar o tipo de alvo solicitado, o dispositivo discará um novo túnel chamado RPC de fluxo de túnel. Isso estabelece um túnel gRPC entre o cliente e o alvo através do servidor do túnel. O cliente do túnel agora pode acessar os aplicativos TCP pretendidos no alvo.
Só pode haver um fluxo de registro entre um servidor de túnel e o dispositivo de rede, mas vários fluxos de túnel para o mesmo par.
Configure um túnel gRPC
Configuração rápida da CLI
Para configurar rapidamente este exemplo, copie os seguintes comandos, cole-os em um arquivo de texto, remova qualquer quebra de linha, altere os detalhes necessários para combinar com a configuração da sua rede e, em seguida, copie e cole os comandos no CLI no nível de hierarquia [editar].
set system services grpc-tunnel servers server server1 address 10.205.0.1 set system services grpc-tunnel servers server server1 port 50301 set system services grpc-tunnel servers server server1 credentials tls certificate-id client-cert1 set system services grpc-tunnel servers server server1 targets ssh
Procedimento passo a passo
Siga essas etapas para configurar o túnel gRPC no dispositivo alvo.
-
Configure os servidores sob o túnel gRPC.
-
Configure o endereço ou nome de host IPv4 ou IPv6 do servidor do túnel.
[edit system services] user@host# set grpc-tunnel servers server server1 address 10.205.0.1
-
Configure o número de porta pelo qual o servidor do túnel ouve.
[edit system services] user@host# set grpc-tunnel servers server server1 port 50301
-
Configure as credenciais usando a declaração tls .
[edit system services] user@host# set grpc-tunnel servers server server1 credentials tls certificate-id client-cert1
-
Especifique os aplicativos-alvo que você deseja acessar. As opções disponíveis são sshnetconf-ssh e gnmi-gnoi.
[edit system services] user@host# set grpc-tunnel servers server server1 targets ssh
-
-
(Opcionalmente) Definir o intervalo de refinação (em segundos). Se o servidor de túnel for inalcançável, o dispositivo-alvo se retrie para se conectar após o intervalo de retítidão.
[edit system services] user@host# set grpc-tunnel servers retry-interval 30
-
(Opcionalmente)
Definir a instância de roteamento. Se você não definir a instância de roteamento, o túnel gRPC usa a instância de roteamento padrão.[edit system services] user@host# set grpc-tunnel servers server ts1 routing-instance routing-instance
-
(Opcionalmente)
Definir o endereço de origem. Se você não definir o endereço de origem, o kernel escolhe o endereço de origem que pode chegar ao servidor do túnel.[edit system services] user@host# set grpc-tunnel servers server ts1 source-address 69.70.31.677
-
(Opcionalmente) Configure a opção de string-alvo sob o túnel grpc.
-
Use a declaração de padrão para criar uma lista ordenada de opções suportadas.
[edit system services] user@host# set grpc-tunnel target-string-option pattern hostname custom
-
Use a declaração de string personalizada para definir uma string personalizada que é enviada quando o padrão de declaração contém custom como uma das opções.
[edit system services] user@host# set grpc-tunnel target-string-option custom-string device1
-
Use a declaração do delimiter quando mais de uma opção for selecionada no padrão. Por padrão, o (símbolo de | tubo) é usado.
[edit system services] user@host# set grpc-tunnel target-string-option delimiter |
-
Um máximo de 10 servidores de túnel pode ser configurado.
Resultados
Exibir os resultados da configuração no dispositivo alvo. A saída reflete apenas a configuração funcional adicionada neste exemplo.
user@host> show configuration system services
grpc-tunnel { servers { retry-interval 30; server server1 { address 10.205.0.01; port 50301; credentials { tls { certificate-id client-cert1; } } targets [ ssh ]; routing-instance routing-instance; source-address 69.70.31.677; } server server2 { address 10.205.0.02; port 50302; credentials { tls { ca-profiles [ serverRootCA1 serverRootCA2 ]; } } targets [ gnmi-gnoi netconf-ssh ]; routing-instance routing-instance; source-address 69.70.31.677; } } target-string-option { pattern [ hostname vendor model version custom ]; custom-string device1; delimiter |; } }
Tabela de histórico de mudanças
O suporte de recursos é determinado pela plataforma e versão que você está usando. Use o Feature Explorer para determinar se um recurso é suportado em sua plataforma.