CodingBox Q&A Ask question

Edgecore AS9716-32D: sfputil decodifica um módulo QSFP-DD de 400G como QSFP28 no PDDF

Asked Active Viewed 291 AI translation from English
4

Estamos subindo um par de AS9716-32D como spine de 400G no laboratório, numa imagem SONiC da comunidade com a camada de plataforma PDDF. A óptica não é o problema, o peer linka direitinho, mas tudo que o switch fala sobre eles está errado.

  • Edgecore AS9716-32D (x86_64-accton_as9716_32d-r0)
  • build SONiC da comunidade com PDDF para essa plataforma
  • módulo QSFP-DD de 400G (peça NeoPhotonics) no primeiro slot

A leitura em si funciona, o módulo aparece listado, e o slot é reportado como QSFP28:

admin@sonic:~$ sfputil show eeprom
Ethernet0: SFP EEPROM detected
        Identifier: QSFP28 or later
        Vendor Name: NeoPhotonics

É na linha do identifier que desanda. Essa é uma peça QSFP-DD, então os bytes abaixo estão sendo decodificados contra o conjunto de campos do SFF-8636 em vez do CMIS, e os campos seguintes saem como ruído.

Já verificado até agora:

  • o módulo em si está bom, a mesma peça lê certo em outra plataforma e o outro lado vê luz;
  • reencaixar e mover para outro slot não muda nada, todas as portas de 400G se comportam igual;
  • na descrição de dispositivo do PDDF esses slots estão declarados como QSFP28 e amarrados ao optoe1.

Esse último ponto é a resposta inteira, os slots QSFP-DD simplesmente precisam de um optoe diferente, e editar a descrição da plataforma é o jeito aceito de corrigir isso, ou tem algo acima que também precisa aprender o tipo do slot?

Comments 4

Accepted answer

Seu sintoma bate exatamente com o binding, então não precisa olhar mais para a óptica.

A descrição de dispositivo do PDDF para o AS9716-32D declara os slots de 400G como QSFP28 e amarra eles ao optoe1. O optoe1 expõe o layout de EEPROM do SFF-8636 que QSFP+ e QSFP28 usam, então um módulo CMIS é lido pelo mapa errado e tudo depois do identifier vira ruído. O tipo de porta que você vê não é detectado de verdade, é simplesmente o que a descrição diz.

QSFP-DD segue o CMIS, e o CMIS é servido pelo optoe3. A correção é trocar os dois campos na descrição de dispositivo do PDDF para esses slots: o tipo de QSFP28 para QSFP-DD, e o driver de optoe1 para optoe3. Verifiquei isso na mesma caixa com uma peça NeoPhotonics de 400G, e depois da mudança o sfputil show eeprom retorna o módulo decodificado direito.

Duas ressalvas. É dado de plataforma, então um upgrade de imagem coloca a descrição antiga de volta com o maior prazer, a menos que a mudança esteja na imagem que você constrói. E lá na origem essa mudança exata foi aprovada mas o pull request foi fechado sem ser mesclado, o trabalho tendo sido incorporado numa mudança posterior, então não assuma que sua imagem já carrega isso. Leia primeiro a descrição de dispositivo da sua plataforma e em um minuto você já sabe se tem alguma coisa para correr atrás.

2 Netherlandsoptichub40NL Show original (English) AI translation

Antes de mexer em qualquer arquivo de plataforma, posta o dump bruto: sudo sfputil show eeprom -d nessa porta. Se todos os bytes estão lá e só a interpretação está errada, isso é um problema de binding e não de módulo, e essa distinção vale dez minutos antes de alguém começar a falar em RMA.

A outra metade você já respondeu sozinho. O optoe1 é a variante SFF-8636 usada por QSFP+ e QSFP28, então um módulo CMIS lido por ele sai bagunçado a partir do identifier, que é exatamente a saída que você colou. Uma vez que a descrição nomeia optoe1 para um slot QSFP-DD não sobra nada para suspeitar do lado do módulo.

Então cola também as linhas relevantes da descrição de dispositivo do PDDF para um desses slots. Isso diz se só o campo do driver está errado ou o tipo de slot declarado também.

4 IndiagigopsIN Show original (English) AI translation

Era isso mesmo. Tipo do slot para QSFP-DD, driver para optoe3, reload, e o módulo decodifica direito agora, com o sfputil show eeprom não chamando mais o slot de QSFP28. Coloquei a mudança na imagem que construímos em vez de aplicar no switch rodando, justamente por causa do ponto do upgrade lá em cima.

Uma nota honesta para quem achar isso depois: isso corrige como o EEPROM é lido, nada mais. O resto da tubulação de transceiver nessa plataforma ainda tem suas próprias esquisitices e eu não diria que a caixa está totalmente resolvida.

0 IndonesiaedgepilotID Show original (English) AI translation

Já que você mencionou as esquisitices que sobram, aqui está a que está te esperando na mesma plataforma. No nosso AS9716-32D (x86_64-accton_as9716_32d-r0) rodando uma build master do SONiC, o sudo sfputil show presence lista as portas ocupadas como Present e lê o EEPROM delas sem problema, enquanto o show interfaces transceiver presence reporta todas as portas como Not present. O syslog repete:

Error: unable to access file: [Errno 2] No such file or directory: '/sys/bus/i2c/devices/21-0062/module_present_17'

e ler o EEPROM pela CLI falha com RuntimeError('PddfEeprom is not Programmed'). Isso aparece aleatoriamente depois de um reboot e nenhuma causa raiz jamais foi postada, então o sfputil continua sendo a única verificação de presença em que confio ali.

Sem relação mas na mesma área: os dois comandos também são conhecidos por discordar nos nomes de chave na branch 202012, que foi limpa na 202205. Se suas saídas diferem no texto e não no conteúdo, provavelmente é só isso.

4 Türkiyelinknerd83TR Show original (English) AI translation
Log in to comment. Log in