Uso de la llamada gRPC para la recopilación segura de telemetría
Descripción de la llamada de salida gRPC
A partir de Junos OS versión 22.4R1, JTI admite la compatibilidad con la llamada remota gRPC en enrutadores serie ACX, enrutadores serie MX, enrutadores serie PTX y conmutadores serie QFX. Con el marcado gRPC, el dispositivo de destino (servidor) inicia una sesión gRPC con el recopilador (cliente). Cuando se establece la sesión, el destino transmite al recopilador los datos de telemetría especificados por la suscripción del grupo de sensores. Esto contrasta con el método de acceso telefónico de la interfaz de administración de red gRPC (gNMI), en el que el recopilador inicia una conexión con el dispositivo de destino.
El marcado gRPC simplifica las estadísticas de telemetría de streaming. La configuración del dispositivo de destino para transmitir estadísticas y exportarlas a una dirección IP del recopilador elimina la carga del acceso que recae sobre el recopilador (cliente). (ver Figura 1).

La llamada gRPC ofrece varios beneficios en comparación con la llamada gRPC:
Reduce la exposición de los dispositivos de destino a amenazas fuera de su topología.
Simplifica el acceso a un dispositivo de destino. El método de acceso telefónico gRPC requiere que un recopilador supere una serie de configuraciones complejas de firewall para obtener acceso al dispositivo de destino. gRPC Dial-Out no.
Los recolectores pueden ser apátridas; Sin la necesidad de iniciar una sesión, simplemente escuchan, se suscriben y almacenan los datos recopilados.
Admite el cifrado mutuo para una mayor seguridad.
Para habilitar la exportación de estadísticas, incluya las export-profile
instrucciones y sensor
en el nivel de jerarquía [edit services analytics
]. El perfil de exportación debe incluir la tasa de informes, el servicio de transporte (por ejemplo, gRPC) y el formato (por ejemplo, gbp-gnmi). La configuración del sensor debe incluir el nombre del recopilador (el nombre del servidor), el nombre del perfil de exportación y la ruta del recurso. Un ejemplo de una ruta de recurso es /interfaces/interface[name='fxp0'.
Configurar una dirección IP de origen para conexiones de marcado de gRPC heredadas
A partir de Junos OS Evolved versión 24.2R1, JTI admite la configuración de una dirección IP de origen para conexiones de llamada de servicio gRPC heredadas en enrutadores serie ACX, enrutadores serie PTX y conmutadores serie QFX. En versiones anteriores que admiten el marcado gRPC heredado, la dirección IP de la interfaz saliente se utiliza como dirección de origen sin opción para configurar una dirección IP de origen. Esta función es compatible con las implementaciones FLEX, lo que permite enviar llamadas salientes desde la dirección IP o la dirección de interfaz especificadas del enrutador (como una dirección loopback0).
Si no configura una dirección local, se utilizará la dirección local predeterminada.
Para configurar una dirección local:
Ver también
Configurar una instancia de enrutamiento para conexiones de marcado de gRPC heredadas
A partir de Junos OS Evolved versión 24.2R1, JTI admite la configuración de una instancia de enrutamiento para conexiones de marcado de servicio gRPC heredadas en enrutadores de la serie ACX, enrutadores de la serie PTX y conmutadores de la serie QFX.
Si no configura una instancia de enrutamiento, se utilizará la instancia de enrutamiento predeterminada.
Para configurar una instancia de enrutamiento:
Ver también
Descripción general de los túneles gRPC
Un túnel gRPC actúa como un protocolo cliente-servidor que marca una sesión desde el destino al cliente TCP a través de la instancia de enrutamiento predeterminada o la instancia de enrutamiento configurada. Si no elige configurar una instancia de enrutamiento, el túnel gRPC utiliza la instancia de enrutamiento predeterminada.
Puede configurar la dirección de origen de cada sesión de túnel gRPC para marcar una conexión con el servidor de túnel. Si no configura la dirección de origen, el kernel elige la dirección de origen que puede llegar al servidor de túnel.
Para obtener más información acerca de los túneles gRPC, consulte https://github.com/openconfig/grpctunnel.
Un túnel gRPC tiene tres entidades principales:
-
Destino: representa el dispositivo de red. El destino es un cliente gRPC.
-
Servidor de túnel: una entidad de software que es una aplicación externa que administra la suscripción y los registros de destino. El servidor de túnel es un servidor gRPC.
-
Cliente de túnel: entidad de software que realiza tareas de cliente. El cliente de túnel puede ser autónomo dentro del servidor de túnel. El cliente de túnel también es un cliente gRPC.
Ventajas de usar una sesión de túnel gRPC:
-
Supera una serie de configuraciones de firewall complejas a medida que la conexión se establece desde el lado del servidor.
-
Acceda a varias aplicaciones de servidor TCP, como gNMI-gNOI, SSH o NETCONF-SSH, sin ningún requisito operativo.
Arquitectura de túnel gRPC
Un túnel gRPC es una infraestructura genérica para que las aplicaciones basadas en TCP se comuniquen dentro de mensajes gRPC.
En general, el cliente TCP inicia una conexión con el servidor o destino TCP. Los dispositivos Junos actúan como destino que ejecuta aplicaciones de servidor TCP como gNMI-gNOI, SSH y NETCONF-SSH. Si un cliente no puede comunicarse con el servidor, las razones comunes podrían ser:
-
El servidor se encuentra con configuraciones de firewall complejas con firewalls que impiden las conexiones entrantes.
-
El servidor se encuentra con un enrutador que implementa la traducción de direcciones de red (NAT).
-
El servidor se encuentra con cualquier otro requisito operativo, lo que impide las conexiones externas.
Cuando un cliente TCP no puede alcanzar un destino, puede configurar una sesión de túnel gRPC para establecer una conexión entre el cliente TCP y el destino. Una sesión de túnel gRPC establece una conexión en la dirección inversa donde un destino llama a un cliente TCP.
Para utilizar una sesión de túnel gRPC, se agrega un cliente de túnel al lado de destino donde se ejecuta el proceso grpc-tunnel y se realizan todas las configuraciones relacionadas con el túnel gRPC. En el lado del cliente TCP, se agrega un servidor de túnel.
Debe incluir la grpc-tunnel
instrucción configuration en la jerarquía [edit system services
] para configurar una sesión de túnel gRPC.
Seguridad de túnel gRPC
El túnel gRPC es un modelo de marcado externo en el que un dispositivo inicia una conexión basada en la configuración. El túnel gRPC se encuentra en un canal gRPC seguro que utiliza certificados TLS.
Ver también
Ejemplo: configurar un túnel gRPC
Visión general
En esta sección se describen los pasos necesarios para configurar el destino para este ejemplo. La atención se centra en el destino, ya que es el dispositivo Junos donde está configurado el túnel gRPC.
Requisitos
En este ejemplo se utilizan los siguientes componentes de software y hardware:
-
Junos OS o Junos Evolved versión 22.4 o posterior para dispositivos de enrutamiento y conmutación
-
Un dispositivo host como cliente de túnel
-
Un dispositivo host como servidor de túnel
Topología
La figura 1 muestra la topología utilizada en este ejemplo.

Según la configuración de Junos del dispositivo de destino, marca un túnel grpc al servidor de túnel. El dispositivo de destino se registra con el servidor de túnel a través de la RPC de flujo de registro.
Cuando un cliente solicita una sesión TCP a un destino específico, el servidor de túnel actúa como intermediario y se conecta a la sesión de destino registrada anteriormente en el servidor de túnel.
Si el destino admite el tipo de destino solicitado, el dispositivo marcará un nuevo túnel llamado RPC de flujo de túnel. Esto establece un túnel gRPC entre el cliente y el destino a través del servidor de túnel. El cliente de túnel ahora puede tener acceso a las aplicaciones TCP previstas en el destino.
Solo puede haber una secuencia de registro entre un servidor de túnel y el dispositivo de red, pero varias secuencias de túnel para el mismo par.
Configurar un túnel gRPC
Configuración rápida de CLI
Para configurar rápidamente este ejemplo, copie los siguientes comandos, péguelos en un archivo de texto, elimine los saltos de línea, cambie los detalles necesarios para que coincidan con su configuración de red y, luego, copie y pegue los comandos en la CLI en el nivel de jerarquía [edit].
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
Procedimiento paso a paso
Siga estos pasos para configurar el túnel gRPC en el dispositivo de destino.
-
Configure los servidores bajo gRPC-tunnel.
-
Configure la dirección IPv4 o IPv6 o el nombre de host del servidor de túnel.
[edit system services] user@host# set grpc-tunnel servers server server1 address 10.205.0.1
-
Configure el número de puerto a través del cual escucha el servidor de túnel.
[edit system services] user@host# set grpc-tunnel servers server server1 port 50301
-
Configure las credenciales mediante la instrucción tls .
[edit system services] user@host# set grpc-tunnel servers server server1 credentials tls certificate-id client-cert1
-
Especifique las aplicaciones de destino a las que desea acceder. Las opciones disponibles son ssh, netconf-ssh y gnmi-gnoi.
[edit system services] user@host# set grpc-tunnel servers server server1 targets ssh
-
-
(Opcionalmente) Establezca el intervalo de reintento (en segundos). Si no se puede acceder al servidor de túnel, el dispositivo de destino vuelve a intentar conectarse después del intervalo de reintento.
[edit system services] user@host# set grpc-tunnel servers retry-interval 30
-
(Opcionalmente)
Establezca la instancia de enrutamiento. Si no establece la instancia de enrutamiento, el túnel gRPC utiliza la instancia de enrutamiento predeterminada.[edit system services] user@host# set grpc-tunnel servers server ts1 routing-instance routing-instance
-
(Opcionalmente)
Establezca la dirección de origen. Si no establece la dirección de origen, el kernel elige la dirección de origen que puede llegar al servidor de túnel.[edit system services] user@host# set grpc-tunnel servers server ts1 source-address 69.70.31.677
-
(Opcionalmente) Configure la opción target-string-option en grpc-tunnel.
-
Utilice la instrucción pattern para crear una lista ordenada de opciones admitidas.
[edit system services] user@host# set grpc-tunnel target-string-option pattern hostname custom
-
Utilice la instrucción custom-string para definir una cadena personalizada que se envía cuando el patrón de instrucción contiene custom como una de las opciones.
[edit system services] user@host# set grpc-tunnel target-string-option custom-string device1
-
Utilice la instrucción delimitadora cuando se seleccione más de una opción en el patrón. De forma predeterminada, se utiliza el (símbolo de | barra vertical).
[edit system services] user@host# set grpc-tunnel target-string-option delimiter |
-
Se puede configurar un máximo de 10 servidores de túnel.
Resultados
Mostrar los resultados de la configuración en el dispositivo de destino. El resultado refleja solo la configuración funcional agregada en este ejemplo.
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 |; } }
Tabla de historial de cambios
La compatibilidad con las funciones viene determinada por la plataforma y la versión que esté utilizando. Utilice el Explorador de características para determinar si una característica es compatible con su plataforma.