El tráfico de red no parece salir del tronco

8

Estoy en el proceso de organizar algunos nuevos servidores de virtualización, y parte de eso es conseguir algunos canales de mayor ancho de banda. El objetivo final es unir 4 puertos GigE en un solo tronco que transporta tráfico etiquetado 802.1q. Puedo llegar tan lejos, sin embargo, me he encontrado con un problema extraño. Pero primero, un diagrama.

----------       ----------  1GbE trunks 
|        | 10GbE |        | ------------- --------
|  SW1   |-------|   SW2  | ------------- | VM1  |
|        |       |        | ------------- --------
----------       ----------
     |                |  1GbE  -----------
     | 1GbE           |--------| client2 |
     |                         -----------
----------
|        | 1GbE -----------
|  SW3   |------| client1 |
|        |      -----------
----------

Todos los conmutadores son conmutadores HP ProCurve 2910al y no están apilados. El Cliente2 en el diagrama anterior está en la misma VLAN que VM1. Client1 está en una VLAN diferente. Para la máquina VM (CentOS 6) tanto iptables como SELinux han sido deshabilitados.

Mi problema es que cuando se trata de enlaces troncales, el tráfico de red bidireccional es imposible cuando se habla con cualquiera de las máquinas del Cliente. TCPDUMP muestra que los pings son recibidos por ellos y que se envían los paquetes ECHO REPLY, pero el host VM nunca los ve. Al mismo tiempo, si trato de hacer ping a la VM desde una máquina cliente, tampoco funciona. El hecho de que no pueda hacer ping al cliente2, que está en la misma subred, sugiere que algo está mal en la capa de red en alguna parte.

Curiosamente, desde el host VM puedo hacer ping a las puertas de enlace IP en cualquiera de los conmutadores. Si uso una sola interfaz, todo funciona bien con y sin etiquetado VLAN. Si solo ato una sola interfaz y giro el etiquetado de VLAN en esa interfaz, puedo ir a cualquier parte. Construir un baúl, y estoy limitado a la tela del interruptor.

El tipo de tronco no parece importar. En este momento están configurados con troncales en modo 0 (balance-rr), aunque el uso de LACP / 802.1qa se comporta de la misma manera.

vlan 70 
   name "Virtualization Subnet" 
   untagged 35,36,38,40 
   tagged Trk1-Trk2,Trk5,Trk8 
   no ip address 
   jumbo 
   exit 

Esa es la configuración de VLAN en SW2 allí. La definición de la VLAN 70 de SW1 tiene la "dirección IP" definida en ella. El fragmento de arriba está en el modo completamente sin troncos. Cuando estoy truncado:

trunk 35-36,38,40 Trk16 trunk
vlan 70 
   name "Virtualization Subnet" 
   tagged Trk1-Trk2,Trk5,Trk8,Trk16
   no ip address 
   jumbo 
   exit 

La versión 802.1qa / LACP intercambia la definición de troncal trunk 35-36,38,40 Trk16 lacppero, como dije, no cambia la presentación del problema.

Client2 está realmente conectado a SW1, pero ponerlo allí en el gráfico habría hecho que el formato sea más complicado. En cualquier caso, lo único en la sección Interfaz es una namedirectiva; aparece como un untaggedpuerto en la stanza vlan 70 para SW1.

¿Qué me estoy perdiendo?

sysadmin1138
fuente
¿Puedes publicar las estrofas de VLAN de tus conmutadores Procurve? ¿Y también qué puertos utiliza el hipervisor (también conocido como VM) 1, clientes 1 y 2?
jftuga
@jftuga Se han introducido las estrofas.
sysadmin1138
Para los conmutadores sw1,2,3, ¿están todos los puertos troncales de enlace ascendente (a otros conmutadores) etiquetados en vlan 70? Además, ¿qué te muestra Tracert?
jftuga
@jftuga Sí, todos los enlaces entre conmutadores están conectados y etiquetados. SW3 NO tiene VLAN 70 en él. Traceroute muestra poco interés, la traza muere en el salto cuando llegaría al host VM. Además, desde el propio conmutador, no puedo hacer ping a la dirección IP del host de VM cuando estoy conectado. Veré si puedo conseguir algo para oler ese conjunto de puertos troncalizados.
sysadmin1138
¿Dices que esto es una VM, como en Virtual Machine? ¿Estás ejecutando esto en ESX (i)?
pauska

Respuestas:

7

Después de un largo debate en el chat que involucró a MikeyB , Pauska y ChrisS , el problema terminó siendo doble:

  1. Un posible error en CentOS 6 no era cambiar las opciones del módulo para el bondingmódulo como parte de service network restart, por lo que no estaba rastreando mis cambios entre el modo LACP (4) y el roundrobin (0).
  2. El modo Round-Robin no le gusta trabajar con conmutadores ProCurve.

Una vez que forcé la interfaz unida al modo LACP / 802.1qa a través de este comando:

ifconfig bond0 down
echo "4" > /sys/class/net/bond0/bonding/mode
ifconfig bond0 up

Tanto el servidor como el conmutador estaban hablando. En ese punto, comenzando con solo una interfaz habilitada en el conmutador, el tráfico comenzó a funcionar normalmente. La habilitación de una segunda, tercera y, finalmente, la cuarta interfaz mantuvo el tráfico funcionando.

En definitiva, el modo LACP es lo que hace que las cosas funcionen. La pista era que el modo round-robin funcionaba cuando solo había un puerto de switch habilitado en el Trunk. El servidor sobrevive a un reinicio y aparece en el modo correcto. Sin embargo, a service network restartno hace que la MODE="4"parte del ifcfg-bond0archivo /etc/sysconfig/network-scripts/surta efecto. Si ese modo cambia, seguirá siendo lo que se configuró en el arranque (o más probablemente, el tiempo de carga del bondingmódulo).

sysadmin1138
fuente
Encantado de ayudar :)
MikeyB
Me alegra ver que tienes esto arreglado.
jftuga
Una pregunta y respuesta muy profesional. Obligado a ayudar a alguien.
artifex
0

Tienes en tu configuración:

trunk 35-36,38,40 Trk16 trunk
vlan 70 
   name "Virtualization Subnet" 
   tagged Trk1-Trk2,Trk5,Trk8,Trk16
   no ip address 
   jumbo 
   exit 

¿No debería ser eso?

   untagged Trk16
   tagged Trk1-Trk2,Trk5,Trk8
MikeyB
fuente
Bueno, hay un error en la publicación original, pero no es lo que estás sugiriendo. Debajo de la configuración sin truncar debería haber un "Trk16 sin etiquetar" en vlan 70.
pauska
También probé esa variante. Ambas variantes funcionan de la misma manera, no funciona. Usar untagged 35-36,38,40y tagged 35-36,38,40...ambos funcionan siempre que no intente agregar interfaces en el servidor Linux. untagged Trk16Y tagged Trk16...ambos no funcionan.
sysadmin1138
Ejecutando Xen? ¿Centos 6 todavía está sucio con las definiciones de interfaz? Recuerdo un problema que tuve cuando las interfaces vlan se crearon a partir de la interfaz incorrecta (el físico en lugar del puente o viceversa) y sucedieron cosas extrañas.
MikeyB