Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 

Análisis de flujo de paquetes

 

Anteriormente utilizamos la herramienta rizo para desencadenar solicitudes HTTP para nuestra prueba. Admite numerosas opciones para varias características. ’Observamos la opción-H, que especifica el campo de host en una solicitud HTTP. Esta vez, para fines de depuración, usamos otra opción de utilidad,-v en el comando rizo:

Esta opción muestra información más detallada sobre la interacción HTTP:

  • Las líneas > son el contenido de los mensajes que de rizo envía y

  • Las líneas de < son el contenido del mensaje que recibe

desde el control remoto. De la interacción que puede ver

  • Doblez envió un HTTP GET con la ruta de acceso/a FIP 101.101.101.1, y con un host relleno con la dirección URL de Juniper.

  • Obtiene la respuesta con el código 200 correcto, lo que indica que la solicitud se ha realizado correctamente.

  • Existen otros encabezados en la respuesta que no son importantes para nuestra prueba, por lo que podemos omitirlos.

  • El resto de la respuesta es el código fuente HTML de una página web devuelta.

  • Después, la conexión se cierra inmediatamente.

Ahora se’han visto las interacciones detalladas que se han llevado a cabo bajo el capó, y se puede comprender el comando obtener y el encabezado de host que se enviamos en la prueba de Telnet. En esa prueba estábamos simplemente emulando lo que haría el rizo, pero ahora lo hicimos de forma manual.

Enrutador de host a puerta de enlace de Internet

Primero deje’que s inicie el host – de Internet desde el cliente.

Figure 1: Host de Internet: Enviar una solicitud HTTP
Host de Internet: Enviar una solicitud HTTP

Al igual que en cualquier host, la tabla de enrutamiento es bastante sencilla. La ruta estática o, más comúnmente, una ruta predeterminada que apunta a la ruta de puerta de enlace es todo lo que necesita:

La última entrada es la ruta estática que’se configurará manualmente, apuntando a nuestro enrutador de puerta de enlace.

Note

En esta configuración, configuramos una tabla VRF en el enrutador de puerta de enlace para conectar el equipo host a la misma MPLS o VPN, de modo que pueda comunicarse con las redes superpuestas de Contrail clúster. En la práctica, hay otras maneras de lograr el mismo objetivo. Por ejemplo, el enrutador de la puerta de enlace también puede elegir la pérdida de rutas con las directivas entre VPN y la tabla de enrutamiento de Internet para que un host de Internet que no forme parte de las VPN también pueda tener acceso a las redes superpuestas de Contrail.

Enrutador de puerta de enlace a IP flotante pública de entrada: MPLS sobre GRE

Ya’hemos visto anteriormente la’tabla de enrutamiento enrutador s de puerta de enlace. Desde el próximo salto del Protocolo, podremos averiguar que el paquete se enviará al nodo Active HAProxy cent222 a través del túnel MPLSoGRE.

Figure 2: Enrutador de puerta de enlace: Reenviar a IP flotante pública de entrada
Enrutador de puerta de enlace: Reenviar a IP flotante pública de entrada

Ahora, con la tabla de flujo recopilada en ambos computadores, es posible encontrar la misma información. ’Echemos un vistazo a las entradas de flujo de la computación de proxy activa:

Este flujo refleja el estado de la conexión TCP que se origina desde el cliente host de Internet hasta Active HAProxy. Veamos’la primera entrada de la captura:

  • La primera entrada de flujo muestra el origen y el destino de la solicitud HTTP; procede del host de Internet (15.15.15.2) y aterriza la dirección IP flotante de entrada en el nodo actual cent222.

  • La S (NH): 61 es el siguiente salto hacia el origen de la solicitud – del host de Internet. Esto es similar a la versión inversa de reenvío de ruta (RPF). VRouter siempre mantiene la ruta de acceso hacia el origen del paquete que se encuentra en el flujo.

  • El comando NH--Get resuelve el NextHop 61 con más detalles. Puede ver que se ha configurado una marca MPLSoGRE, los SIP y las DIP son los dos extremos del túnel GRE, y actualmente son el nodo y el enrutador’de la puerta de enlace, respectivamente, IP.

  • TCP: SSrEEr son indicadores TCP que muestran el estado de esta conexión TCP. El vRouter detecta SYN (S), SYN-ACK (Sr), por lo que se establece la conexión bidireccional (EEr).

  • El campo proto (V) indica el número VRF y el tipo de protocolo. Aquí hay dos VRF involucrados en la corriente (aislada) NS NS-usuario-1.

    • VRF 2: el VRF de la red Pod predeterminada

    • VRF 5: la VRF del FIP-VN

    • el protocolo 6 significa TCP (paquetes HTTP).

Tip

Utilizamos VRF 2,’más adelante, cuando consultamos el salto para obtener un prefijo en la tabla de enrutamiento VRF.

En general, la primera entrada de flujo confirma que el paquete de solicitud del host de Internet recorre el enrutador de puerta de enlace y, a través del túnel de MPLSoGRE, presiona la dirección VIP externa de entrada 101.101.101.1. TDR ocurrirá y tendremos’en vista la siguiente.

IP flotante de entrada pública a IP del pod de entrada: FIP (TDR)

Figure 3: Nodo HAProxy activo: Dirección IP flotante pública de entrada a IP pod de entrada
Nodo HAProxy activo: Dirección IP flotante pública de entrada a IP pod de entrada

Para verificar el TDR operación, solo necesita profundizar un poco más del resultado de flujo anterior:

  • El indicador de acción, N (D), en la primera entrada indica el destino TDR o DNAT. La dirección IP externa de entrada de destino 101.101.101.1, que es la entrada externa, se convertirá en la VIP interna de entrada.

  • El indicador de acción, N (S), en la segunda entrada, indica Source TDR o SNAT. Esto indica el origen de la TDR IP de origen 10.47.255.238, que son las ingresiones internas, y la VIP se traducirá a la VIP externa de entrada.

En Resumen, ¿cuál es la tabla de flujo del nodo HAProxy activo cent222 nos dice que, al recibir el paquete destinado a la IP flotante de entrada, vRouter en el nodo cent222 realiza TDR operación y traduce la IP flotante de destino (101.101.101.1) a la’dirección VIP (10.47.255.238) de entrada s interna. Después de eso, el paquete aterriza el equilibrador de carga’de entrada s tabla VRF y lo reenvía a’la interfaz de escucha activa de HAProxy s. La operación del proxy HTTP se llevará a cabo y’nosotros lo hablaremos a continuación.

Note

En flujo de vRouter, la segunda entrada de flujo también se denomina flujo invertido de la primera. Es la vRouter de entrada de flujo que envía el paquete devuelto hacia el host de Internet. Desde la perspectiva del equilibrador’de carga de entrada, solo usa 10.47.255.238, asignado desde la red Pod predeterminada como IP de origen, no sabe nada acerca de la IP flotante. Lo mismo ocurre para el host externo de Internet, solo sabe cómo alcanzar la dirección IP flotante y no tiene pistas acerca de la dirección VIP privada interna de entrada. Es el vRouter que hace los TDR traducciones de dos sentidos intermedios.

Dirección IP del conjunto de entrada al servicio IP: MPLS a través de UDP

Ahora el paquete aterriza en el equilibrador de carga de entrada’s tabla VRF y está en el front-end de HAProxy. Lo que ocurre es lo siguiente:

  • El HAProxy está escuchando en la dirección IP del front-end (Ingress Internal podIP/VIP) y el puerto 80 para ver el paquete.

  • HAProxy comprueba la regla de entrada programada en su archivo de configuración, decide que las solicitudes deben ser procesadas por el proxy con la IP de servicio de WebService-1.

  • VRouter comprueba la tabla VRF del equilibrador’de carga de entrada y ve el prefijo de WebService-1 y la dirección IP del servicio se ha aprendido desde un nodo de destino cent333, que será el siguiente salto para reenviar el paquete.

  • Entre los nodos de cómputo, la ruta de reenvío se programa con el túnel MPLSoUDP, por lo que el vRouter lo envía a través de MPLS a través de un túnel UDP con la etiqueta MPLS derecha.

Este proceso se ilustra a continuación en la Figure 4:

Figure 4: Nodo HAProxy activo: Dirección IP del conjunto pod de entrada a servicio
Nodo HAProxy activo: Dirección IP del conjunto pod de entrada a servicio

’En primer lugar, echemos un vistazo a la tabla de enrutamiento VRF de la interfaz de usuario. En la interfaz de usuario, podemos comprobar la tabla de enrutamiento VRF en función del nombre VRF, desde cualquier nodo de cómputo.

Figure 5: Tabla VRF de entrada’loadbalancer s
Tabla VRF de entrada’loadbalancer s

De la podIP’de entrada, VRF, que es el mismo VRF para la red Pod predeterminada del espacio de nombres actual, podemos ver que el siguiente salto hacia el prefijo IP de Service 10.99.225.17/32 es el otro nodo de cálculo cent333 con el túnel IP 10.169.25.21 a través de MPLSoUDP. El mismo resultado también se puede encontrar a través de vRouter RT/NH Utilities:

Tenga en cuenta que todo el tráfico de la entrada al servicio tiene lugar en la superposición entre Contrail nodos de cálculo, lo que significa que todos los paquetes de superposición deben encapsularse en MPLS a través del túnel UDP. Para comprobar los detalles del procesamiento de paquetes de HAProxy’Process, deje que capture los paquetes en la interfaz física del nodo cent222, donde se ejecuta el proceso Active HAProxy. En la siguiente captura de pantalla, en la Figure 6, se muestran los resultados

Figure 6: Captura de paquetes en la interfaz de tejido del nodo HAProxy activo cent222
Captura de paquetes en la interfaz de tejido del nodo HAProxy activo cent222

En la Figure 6de la captura de la pantalla de Wireshark, puede ver claramente lo siguiente:

  • Tramas 43-45, podIP privadas de entrada ha establecido una nueva conexión TCP para el servicio IP y el puerto, esto ocurre en superposición.

  • Fotograma 46, en la nueva conexión TCP, HAProxy inicia una solicitud HTTP a la dirección IP del servicio.

  • Fotograma 50, la respuesta HTTP vuelve de vuelta.

El marco 46 es también el que se utilizará como ejemplo para mostrar la encapsulación de paquetes. Puede’ver este paquete IP que contiene la solicitud HTTP está MPLS etiquetada y se incrusta dentro de un datagrama UDP. La dirección IP de origen y destino exterior del paquete son 10.169.25.20 (Compute node cent222) y 10.169.25.21 (Compute node cent333), respectivamente.

Reenvío frente a proxy

Si observant suficiente, debería haber observado algo extraño en esta captura. Por ejemplo:

  • ’¿Debe la dirección IP de origen ser la 15.15.15.2 IP’del host de Internet, en lugar del equilibrador’de carga s IP de front-end?

  • ¿Se reenvió la solicitud HTTP original?

  • ¿Se encuentra la transacción en el mismo origen de sesión TCP del host de Internet, enrutador de puerta de enlace de cruce y nodo de equilibrador de carga cent222, hasta llegar al pod de back-end en el nodo cent333?

La respuesta a todas estas preguntas es negativa. Los HAProxy de esta prueba se comparan con el equilibrio de carga de capa 7 (Capa de aplicación). Lo que hace es:

  • Establece una conexión TCP con el host de Internet y mantiene la supervisión de la solicitud HTTP;

  • Siempre que ve una solicitud HTTP, comprueba sus reglas e inicia una nueva conexión TCP al back-end correspondiente;

  • Copia la solicitud HTTP original que recibe del host de Internet y se pega en la nueva conexión TCP con su back-end. Hablando de forma precisa, la solicitud HTTP está en proxy y no se reenvía.

  • Extienda el filtro de presentación Wireshark para incluir tanto 15.15.15.2 como 101.101.101.1.

    Figure 7: Captura de paquetes en el nodo Active HAProxy de Cent222 interfaz de estructura: Todo “el artículo”
    Captura de paquetes en el nodo Active HAProxy de Cent222 interfaz de estructura: Todo “el artículo”
  • Marco 39-41: El host de Internet estableció una conexión TCP para FIP públicas externos de entrada.

  • Marco 42: Solicitud HTTP enviada por un host de Internet.

  • Marco 43-52: Active HAProxy estableció una nueva conexión TCP hacia el servicio, envió la solicitud HTTP, recuperó la respuesta HTTP y cerró la conexión.

  • Marco 53-54: Active HAProxy envió la respuesta HTTP de vuelta al host de Internet.

  • Marco 55-57: El host de Internet cerró la conexión HTTP.

Aquí usamos el fotograma 42 para mostrar los MPLS con la encapsulación GRE entre cent222 nodos Active HAProxy y el enrutador puerta de enlace. Al compararlo con el fotograma 46 en la captura de pantalla anterior, verá que se trata de una etiqueta diferente. La etiqueta de MPLS que se transporta en el túnel GRE se eliminará antes de que vRouter entregue el paquete al HAProxy activo. Se asignará una nueva etiqueta cuando active HAProxy inicie una nueva sesión TCP en el nodo remoto.

En este momento sabemos que la solicitud HTTP está en un proxy’a HAProxy s-end. Según la configuración de entrada, ese back-end es un servicio Kubernetes. Ahora, para alcanzar el servicio, la solicitud se envía a un nodo de destino cent333 donde todos los pods de back-end están sentados. A continuación’, veremos qué ocurrirá en el nodo de destino.

Servicio IP para servidor Pod IP: IP flotante (TDR)

Figure 8: Servicio IP para servidor Pod IP
Servicio IP para servidor Pod IP

En el nodo de destino cent333, cuando el paquete llega desde la dirección IP interna de entrada 10.47.255.238 hacia el 10.99.225.17 IP de servicio de WebService-1, el vRouter vuelve a realizar las operaciones de TDR traducción. Traduce la dirección IP del servicio al servidor podIP 10.47.255.236, prácticamente de la misma manera que lo que se’ve en el nodo cent222, donde el vRouter traduce entre la entrada de la dirección IP de tipo público flotante con el podIP interno de entrada.

Ésta es la tabla de flujo capturada con la secuencia de comandos de Shell. Este flujo muestra el estado de la segunda conexión TCP entre Active HAProxy y el conjunto pod de back-end:

Ha’visto algo similar en la sección de servicio, por lo que no’debería comprender los problemas. Obviamente, la segunda entrada es desencadenada por la solicitud entrante desde la HAProxy activa de IP (la podIP de entrada) hacia la dirección IP del servicio. El vRouter conoce que la dirección IP del servicio es una dirección IP flotante que se asigna al servidor de podIP 10.47.255.236, mientras que las asignaciones del puerto de servicio al contenedor targetPort en el POD back-end. Hace DNAT + DPAT (DPd) en dirección de entrada y SNAT + SPAT (SPs) en la dirección de salida.

La otra forma sencilla de rastrear esta ruta de reenvío consiste en mirar en el MPLS etiqueta. En el paso anterior hemos visto que la etiqueta 38 se utiliza cuando la HAProxy activa calcula cent222 paquetes enviados al túnel MPLSoUDP para calcular el cent333. Puede usar la utilidad MPLS de vrouter para comprobar el salto de esta etiqueta:

Una vez determinado el siguiente salto, puede encontrar el número de interfaz de salida (salientes) y, a continuación, con la utilidad VIF puede localizar la interfaz Pod. El 10.47.255.236 de podIP correspondiente es el POD back-end para la solicitud HTTP, que tiene una apariencia coherente con lo que la tabla de flujo muestra más arriba.

Por último, la caja Pod ve la solicitud HTTP y responde con una página web. Este tráfico devuelto queda reflejado por la primera entrada de flujo de la captura, que muestra:

  • La dirección IP de origen inicial es una podIP de back-end de 10.47.255.236

  • El puerto de origen inicial es el puerto WebServer 80

  • La dirección IP de destino está podIP interna de entrada 10.47.255.238

Conjunto Pod: Analizar solicitud HTTP

Otra captura de paquetes tcpdump en la interfaz Pod back-end ayuda a revelar la interacción del paquete entre la dirección IP interna de entrada y la podIP de back-end:

Tráfico de retorno

En la dirección contraria, podIP ejecuta WebServer y responde con su página web. La respuesta sigue el trazado inverso de la solicitud:

  • El conjunto Pod responde a la IP del equilibrador de carga, en todo el túnel MPLSoUDP.

  • El vRouter en el nodo cent333 ejecuta SNAT + SPAT, trasladando podIP: podPort a serviceIP: servicePort.

  • La respuesta llega a la HAProxy activa que se ejecuta en el nodo cent222.

  • El HAProxy copia la respuesta HTTP del conjunto pod de back-end y se pega en su conexión con el host remoto de Internet.

  • El vRouter en el nodo cent222 realiza SNAT, lo que traduce a IP de equilibrador de carga en IP flotante

  • La respuesta se envía al enrutador de puerta de enlace, que lo reenvía al host de Internet.

  • El host de Internet obtiene la respuesta.