Múltiples interfaces de red en una sola comunidad de frentes de subred cómo comprar bitcoins uk

LACP tiene algunas limitaciones en que los paquetes no son "carga equilibrada" Los paquetes para un destino determinado se redireccionan determinísticamente a una interfaz específica para evitar la entrega de paquetes fuera de orden. Esto significa que LACP probablemente no sea útil para pequeñas implementaciones (menos de 10 hosts, tal vez) pero es una gran victoria con un gran número de clientes ocupados.

Ahora invariablemente habrá algunas personas que dirán … "¡INCORRECTO! ¡Sé que múltiples interfaces son legales!" Llegamos a un punto muerto sobre qué tipo de obras versus qué sucede en realidad. La gente ve cosas como el término "enlazar a la dirección IP". Lo que la mayoría de la gente quiere que signifique esto es que cuando se vincula a una dirección IP asignada a una tarjeta específica, el tráfico entra y sale de esa tarjeta. Esto no sucede. Lo siento.

Realmente no me importa debatir contigo por qué sientes múltiples interfaces que no son LACP "debería" trabajar de cierta manera. Realmente no me importa si crees que funcionó para ti en Windows o en alguna plataforma de almacenamiento. Estoy aquí para documentar la forma en que funciona en FreeBSD, Linux, Apple y la mayoría de las demás variantes de UNIX. No tomé estas decisiones de diseño, pero estoy pasando un tiempo aquí para ayudarlo a comprenderlas. Entonces, por favor, no profundicen en el tema.

FreeBSD es un sistema operativo sofisticado y moderno, y la forma en que se enruta el tráfico se basa en un subsistema de red abstraído. Múltiples interfaces en una subred única es un oxímoron y para poder hacerlo "trabajo bien" De esta forma, debería haber otra capa de selección en la pila de red para manejar la entrega del tráfico, además de la búsqueda de la tabla de rutas. Básicamente necesita otra capa para darse cuenta de que un destino dado tiene múltiples enlaces posibles, y luego buscar para ver si alguno de esos enlaces es el mejor, lo que agrega mucha complejidad. Los sistemas modernos normalmente no hacen esto porque es lento, y existen estándares como LACP para hacerlo, y hay interfaces 10GbE disponibles, y además de eso, los diseños de redes racionales como los que sugiero arriba se pueden usar para hacer múltiple subredes separadas, por lo que hay múltiples formas de "hacerlo mejor."

Casi todos los sistemas operativos UNIX modernos usan pilas abstractas de redes. El tráfico de salida se maneja a través de la tabla de rutas, por lo que el balance de carga saliente que se espera ver poniendo dos interfaces en una sola red … simplemente no ocurre. Los autores de las pilas modernas saben que 802.3ad existe; ya no es 1989 y la estupidez RFC1122 no tiene sentido. Hacer que múltiples interfaces funcionen a través de un SEGUNDO mecanismo, en particular el "enrutarlo por la misma interfaz" mecanismo que muchas personas en esta situación parecen esperar, requeriría que cada paquete se busque de nuevo de una manera diferente, reduciendo dramáticamente el rendimiento.

Ciertamente puedes "enlazar a una dirección IP" en UNIX pero en FreeBSD es una abstracción que no garantiza el manejo físico del tráfico. Esto es realmente útil en muchos entornos para muchas cosas. Por ejemplo, puede obtener redundancia de red para un servidor utilizando OSPF colocando sus direcciones de servicio en una interfaz de bucle invertido y publicándolas en su protocolo de puerta de enlace interior utilizando OSPF o algún otro IGP. La dirección que utiliza todo el tráfico externo no está configurada en CUALQUIER interfaz de ethernet. Aplicaciones de usuario "enlazar a la dirección IP" al igual que era un alias (o la dirección principal) en una interfaz de Ethernet … de todos modos, el punto es que el enlace a nivel de aplicación no está muy cerca de las interfaces físicas. FreeBSD tiene un amplio conjunto de interfaces de red compatibles, incluidos enlaces punto a punto (PPP, SLIP, cable de puerto paralelo), ATM, etc., y el subsistema de red lo presenta todo como una abstracción del territorio del usuario. Así que, por supuesto, debido a que gran parte de la configuración de IP está impulsada por lo que se define para la física interfaces, esto lleva a confusión operacional y terminológica.

El tráfico de entrada desde una red Ethernet a un host está controlado por ARP. El subsistema ARP publica las direcciones MAC en respuesta a las solicitudes de una red ethernet, y esto ocurre con poca frecuencia (lo que significa mucho menos de una vez por segundo). ARP controla el ingreso de paquetes. La tabla ARP del sistema mantiene una lista de direcciones aprendidas y publicadas, y cuando se recibe un paquete ARP, el sistema lo compara con las interfaces del sistema y responde con la dirección MAC de la interfaz. Ahora, este proceso funciona más o menos de la manera que el OP esperaría, pero puede ser subvertido. Por ejemplo, si tengo un servidor con dos interfaces, em0 = 192.168.1.1 / 24 y em1 = 192.168.1.2 / 24, y configuro una tabla ARP de cliente con una entrada manual para 192.168.1.1 que apunta a la dirección MAC del servidor em1, el tráfico para 192.168.1.1 del cliente al servidor ingresa al servidor en em1. Y todo funciona bien La capa de red de UNIX no cree que esto sea extraño ni nada, incluso si tiene una aplicación de usuario limitada a 192.168.1.1, todo funciona.

El tráfico de salida a una red ethernet está controlado por la tabla de enrutamiento, y la tabla de enrutamiento está codificada por la dirección IP de destino. Básicamente cuando haces una "ruta obtener IP.ad.dr.ess" el sistema realiza una búsqueda en la tabla de enrutamiento, similar a lo que sucede cuando se envía un paquete. La dirección IP de origen no se considera porque el enrutamiento IP ocurre en función del destino. Por lo tanto, siempre que el código de enrutamiento seleccione una interfaz que esté en la red en cuestión, se entregarán los paquetes, y eso es bastante razonable.

Sí, había instalado dos NIC en mi propia caja de FreeNAS, le había dado a cada una de ellas una dirección IP diferente, en la misma subred, y las había conectado a mi HP 1810 Switch. ¡Así que había hecho exactamente lo que * ahora * sé que era (en un servidor FreeNAS) lo * incorrecto * de hacer! Entonces, hasta que resolví este problema yo mismo, eventualmente, vi por mí mismo el extraño red-Síntomas paralizantes causados ​​por tratar de funcionar con una disposición de doble NIC.

Hace unos meses, busqué claridad sobre este tema (doble NIC) pero no encontré casi nada específico sobre FreeNAS. (Obviamente no descubrí esta publicación de jgreco.) ¡Esta publicación me hubiera ahorrado muchas horas de arañazos en la cabeza, diagnóstico de red y fregado de mis LOG si lo hubiera descubierto antes! En el lado positivo, está ese lado positivo que viene de la batalla para arreglar cualquier falla extraña … En otras palabras, ahora estoy mejor educado en Ethernet Level 2 Flow Control y 802.3x Pause Frames, ninguno de los cuales tuve que luchar con (en cualquier profundidad real) durante mis dos décadas más o menos trabajando en redes Novell y redes de Windows.

(Antes de plantear una consulta aquí en este Foro para pedir ayuda con esto (alrededor de enero), primero quería construir una imagen decente del problema y poder enumerar todas las pruebas que había hecho para demostrar que no era así. causado (por ejemplo) por un problema de ZFS ARC, o un problema de escritura de disco, o un problema de cableado … etc., etc., pero descubrí la solución y la resolví antes de llegar al punto de gritar pidiendo ayuda.) (Y de todos modos, cuando las circunstancias lo permitan, siempre prefiero ‘conocer’ mis propios problemas en profundidad antes de pedir ayuda sobre ellos)

Después de muchos meses de trabajo en red libre de problemas con este arreglo de doble NIC (que era extraño, en retrospectiva) pero que correspondía aproximadamente con una de las Actualizaciones del sistema FreeNAS, recibía enormes bajadas en las escrituras de datos al servidor FreeNAS. y * solo * a mi servidor FreeNAS. Las tasas de transferencia (escritura) bajarían de alrededor de 750Mbits / s a ​​alrededor de 40Mbits / s, pero (en mi interpretación) no hubo mensajes de error relevantes, y no hay pistas obvias en mis registros de quejas o enfrentamientos o problemas de FreeNAS … como a por qué ocurrieron estas bajadas. (Y recuerde, estos doble-NIC habían sido (aparentemente) sin problemas durante más de un año, de antemano).

Para acortar esta larga historia (er) – al mirar las páginas de estado del puerto en mi HP Switch, vi que el puerto al que estaba conectado mi servidor FreeNAS mostraba altos números de tramas de pausa Ethernet (también conocidos como paquetes de pausa) * y * transmitido, acompañado de un aumento similar (correlacionado) en el "Paquetes recibidos con error" (en el mismo puerto de conmutación). En otras palabras, estaba viendo el efecto del control de flujo Ethernet de nivel 2 / 802.3x en mi red.

Sin embargo, esto no era solo una cuestión de desactivar la opción del interruptor HP 1810 etiquetada como "Control de flujo" (está desactivado por defecto de todos modos), porque con Control de flujo desactivado en mi conmutador, estas tramas de pausa de la capa Ethernet 2 se propagarán (correctamente) a todas las otras NIC de mi red, haciendo que todo mi sistema (en esa subred) se detenga. Tenía que mantener el control de flujo activado en mi interruptor para que este problema afectó solo a mi Servidor FreeNAS.

Sí, mientras probaba, probé muchas permutaciones para activar y desactivar Flow Control en (algunas de) las NIC en mis otras computadoras con Windows, y – porque no pude encontrar otra manera de alternar la configuración de Flow Control en mis NIC FreeNAS , Jugué con hacer una pregunta aquí sobre el uso de la función de ajuste de GUI de FreeNAS para obtener el equivalente de (¿específico de BSD?) "fc = 0" (Control de flujo apagado) en mis NIC FreeNAS! Incluso intenté agregar "dev.igb.0.fc = 0" y "dev.igb.1.fc = 0" al archivo etc_sysctl.conf de mi servidor (y reinicio) – pero (por supuesto, en retrospectiva) ninguno de estos ajustes hizo ninguna diferencia. (Estoy seguro de que las entradas fc = 0 en mi archivo etc_sysctl.conf fueron ignoradas por FreeNAS de todos modos, así que las eliminé).

Te ahorraré más detalles aquí porque (yawwnnn!) Mis muchos "y si" las pruebas y el rasguño de mi cabeza y el hecho de que tomé nota de este problema abarcaron muchas semanas, y nunca construí la imagen coherente de este problema que quisiera compartir en este foro. Mis ‘hallazgos’ ahora son todos discutibles y mis hallazgos provisionales probablemente plantearían más preguntas de las que responderían.

banner