Juniper Networks admite el reenvío basado en paquetes en interfaces virtuales mediante la versión 22.1 o posterior de Contrail® Networking™, nativa de la nube, en un entorno orquestado por Kubernetes.
Visión general
De forma predeterminada, los nodos informáticos de Contrail utilizan el modo de flujo para el reenvío de paquetes en una interfaz virtual. Esto significa que cada vRouter tiene una tabla de flujo para realizar un seguimiento de todos los flujos que pasan a través de él. En el modo flujo, la interfaz virtual procesa todo el tráfico analizando el estado o la sesión del tráfico. Sin embargo, puede haber casos en los que desee cambiar del modo de flujo al modo de paquete. Específicamente, para lograr un mayor rendimiento de reenvío de tráfico o para sortear ciertas limitaciones del modo de flujo.
En el modo de paquete, la interfaz virtual procesa el tráfico por paquete e ignora toda la información de flujo. La principal ventaja de este modo es que el tipo de procesamiento no tiene estado. El modo sin estado significa que la interfaz virtual no realiza un seguimiento de la información de la sesión ni pasa por el análisis de tráfico para determinar cómo se establece una sesión.
Nota:
Las características que requieren una política de red (como ACL, grupos de seguridad, IP flotantes) no pueden funcionar en modo paquete.
Configurar el modo de paquetes en una interfaz virtual
Siga estos pasos para habilitar el modo de paquete en una interfaz virtual.
- Compruebe que está ejecutando el modo de flujo. El modo de flujo es el modo de reenvío predeterminado.
Genere algo de tráfico haciendo ping a otro pod en la misma red. En este ejemplo, la dirección IP del pod es 25.26.27.2.
root@pod-vn-1:/# ping -q -c5 25.26.27.2
PING 25.26.27.2 (25.26.27.2) 56(84) bytes of data.
--- 25.26.27.2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4057ms
rtt min/avg/max/mdev = 0.059/1.721/7.620/2.955 ms
- Utilice la herramienta de línea de comandos de flujo para comprobar los flujos. En el ejemplo siguiente se indica que el
virtualMachineInterface
está en modo de flujo.
root@minikube:/# flow -l --match 25.26.27.3
...
...
Listing flows matching ([25.26.27.3]:*)
Index Source:Port/Destination:Port Proto(V)
-----------------------------------------------------------------------------------
159692<=>400664 25.26.27.2:28 1 (3)
25.26.27.3:0
(Gen: 1, K(nh):39, Action:F, Flags:, QOS:-1, S(nh):39, Stats:5/490, SPort 64222,
TTL 0, UnderlayEcmpIdx:0, Sinfo 7.0.0.0)
400664<=>159692 25.26.27.3:28 1 (3)
25.26.27.2:0
(Gen: 1, K(nh):33, Action:F, Flags:, QOS:-1, S(nh):33, Stats:5/490, SPort 56567,
TTL 0, UnderlayEcmpIdx:0, Sinfo 5.0.0.0)
- Habilite el modo de paquete en el
virtualMachineInterface
.
Cree un archivo de revisión denominado packet-mode-patch.yaml
y establezca la directiva de VMI en true
.
spec:
virtualMachineInterfaceDisablePolicy:true
- Aplique el parche.
[user@machine:~]$ kubectl -n vmi-disablepolicy patch vmi pod-vn-1-7d622c4d --patch "$(cat packet-mode-patch.yaml)"
virtualmachineinterface.core.contrail.juniper.net/pod-vn-1-7d622c4d patched
- Después de aplicar la revisión, el modo de flujo cambia al modo de paquete.
[user@machine:~]$ kubectl -n vmi-disablepolicy get vmi pod-vn-1-7d622c4d -oyaml | yq .spec.virtualMachineInterfaceDisablePolicy
true
- Compruebe que el modo de paquete esté activo.
Genere tráfico haciendo ping a otro pod en la misma red en la que hizo ping en el paso 1.
root@pod-vn-1:/# ping -q -c5 25.26.27.2
PING 25.26.27.2 (25.26.27.2) 56(84) bytes of data.
--- 25.26.27.2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4105ms
rtt min/avg/max/mdev = 0.051/2.725/13.388/5.331 ms
- Utilice la herramienta de línea de comandos de flujo para comprobar los flujos.
root@minikube:/# flow -l --match 25.26.27.3
...
...
Listing flows matching ([25.26.27.3]:*)
Index Source:Port/Destination:Port Proto(V)
¡Éxito! No existen flujos que indiquen que está en modo paquete.