Red Hat Training
A Red Hat training course is available for RHEL 8
25.2. Uso de iproute2 para notificar a las aplicaciones sobre múltiples rutas disponibles
Por defecto, el socket MPTCP se inicia con un único subflujo, pero puede añadir nuevos subflujos y direcciones IP a la conexión una vez que la cree por primera vez. Este procedimiento describe cómo actualizar los límites por conexión para los subflujos y las direcciones IP, y añadir nuevas direcciones IP (puntos finales) a la conexión MPTCP.
Tenga en cuenta que MPTCP todavía no admite puntos finales mixtos IPv6 e IPv4 para el mismo socket. Utilice puntos finales que pertenezcan a la misma familia de direcciones.
Procedimiento
Establezca los límites por conexión y por dirección IP en 1 en el servidor:
#
ip mptcp limits set subflow 1
Establezca los límites por conexión y por dirección IP en 1 en el cliente:
#
ip mptcp limits set subflow 1 add_addr_accepted 1
Añade la dirección IP 198.51.100.1 como nuevo punto final MPTCP en el servidor:
#
ip mptcp endpoint add 198.51.100.1 dev enp1s0 signal
ImportantePuede establecer los siguientes valores para las banderas:
subflow
,backup
,signal
. Fijar la bandera en;-
signal
, envía un paqueteADD_ADDR
después de que se haya completado el apretón de manos a tres bandas -
subflow
, envía unMP_JOIN SYN
por el cliente -
backup
, establece el punto final como dirección de reserva
-
Inicie el servidor vinculado a 0.0.0.0 con el argumento
-k
para evitar que [systemitem]'ncat' cierre el socket de escucha después de aceptar la primera conexión y hacer que el servidor rechaceMP_JOIN SYN
hecho por el cliente.#
ncat -4 0.0.0.0 -k -l 4321
Inicie el cliente y conéctese al servidor para intercambiar tráfico. Por ejemplo, aquí el cliente escribe "Hola mundo" al servidor 5 veces, y luego termina la conexión.
#
ncat -4 192.0.2.1 4321
Hello world 1
Hello world 2
Hello world 3
Hello world 4
Hello world 5
Pulse Ctrl+D para salir.
Pasos de verificación
Verifique la conexión y el límite de la dirección IP:
#
ip mptcp limit show
Verifique el nuevo punto final añadido:
#
ip mptcp endpoint show
Capturar el tráfico mediante
tcpdump
y comprobar el uso de la subopción MPTCP:#
tcpdump -tnni interface tcp port 4321
client Out IP 192.0.2.2.56868 > 192.0.2.1.4321: Flags [S], seq 3107783947, win 29200, options [mss 1460,sackOK,TS val 2568752336 ecr 0,nop,wscale 7,mptcp capable v1], length 0 client In IP 192.0.2.1.4321 > 192.0.2.2.56868: Flags [S.], seq 4222339923, ack 3107783948, win 28960, options [mss 1460,sackOK,TS val 1713130246 ecr 2568752336,nop,wscale 7,mptcp capable v1 {0xf51c07a47cc2ba75}], length 0 client Out IP 192.0.2.2.56868 > 192.0.2.1.4321: Flags [.], ack 1, win 229, options [nop,nop,TS val 2568752336 ecr 1713130246,mptcp capable v1 {0xb243376cc5af60bd,0xf51c07a47cc2ba75}], length 0 client Out IP 192.0.2.2.56868 > 192.0.2.1.4321: Flags [P.], seq 1:17, ack 1, win 229, options [nop,nop,TS val 2568752336 ecr 1713130246,mptcp capable v1 {0xb243376cc5af60bd,0xf51c07a47cc2ba75},nop,nop], length 16 client In IP 192.0.2.1.4321 > 192.0.2.2.56868: Flags [.], ack 17, win 227, options [nop,nop,TS val 1713130246 ecr 2568752336,mptcp add-addr id 1 198.51.100.1 hmac 0xe445335073818837,mptcp dss ack 5562689076006296132], length 0 client Out IP 198.51.100.2.42403 > 198.51.100.1.4321: Flags [S], seq 3356992178, win 29200, options [mss 1460,sackOK,TS val 4038525523 ecr 0,nop,wscale 7,mptcp join backup id 0 token 0xad58df1 nonce 0x74a8137f], length 0 client In IP 198.51.100.1.4321 > 198.51.100.2.42403: Flags [S.], seq 1680863152, ack 3356992179, win 28960, options [mss 1460,sackOK,TS val 4213669942 ecr 4038525523,nop,wscale 7,mptcp join backup id 0 hmac 0x9eff7a1bf4e65937 nonce 0x77303fd8], length 0 client Out IP 198.51.100.2.42403 > 198.51.100.1.4321: Flags [.], ack 1, win 229, options [nop,nop,TS val 4038525523 ecr 4213669942,mptcp join hmac 0xdfdc0129424f627ea774c094461328ce49d195bc], length 0 client In IP 198.51.100.1.4321 > 198.51.100.2.42403: Flags [.], ack 1, win 227, options [nop,nop,TS val 4213669942 ecr 4038525523,mptcp dss ack 5562689076006296132], length 0El paquete
tcpdump
es necesario para ejecutar este comando.
Recursos adicionales
-
Para más información sobre las banderas disponibles para los puntos finales, consulte la página man
ip-mptcp(8)
.