Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Perfil del dispositivo de Cumulus

Fondo

Los perfiles de dispositivos son cómo se reconocen y utilizan los dispositivos dentro de Apstra. Capturan la semántica específica del dispositivo, necesaria para ser descubierta por Apstra y para ejecutar configuraciones de red que funcionan bien para la ruta de datos una vez dentro del blueprint.

Los perfiles de dispositivo son entidades REST, las cuales le permiten crear, editar, eliminar y enumerar durante la fase de diseño. Los perfiles de dispositivo se utilizan para crear mapas de interfaz, que se utilizan directamente dentro del motor de renderizado de configuración de Apstra cuando se despliegan los planos.

Este documento cubre los conocimientos necesarios para crear (y editar) un DP semántico correcto, de modo que no solo pase las validaciones vigentes en Apstra que garantizan que se cree el DP adecuado en la base de datos, sino que también respeta el requisito semántico del proveedor aplicable al dispositivo para que no genere errores de implementación cuando la configuración generada se inserta en el dispositivo de red.

Declaración de problemas

Para crear un perfil de dispositivo, necesita la especificación del dispositivo (por lo general liberada por el proveedor). También debe saber cómo traducir estas especificaciones en el modelo de datos Apstra DP para crear el JSON válido y apto para la configuración. Esto se debe a que el DP es una estructura de datos consciente de la semántica del proveedor.

Solución

El modelo de datos de alto nivel es el mismo para todos los DP, es decir, hay las mismas claves para el DP de cada proveedor, solo la forma en que obtenemos los valores puede variar o puede cargarse con una restricción de proveedor. El documento alista lo siguiente:

  • El esquema del DP y los elementos anidados dentro del DP.
  • El significado de cada par de valores clave del esquema.
  • La receta específica del proveedor se llenan los valores.
  • Enumerar cualquier restricción, casos de esquina que se deben considerar, especialmente para configuraciones de puerto para ciertos modelos (grupo de).
  • Las lecciones aprendidas durante el proceso de creación de esos DP que ya están en producción son útiles para crear futuros.

Interfaz de usuario

Cuando se crean perfiles de dispositivo desde la GUI de Apstra, algunas de las entradas se validan semánticamente. Sin embargo, no es completamente capaz de garantizar limitaciones y requisitos profundos específicos del proveedor. Con la especificación exacta del proveedor, la GUI le ayuda a crear un DP semánticamente válido que se convierte en parte del modelo de datos de la base de datos Apstra.

Como alternativa, puede escribir su propio código Python que contenga las especificaciones del proveedor, normalizarlo según el modelo de datos Apstra DP y generar el json para luego importar con la GUI.

Modelo de datos DP

En esta sección se analiza el modelo general de datos dp para establecer el terreno para los detalles específicos de Cumulus. Es posible que algunos de los campos opcionales no se apliquen a Cumulus y los analizaremos con más detalle en las secciones posteriores.

Aquí está el panel frontal del dispositivo Edgecore AS5712-54X como se ve en la especificación de datos del proveedor. Algunos de los elementos del dispositivo se marcan para resaltar cómo se asignan en el modelo de perfil del dispositivo Apstra.

de clave
Tipodatos valorValor obligatorio(R) o opcional(O) Significado Propósito/Ejemplos
Id Cadena R El ID de la entidad REST del perfil del dispositivo debe ser único El DP es una entidad de descanso como algunos de los otros elementos de AOS, como el dispositivo lógico y la mensajería instantánea, etc. Cada uno necesita un identificador único que también se usa como un índice en la base de datos cuando se buscan DP.
failure_domain_id Int R Cuando un dispositivo tiene varios dominios de error, esto representa el que está activo actualmente.  
hardware_capabilities Dict R Captura esas especificaciones del dispositivo que son puramente hardware AOS necesita una forma de capturar algunas de las capacidades de HW que identifican el dispositivo o destacan algunas de sus fortalezas únicas, como ram, CPU, límite de ecmp, etc.
Userland Int R El tipo de binario/kernel de la aplicación que admite el dispositivo. Por lo general, este valor es 32 o 64.  
copp_strict Lista O cuando se establece en ' True, generar copp estricto' 'configuración de perfil para NXOS

Este campo se utiliza en los archivos nxos jinja para generar la configuración.

Por lo general, para la mayoría de los modelos, este valor es True, excepto para modelos como Cisco 3172 y Cisco nxosv

breakout_capable Lista O Cuando se establece en true para un módulo, indica que los puertos de ese módulo son compatibles con la ruptura  
Ram Int R La cantidad de memoria que tiene el dispositivo La unidad es GB.
Asic Cadena R Tipo de conjunto de chips en el dispositivo Ejemplo: "T2", "T3", "Arad (3) ", "Alta"
as_seq_num_supported Lista O    
form_factor Cadena R Cuánto espacio/unidades de bastidor necesita el dispositivo Ejemplos: '1RU', '2RU', '7RU', '13RU'
ecmp_limit Int R Número máximo de saltos siguientes para rutas ECMP Este campo cambia la configuración del BGP en el dispositivo (ecmp max-paths)
Cpu Cadena R ¿Cuál es la arquitectura de cpu del dispositivo. Nota: AOS puede soportar solamente "x86" si los usuarios tienen la intención de utilizar agentes de dispositivo en caja debido a las limitaciones de TACC. Si los usuarios tienen la intención de usar agentes de bandeja de salida, entonces no hay tal restricción. Ejemplo: 'x86'
Etiqueta Cadena R Un nombre humano legible para el DP  
software_capabilities Dict R Un dispositivo puede tener algunas capacidades de software únicas. AOS requiere que estos campos se hayan establecido correctamente para la representación y el despliegue de configuración adecuados.  
onie Bool R ¿La NOS admite onie  
lxc_support Bool R ¿El dispositivo es compatible con contenedores LXC?  
slot_count Int R Cuántas ranuras tiene el dispositivo Si el dispositivo es modular, tendrá un slot_count distinto de cero.
Selector Dict R El AOS utiliza la información del selector para hacer coincidir el DP con el dispositivo real. Cada uno de los cuatro campos del selector debe coincidir exactamente con los derivados del dispositivo. Como parte de la incorporación del dispositivo, el agente del dispositivo hace una coincidencia exacta en cada uno de estos campos para asignar correctamente el DP al dispositivo. A menos que esto suceda, el dispositivo no puede formar parte de AOS
os_version Cadena R Regex para la versión del so en el dispositivo. AOS utilizará este regex del DP para hacer coincidir y asignar un dispositivo de sistema a un DP  
Modelo Cadena R Regex para la información del modelo como se ve en syseeprom que AOS usará para hacer coincidir y asignar un dispositivo de sistema a un DP  
os Cadena R Regex para el nombre de SO que AOS usará para hacer coincidir y asignar un dispositivo de sistema a un DP  
Fabricante Cadena R Regex de proveedor/fabricante que AOS utilizará para hacer coincidir y asignar un dispositivo de sistema a un DP  
Puertos Lista R Número de puertos que especifica el dispositivo. El puerto es una entidad física en el dispositivo como se ve desde el panel frontal del conmutador
panel_id Int R Al ser un campo por puerto, la interfaz de usuario usa este campo para mostrar las filas y las columnas. Para los dispositivos en los que los puertos se dividen entre varios paneles, el usuario deberá asignar correctamente los puertos al panel correcto panel_id es informativo solo en este punto. La GUI de Apstra utiliza esta información para colocar los puertos de manera geométrica tan cerca de cómo aparecen en el panel frontal físico del dispositivo. El panel_id no se utiliza en el motor de renderizado de configuración dentro de AOS y se utiliza únicamente para la asignación estética entre la apariencia física de los puertos del dispositivo a la de la pantalla del puerto de interfaz de usuario de AOS.
slot_id Int R Al ser un campo por puerto, esto representa el módulo/ranura al que pertenece este puerto. Para dispositivos modulares, habrá varias ranuras.  
connector_type Cadena R Al ser un campo por puerto, esto registra el tipo de conector para el puerto físico  
row_id Int R Esto se usa para representar el diseño del puerto. El usuario puede ver la especificación y averiguar cuántas filas tiene el diseño y el ID de fila para este puerto.  
column_id Int R Esto se usa para representar el diseño del puerto. El usuario puede ver la especificación y averiguar cuántas columnas tiene el diseño y el ID de columna para este puerto.  
Transformaciones Lista R Las transformaciones capturan las capacidades de salida del puerto. Si un puerto es 40G->4x10G, habrá 2 transformaciones. Hay al menos una transformación por puerto, porque cada puerto es capaz de al menos una velocidad.  
is_default Bool R Al ser un campo por transformación, esto representa si la velocidad que representa esta transformación es la velocidad predeterminada del puerto. Esta información se puede leer en la especificación. Por ejemplo, para un puerto qsfp28, la velocidad predeterminada es 100 G, por lo que la transformación con interfaces de 100 G establece el is_default en True  
Interfaces Lista R Este es un campo por transformación. Para la transformación 4x10G, habrá 4 interfaces activas, cada una con capacidad de 10G. Del mismo modo, para la transformación 40G, habrá una interfaz activa con velocidad 40G. Las interfaces son el estado de puerto efectivo cuando se colocan en un modo de interrupción.
Estado Cadena R Por campo de interfaz. Representa si es una interfaz activa o inactiva. Este campo es útil cuando se crean IMs que utilizan este DP, especialmente para modelos con limitaciones entre puertos En ciertos proveedores como EOS, el sistema operativo espera interfaces inactivas y activas en la configuración. Por ejemplo, en una 40G->4x10G, la transformación #1 tendrá 1 interfaz 40G activa y 3 interfaces inactivas. La transformación n.º 2 tendrá 4 interfaces 10G activas. Valores de ejemplo: "activo" , "inactivo"
Ajuste Cadena Opcional Por campo de interfaz. Esto captura el comando específico del proveedor para aplicar una velocidad de interfaz y para llevar el puerto al modo de interrupción seleccionado.  
Velocidad Dict Opcional Por campo de interfaz. Esto representa la velocidad que esta interfaz debe ejecutarse una vez configurada en el dispositivo.  
Unidad Cadena R Por campo de velocidad, representa la unidad de velocidad  
Valor Int R Por campo de velocidad, representa el valor de velocidad  
Nombre Cadena R Por campo de interfaz, este es el nombre de la interfaz, ya que el proveedor o sistema operativo requiere el nombre cuando la interfaz está configuradaen la transformación de ruptura seleccionada en el dispositivo. Este es un campo semántico pesado.  
interface_id Int R Un identificador único que se usa para ID de la interfaz en la base de datos.  
transformation_id Int R Identificador único que se usa para identificar la transformación en la base de datos.  
port_id Int R Un identificador único que se usa para ID el puerto en la base de datos.  

Obtenga información del selector del dispositivo

Introducir la información correcta en todos los 4 campos del selector es fundamental para que el dispositivo coincida con el perfil del dispositivo.

En la siguiente tabla, la mayoría de la columna 4 es suficiente para que obtengamos todos los 4 campos. La columna 5 analiza un poco más en detalle cómo Apstra obtiene estos campos y procesos en Python. La lectura de la columna 5 ayuda al usuario a ganar certeza, sin embargo, no es necesario si uno inicia sesión en el cuadro y es capaz de leer el archivo, escribir los comandos y leer manualmente humanamente esta información simple.

Referencia: Lea este vínculo' para comprender los códigos Cumulus TLV para los campos sys eeprom.

Ejemplo general de salida de una información típica de syseeprom del dispositivo de Cumulus.

Ahora, intentemos aplicarlos a un ejemplo en Apstra, elijamos Accton 5712-54X.

Ejemplo de valor del campo selector Qué archivos del dispositivo tienen esta información [Información adicional] Procesamiento de Python para obtener los campos exactos después de ejecutar el comando/leer el archivo
Modelo 0x21 5712-54X-O-AC-F decode_syseeprom_command = "/usr/cumulus/bin/decode-syseeprom" No mucho, lea el syseeprom, use el valor de 0x21 en TLV
Fabricante Si 0x2D en syseeprom, 0x2D más 0x2B Edgecore decode_syseeprom_command = "/usr/cumulus/bin/decode-syseeprom" No mucho, lea el syseeeprom, use el valor (0x2D o 0x2B) en TLV
Versión cat /etc/lsb-release, elija el DISTRIB_RELEASE 3.7.3 lsb_release_file = "/host_etc/lsb-release"

cumulus_info = leer el archivo lsb-release

match = re.search(r'%s=(.+)' % re.escape('NAME'), cumulus_info)

valor = match.group(1) si value[0] == value[-1] y value[0] en "": value = value[1:-1] devuelve value.split(" ")[0]

Familia de SO cat /etc/os-release, elija la primera parte del NOMBRE Cumulus os_release_file = "/host_etc/os-release"

Leer el archivo

cumulus_info = contenido de <archivo> coincidencia = re.search(r'%s=(S+)' % re.escape('DISTRIB_RELEASE'), cumulus_info) devuelve match.group(1)

Modelo y fabricante/proveedor

Versión del sistema operativo

Familia OS

Uso de la información que se obtuvo anteriormente en el selector de Accton 5712 54X como se muestra en la interfaz de usuario:

Valores predeterminados comunes

Lo que hace que el SDK de Apstra genere herramientas rápidas cuando se trata de generar LAS JSON está usando algunos de los conocimientos específicos de un proveedor y volver a usarlos en código Python para generar más de un DP. Las similitudes entre los modelos se establecen como valores predeterminados. Aunque todos los campos del DP se deben rellenar por dispositivo consultando cuidadosamente la especificación, también se pueden utilizar estos valores predeterminados como referencia cuando se llenan los campos.

Valor predeterminado de campo Significado
Puertos -NA- (lista) Los puertos de un dispositivo son uno de esos elementos que varían en su mayoría según el dispositivo. No tiene sentido tener un valor predeterminado para los puertos, más a menudo que no se usará.
Etiqueta -NA- (cadena) Cada etiqueta debe ser única, por lo que no se aplica un valor predeterminado
slot_count 0 (int) Afecta a la configuración. Para dispositivos no modulares, deje este 0. Para el dispositivo modular, esta es la cantidad de tarjetas de línea que excluyen las unidades de supervisor.
Id Sin valor predeterminado. Cuando el usuario está construyendo json, asegúrese de proporcionar una cadena única como id para el DP. Esto es especialmente aplicable cuando el usuario crea el json e importa la carga en AOS mediante la API REST POST/PUT. Sin embargo, si el usuario usa la interfaz de usuario para rellenar los campos, la interfaz de usuario solicita la etiqueta, pero asigna un id entre bastidores. Sin embargo, este campo id es necesario para un DP válido.  
os_version "(3\.[ 5-7]\.\d+)" (cadena) Por lo general, el valor predeterminado refleja las versiones compatibles con AOS para la versión. A partir de AOS 3.1.1 es compatible con 3.5-3.7. AOS mantiene una matriz de gestión oficial por NOS herehttp://docs.dc1.apstra.com/feature_matrix.html El valor os_version en el DP es más permisivo que lo que está oficialmente certificado, para facilitar experimentos de versiones de SO (no compatibles oficialmente) para un modelo de hardware determinado.

Capacidades

Si tiene la especificación del dispositivo, puede obtener sus capacidades de hardware y software para ingresar en el perfil del dispositivo.

La siguiente tabla contiene valores comúnmente encontrados en dispositivos de Cumulus (basados en dispositivos calificados).

del
Descripciónvalor del campo selector
Userland 64 (int) Esto no afecta a la configuración a partir de AOS 3.1.1
form_factor '1RU' (cadena) Esto no afecta a la configuración a partir de AOS 3.1.1
ecmp_limit 64 (int) Esto no afecta a la configuración a partir de AOS 3.1.1
Asic 'T2' (cadena) AOS mira esto para ciertos escenarios como la nota de la versión de CumulusRN 766. El RN indica que en las plataformas Broadcom Trident II+, Trident 3 y Maverick, en un entorno de enrutamiento VXLAN externo, el conmutador no reescritura direcciones MAC y TTL, por lo que los paquetes se pierden en el siguiente salto. Para configurar esto, se analiza el campo asic junto con el campo de versión os para determinar si RN766 se aplica a la versión dp/dispositivo y, si es así, para manejarlo en consecuencia.
Cpu 'x86' (cadena) Esto no afecta a la configuración a partir de AOS 3.1.1
Ram 16 (int) (Tenga en cuenta que la unidad está en GB) Esto no afecta a la configuración a partir de AOS 3.1.1
onie True (bool) (predeterminado) Esto no afecta a la configuración a partir de AOS 3.1.1
lxc True (bool) (predeterminado) Esto no afecta a la configuración a partir de AOS 3.1.1
Nota:

No es necesario configurar ninguna configuración adicional para "funciones compatibles" para perfiles de dispositivos de Cumulus. Por lo tanto, la GUI dice "no admite funciones".

Semántica específica de puerto

Cada interfaz por transformación por puerto por perfil de dispositivo requiere una configuración.

El representador de configuración (archivos jinja) utiliza esta configuración de puerto para configurar correctamente las interfaces en el dispositivo. El DP le permite configurarlos para el dispositivo. Por lo tanto, es muy importante que estos campos de configuración se rellenen correctamente en el DP. En esta sección, analizaremos cuál es el esquema que Apstra aplica para la configuración del puerto de Cumulus.

Configuración de puerto de ejemplo:

Dónde se encuentra este campo: Si tiene 32 puertos, cada puerto capaz de 40 G y 4x10G, tendrá:

  • 2 transformaciones por puerto
  • 1 interfaz activa en 1ª transformación; la configuración se puede encontrar en cada una de estas interfaces
  • 4 interfaces activas en la segunda transformación; la configuración se puede encontrar en cada una de estas interfaces

Semántica de nombre de interfaz en Cumulus

Las reglas para nombrar una interfaz son las siguientes:

  • Argumentos: port_id(obligatorio), lane_id(opcional, solo se aplica en caso de un puerto roto)

Ejemplo de un nombre de interfaz en Cumulus, swp49s0. Primero, obtenga el lane_suffix:

Ejemplo: s0

Si lane_id:

Lane_suffix = "s%d" % lane_id

Más:

Lane_suffix = ""

Luego, cree el nombre con id de puerto y lane_suffix Nombre = "'swp%d%s' % (port_id, lane_suffix)"

Ejemplos: Interfaces para transformación 4x10G en id de puerto 49: - swp49s0 - swp49s1 - swp49s2 - swp49s3 Interfaces para transformación 40G en id de puerto 49: - swp49

Esquema de configuración de puerto en Cumulus

Edición de configuración de puerto acumulado campo obligatorio/opcional El diccionario de alto nivel
Interfaz Dict R La interfaz de esta configuración es aplicable a
Comando Cadena

R. Esta es la velocidad a la asignación de comandos según lo requiera cumulus. Por ejemplo, si la velocidad de la interfaz es 1G, el comando es 'velocidad de vínculo 1000'

comando = { 1: 'velocidad de enlace 1000', 10: '', 20: '', 25: '', 40: '', 50: '', 100: '', }

El comando, si corresponde, cuando el usuario necesita aplicar la velocidad en esta interfaz
Velocidad Cadena R () La velocidad que se aplicará a esta interfaz

Editar configuración de interfaz por interfaz en la interfaz

La configuración contiene dos elementos importantes de información: el comando y la velocidad. El "comando" va debajo del párrafo de interfaz en /etc/network/interfaces, y "speed" es el valor que va a ports.conf.

  • Sé que mi capacidad de salida de puertos
  • Estoy listo para crear puertos en la interfaz de usuario de Apstra
  • Estoy en el DP->edit->ports->port
  • ¿Cómo puedo rellenar la configuración?
el
Interfaces aplicables en esta transformación Esta velocidad de interfaz to_count ¿No hay ruptura? Velocidad para rellenarse encomando de configuración de interfaz Ajustes según la interfaz en la interfaz de usuario
40 G 40 G 1 Sí (Tenga en cuenta que la configuración sigue siendo la misma incluso para un puerto que es capaz de ruptura 40G. Por ejemplo, en el Accton 6712, tenemos todos los puertos capaces de 40G->4x10G. Mientras que en DellS6010, tenemos puertos 13-16 y 29-32 que son puertos sin capacidad de ruptura de 40 G. Independientemente de si es capaz de romper o no, la configuración para la interfaz 40G sigue siendo la misma) '40G' '' { "interfaz": { "comando": "", "velocidad": "40G" } }
1x40G->4x10G 10 G 4 No '4x10G' '' { "interfaz": { "comando": "", "velocidad": "4x10G" } }
1G 1G 1 '1G' velocidad de enlace 1000' { "interfaz": { "comando": "velocidad de enlace 1000", "velocidad": "10G" } }
Neg automático de 1G Autoneg 1G 1 '' '' { "interfaz": { "comando": "velocidad de vínculo 1000", "velocidad": "" } }
10 G 10 G 1 '10G' '' { "interfaz": { "comando": "", "velocidad": "10G" } }
1x10G->1x1G 1G 1 No '10G' velocidad de enlace 1000' { "interfaz": { "comando": "velocidad de enlace 1000", "velocidad": "10G" } }
1x10G->1x1G autoneg 1G 1 No '' velocidad de enlace 1000' "interfaz": { "comando": "velocidad de vínculo 1000", "velocidad": "" } }

Configuración de 1x10G->1x1G (utilizado en Dell 4128 y 4148F)

Según las notas de la versión de cumulus rn778, este conmutador debe usar 1G (o 1000) en Ports.conf cuando el puerto 10G se divide en 1G

1G 1 '1G' velocidad de enlace 1000' { "interfaz": { "comando": "velocidad de enlace 1000", "velocidad": "1G" } }
1x10G->1x10G autoneg 10 G 1 No '' '' { "interfaz": { "comando": "", "velocidad": "" } }
100 G 100 G 1 '100 G' '' { "interfaz": { "comando": "", "velocidad": "100G" } }
1x100G->4x25G 25G 4 No '4x25G' '' { "interfaz": { "comando": "", "velocidad": "4x25G" } }
1x100G->4x10G 10 G 4 No '4x10G'   { "interfaz": { "comando": "", "velocidad": "4x10G" } }
1x100G->4x1G 1G 4 No '10G' velocidad de enlace 1000' { "interfaz": { "comando": "velocidad de enlace 1000", "velocidad": "10G" } }
1x100G->12x10G 10 G 12 No ''12x10G' '' { "interfaz": { "comando": "", "velocidad": "12x10G" } }
1x100G->2x20G 20G 2 No '2x20G' '' { "interfaz": { "comando": "", "velocidad": "2x20G" } }
1x100G->1x40G 40 G 1 No '40G' '' { "interfaz": { "comando": "", "velocidad": "40G" } }
1x100G->3x40G 40 G 3 No '3x40G' '' { "interfaz": { "comando": "", "velocidad": "3x40G" } }
1x100G->2x50G 50 G 2 No '2x50G' '' { "interfaz": { "comando": "", "velocidad": "2x50G" } }
1x100G->1x50G 50 G 1 No '50G' '' { "interfaz": { "comando": "", "velocidad": "50G" } }
25G 25G 1 '25G' '' { "interfaz": { "comando": "", "velocidad": "25G" } }
1x25G->1x10G 10 G 1 No '10G' '' { "interfaz": { "comando": "", "velocidad": "10G" } }

Negociación automática para puertos 10GBaseT

En la 10GBaseT, Cumulus admite la negociación automática para algunos dispositivos.

Para incorporar esto en el DP, en ese puerto compatible con la ruptura 10G->1x1G, para la transformación de 1G, tenga la configuración de interfaz de la siguiente manera:

Tenga en cuenta que la "velocidad" dentro de la configuración de "interfaz" se establece en "". Esto permite que la interfaz se configure en modo de negociación automática y el dispositivo negociará automáticamente la velocidad de la interfaz.

En la mensajería instantánea, elija la transformación de neg automático para este puerto.

Cómo hacer que la interfaz como neg automático en el DP:

  1. Vaya al puerto 10GBaseT
  2. Cree una transformación 1G de la siguiente manera:
    • estado: activo
    • velocidad: velocidad máxima posible para la velocidad de interfaz
    • setting->interface->speed: vacío
    • nombre: según las reglas de nombre de interfaz

Por ejemplo, en Dell S4148T-ON, los puertos de 1-24 y 31-54 son puertos 10GBaseT. Por lo tanto, la transformación n.º 2 configura la velocidad en la configuración de interfaz como "".

Restricciones entre puertos

Para capturar toda la esencia de los puertos de un dispositivo en particular, el usuario no solo necesita leer la especificación del dispositivo, sino también las reglas de puerto específicas del SISTEMA. Afortunadamente, Cumulus empaqueta estas reglas en ports.conf en el paquete dpkg.

Cuando estamos escribiendo perfiles de dispositivos para nuevos dispositivos de Cumulus, lo ideal es seguir el procedimiento:

  1. Para generar una lista de puertos (con transformaciones e interfaces correctas) en el DP, una buena manera es tener acceso a ports.conf y trabajar nuestro camino hacia atrás para luego generar la lista de puertos en el DP de modo que al Cumulus OS le guste. Para conocer las restricciones de puerto detalladas, lea el ports.conf de ese modelo en particular en el dpkg.
  2. ejecute el siguiente comando en cualquier Cumulus box(incluso VX) para obtener acceso a ports.conf:

    Preste atención a las secciones de comentarios que enumeran las restricciones de ruptura de puerto por lo general. Se ve algo así:

    ports.conf --

    Este archivo controla la agregación de puertos y la subdivisión. Por ejemplo, los puertos QSFP+ suelen configurarse como una interfaz 40G o cuatro interfaces 10G/1000/100. Este archivo establece la cantidad de interfaces por puerto, mientras que /etc/network/interfaces y ethtool configuran la velocidad del vínculo para cada interfaz.

    Debe reiniciar el conmutador para que los cambios surtan efecto.

    Dell S6010 tiene:

    32 puertos QSFP numerados de 1 a 32 Estos puertos se pueden configurar como 40 G, se dividen en puertos de 4x10 G o están deshabilitados.

    La canalización X cubre los puertos QSFP del 1 al 16 y la canalización Y cubre los puertos QSFP del 17 al 32.

    El chip Trident2+ solo puede manejar 52 puertos lógicos por canalización.

    Esto significa que 13 es el número máximo de puertos de 40 G que se pueden anular por canalización, con los tres puertos 40G restantes establecidos en "deshabilitado". Los 13 puertos de 40 G se convierten en 52 puertos de 10 G sin agrupación, lo que totaliza 52 puertos lógicos para esa canalización.

    Puertos QSFP+ < etiqueta de puerto 1-32> = [4x10Gdisabled]

  3. Utilice los comentarios al escribir un nuevo Cumulus DP.

Dell Z9100-ON

Restricción de puerto:

Dell Z9100 tiene:
32 puertos QSFP28 numerados 1-32

Estos puertos se pueden configurar como 100G, 50G, 40G, 2x50G, 4x25G, 4x10G o deshabilitados.

Dos puertos SFP+. Estos puertos se pueden configurar como 10G o deshabilitados.

El sistema solo puede manejar 128 puertos lógicos. Esto significa que si todos los 32 puertos QSFP28 se dividen en modo 4x25G o 4x10G, los dos puertos de 10 G (33 y 34) deben establecerse en "deshabilitados".

Para cumplir con esto, en el DP, los puertos 33-34 deben proporcionar una transformación con la interfaz con configuración deshabilitada.

Restricción im:

Si todos los 32 puertos QSFP28 se dividen en 4x25G o 4x10G, los dos 33-34 deben deshabilitarse. Así que elija explícitamente la transformación deshabilitada para 33-34 en este caso.

Dell 4128F

Restricción de puerto:

Dell S4128 tiene:
28 puertos SFP+ numerados 1-24 y 27-30

Estos puertos se pueden configurar como 10G, o grupos de cuatro puertos adyacentes se pueden configurar como 40G.

2 puertos QSFP28 numerados 25-26

Estos puertos se pueden configurar como puertos 100G, 50G, 40G o divididos en puertos de 2x50 G, 4x25G o 4x10G.

Nota:

Los puertos SFP+ 13, 14, 23 y 24 no están en un grupo de cuatro puertos adyacentes y no se pueden configurar como parte de una 40G agrupada.

No se admite la configuración de puertos en bandas.

Para la interfaz dividida en 1G, la velocidad dentro de la configuración de interfaz debe ser "1G" y no "10G" (que normalmente es para otros dispositivos acumulados)

Para cumplir con esto, en el DP, los puertos 33-34 deben proporcionar una transformación con la interfaz con configuración deshabilitada.

Restricción im:

Si todos los 32 puertos QSFP28 se dividen en 4x25G o 4x10G, los dos 33-34 deben deshabilitarse. Así que elija explícitamente la transformación deshabilitada para 33-34 en este caso.

Dell 4148T

Restricción de puerto:

Dell S4148T tiene:
48 puertos de 10GT numerados 1-24 y 31-54

Estos puertos no son configurables.

2 puertos QSFP+ numerados 27-28

Estos puertos se pueden configurar como 40G o dividirse en puertos de 4x10 G.

4 puertos QSFP28 numerados 25-26 y 29-30

Estos puertos se pueden configurar como puertos 100G, 50G, 40G o divididos en puertos de 2x50 G, 4x25G o 4x10G.

Nota:

Los dos puertos QSFP+ están DESHABILITADOs de forma predeterminada y los cuatro puertos QSFP28 están configurados para 100 G de forma predeterminada. Para habilitar los dos puertos QSFP+ para 40G o 4x10G, los cuatro puertos QSFP28 también se deben configurar para 40G o 4x10G.

En el DP, para respetar esta restricción necesitamos una transformación con la configuración "deshabilitada" como sigue para los puertos 27-28

Restricción im:

Para habilitar los dos puertos QSFP+ (27-28) para 40G o 4x10G, los cuatro puertos QSFP28 también se deben configurar para 40G o 4x10G.

Dell 4148F

Restricción de puerto:

Dell S4148 tiene:
48 puertos SFP+ numerados 1-24 y 31-54

Estos puertos se pueden configurar como 10G, o grupos de cuatro puertos adyacentes se pueden configurar como 40G.

2 puertos QSFP+ numerados 27-28

Estos puertos se pueden configurar como 40G o dividirse en puertos de 4x10 G.

4 puertos QSFP28 numerados 25-26 y 29-30

Estos puertos se pueden configurar como puertos 100G, 50G, 40G o divididos en puertos de 2x50 G, 4x25G o 4x10G.

Nota:

Los dos puertos QSFP+ están DESHABILITADOs de forma predeterminada y los cuatro puertos QSFP28 están configurados para 100 G de forma predeterminada. Para habilitar los dos puertos QSFP+ para 40G o 4x10G, los cuatro puertos QSFP28 también se deben configurar para 40G o 4x10G.

Los 2 QSFP+ y 4 QSFP28 tienen las mismas reglas que Dell 4148T. Los puertos 48 SFP+ tienen las mismas restricciones de configuración de 1G que Dell 4128F, es decir.

6812_32x_O edgecore

Restricción de puerto:

Este archivo controla la agregación de puertos y la subdivisión. Por ejemplo, los puertos QSFP+ suelen configurarse como una interfaz 40G o cuatro interfaces 10G/1000/100. Este archivo establece la cantidad de interfaces por puerto, mientras que /etc/network/interfaces y ethtool configuran la velocidad del vínculo para cada interfaz.

Debe reiniciar el conmutador para que los cambios surtan efecto.

Accton AS6812_32X tiene:
32 puertos QSFP+ numerados 1-32

Estos puertos se pueden configurar como 40G, divididos en puertos 4x10G o deshabilitados.

La canalización X cubre los puertos QSFP 1-16 y la canalización Y cubre los puertos QSFP 17-32.

El chip Trident2+ solo puede manejar 52 puertos lógicos por canalización.

Esto significa que 13 es el número máximo de puertos de 40 G que se pueden anular por canalización, con los tres puertos 40G restantes establecidos en "deshabilitado". Los 13 puertos de 40 G se convierten en 52 puertos de 10 G sin agrupación, lo que totaliza 52 puertos lógicos para esa canalización.

Para respetar esta restricción, en el DP, todos los puertos 40g->4x10G deben tener una transformación con una interfaz con configuración diaabled del siguiente modo:

Restricción IM:

Cuando elija interfaces de 10 G, asegúrese de que solo haya un máximo de 52 interfaces de 10 G (procedentes de los 13 puertos) para esta IM. También para el resto de los 3 puertos restantes de 40G, seleccione explícitamente la transformación "deshabilitada".

De esta manera, la configuración del puerto se generará correctamente según las restricciones de puerto.

Mellanox 2700

Restricción de puerto:

Los puertos numerados impares pueden hacer la ruptura completa hasta 4x10G y 4x25G.

Incluso los puertos numerados solo pueden tener interfaces de hasta 2x50G y deben deshabilitarse si el puerto de número impar inmediatamente anterior se divide en 4 interfaces. (Fuente: https://docs.mellanox.com/display/sn2000pub/Cable+Installation)

¿Cómo se traduce esto en el DP?

Los puertos numerados impares, como el puerto 1, tienen las siguientes transformaciones:

#1 (100 Gbps, por defecto) swp1
N.º 2 (50 Gbps) swp1s0 swp1s1
N.º 3 (50 Gbps) swp1
N.º 4 (40 Gbps) swp1
N.º 5 (25 Gbps) swp1s0 swp1s1 swp1s2 swp1s3
N.º 6 (10 Gbps) swp1s0 swp1s1 swp1s2 swp1s3
n.º 7 (1 Gbps) swp1s0 swp1s1 swp1s2 swp1s3

Mientras que los puertos pares numerados, como el puerto 2, tienen las siguientes transformaciones.

#1 (100 Gbps, por defecto) swp2
N.º 2 (50 Gbps) swp2s0 swp2s1
N.º 3 (50 Gbps) swp2
N.º 4 (40 Gbps) swp2
N.º 5 (100 Gbps) swp2

Tenga en cuenta que incluso los puertos no tienen las transformaciones 10G y 25G. Además, tienen una interfaz "deshabilitada" en la transformación 5 con la siguiente configuración:

Restricciones de IM:

Si desea incluir un puerto numerado impar dividido en 4 interfaces, asegúrese de elegir también la transformación deshabilitada del siguiente puerto incluso numerado.

Por ejemplo, en el mapa de interfaz Mellanox_MSN2700_Cumulus__AOS-48x10_8x100-1

Dado que utilizamos los puertos: [1,3,5,7,9,11,13,15,17,19,21,23] para generar las interfaces 4x10G, también elegimos la 5ª transformación (deshabilitada) para puertos [2,4,6,8,10,12,14,16,18,20,22,24]. Por lo tanto, en la interfaz de usuario, para la asignación de interfaz, verá 12 interfaces no utilizadas correspondientes a estas interfaces deshabilitadas.

Solo si se incluyen en el mapa de interfaz, Apstra generará los puertos correctos.conf cumpliendo con la restricción anterior de Cumulus Mellanox 2700. Consulte el caso de uso para restricciones de inter puerto en la página Mapas de interfaz para obtener más detalles sobre la creación del mapa de interfaz.

Solución de problemas

Por lo general, la discordancia del dispositivo ocurre al principio del ciclo de vida de un dispositivo. Si el dispositivo no selecciona un perfil de dispositivo, compruebe los cuatro campos de selector del perfil del dispositivo.

Podrían producirse errores de implementación debido a configuraciones de puerto incorrectas. Esto podría ser que los puertos se configuraron con velocidades incorrectas o las restricciones de puerto específicas del SO no se manejaron en el perfil del dispositivo o en la asignación de interfaz.

Un posible flujo para la causa raíz sería:

  1. Compruebe el DP para ver si hay errores obvios en las capacidades del puerto. ¿Es el puerto realmente capaz de las velocidades que el DP ha configurado. Los registros /var/log/switchd del dispositivo son un buen recurso para analizar los mensajes de ERROR.
  2. Compruebe si el DP ha configurado correctamente las interfaces autoneg o deshabilitadas. Tanto el autoneg como el deshabilitado se pueden expresar en el campo de configuración de interfaz.
  3. Las restricciones de puerto se pueden leer desde los siguientes archivos:

Apéndice

Asignación del DP a LD en la mensajería instantánea

La asignación especifica cómo exactamente el usuario desea asignar los puertos físicos a las interfaces lógicas.

Los 5 campos de la asignación son: [DP portID, DP transformationID, DP InterfaceID, LD panelID, LD portID].

Estos cinco campos permiten al usuario asignar el DP exactamente al LD. Los tres primeros campos especifican qué puerto, transformación e interfaz en el DP es la interfaz de la IM a la que hace referencia:

  1. (id de puerto, id de transformación): se utilizan todas las interfaces activas en la transformación dada; las interfaces activas se asignan en el orden en que aparecen en la transformación.
  2. (id de puerto, id de transformación, id de interfaz): si el usuario especifica el tercer campo de la asignación, la interfaz particular de la transformación se utiliza en la asignación.