CodingBox Q&A Ask question

Codificando QSFP28 e QSFP-DD: onde mora o bloco de ID quando você sai do SFF-8472 A0h/A2h

Asked Active Viewed 74 AI translation from English
4

Faço lotes pequenos de recodificação de módulos para integradores, e até agora tudo na minha bancada tinha formato SFP: lê os 256 bytes em A0h com o serial ID na primeira metade, lê A2h para diagnóstico e thresholds, grava o bloco de identificação, pronto. Um cliente apareceu agora com peças de 100G e 400G e minha bancada claramente não dá conta.

  • módulos para recodificar: uma bandeja de QSFP28, alguns QSFP-DD e uma amostra de OSFP
  • programador atual: I2C simples, lê e grava A0h e A2h, sem nenhum page select
  • os hosts do outro lado checam vendor name, part number e serial antes de acender a porta

Minhas notas de trabalho sobre como a memória é organizada, que é o que eu realmente quero conferido:

SFP/SFP+/SFP28 (SFF-8472): A0h 256B, serial ID in first 128B; A2h 256B diagnostics + thresholds, optional 128B pages
QSFP+/QSFP28 (SFF-8636): single A0h, 128B pages selected by byte 7Fh, page 00h mandatory
XFP (INF-8077i): byte 7Fh picks the active table, with serial ID in table 01h and user EEPROM in 02h
OSFP/QSFP-DD/SFP-DD (CMIS 5.x): lower 128B fixed, upper memory by bank and page via 7Eh and 7Fh

O que já tentei:

  • dumpar um QSFP28 com meu perfil de SFP, que me entrega a metade inferior mais qualquer página que estivesse selecionada
  • tirar dois dumps seguidos do mesmo módulo para ver quais bytes se movem sozinhos

Esse mapa está certo, e quais campos eu realmente preciso gravar para codificação de vendor uma vez que a memória está paginada e bancada?

Comments 5

O mapa está certo em substância. O que falta na sua bancada é que no SFF-8636 existe só um endereço e os 128 bytes superiores são uma janela: você grava o número da página no byte 7Fh, depois lê a metade superior e recebe aquela página. A página 00h é a obrigatória e guarda o bloco de identificação, então para codificação raramente é preciso ir a outro lugar. O CMIS põe um banco por cima disso - 7Eh seleciona o banco, 7Fh a página, e os 128 bytes inferiores ficam fixos e sempre legíveis. Sem page select sua ferramenta continua te entregando qualquer página em que o módulo estava parado, que é exatamente o comportamento que você descreveu.

Os campos que importam para codificação de vendor são os mesmos em todo lugar: vendor name, part number, revision, serial, o OUI e os checksums. Erre um checksum e um host chato joga o módulo fora mesmo que toda string pareça perfeita em um dump hex. Mais uma coisa para se preparar: alguns módulos protegem as funções de vendor atrás de senhas de fabricante e de host enquanto a leitura simples continua aberta, então você consegue tranquilamente dumpar uma peça que não consegue gravar.

4 KazakhstanrackhubKZ Show original (English) AI translation

Checksums foram exatamente o que me morderam na primeira tentativa - as strings bateram byte a byte com um módulo comprovadamente bom e o host mesmo assim recusou a peça. Bom saber que a página 00h basta para o bloco de identificação, isso mantém o escopo do trabalho pequeno.

O resumo honesto então é que meu programador não consegue fazer isso de jeito nenhum, porque não tem como gravar o byte 7Fh antes de uma leitura. Prefiro comprar uma placa a aparafusar page select em uma bancada caseira por causa de um pedido. Tem alguma coisa no mercado lidando com bancos CMIS direito, ou isso é mais um recurso de datasheet?

2 ChinasfpnodeCN Show original (English) AI translation

As placas comerciais anunciam isso sim - o SFPTotal Plus X, o equipamento da Reveltronics (REVELPROG-IS), os programadores EDGE e a Flexoptix todos colocam QSFP-DD e OSFP na lista de recursos, e ainda jogam junto uma base de códigos de vendor. A SFPTotal alega mais de 25.000 códigos, Cisco, Huawei e HPE inclusos.

Quanto disso bate com as peças específicas da sua bancada é outra questão, e eu também não confiaria só na minha palavra. Se conseguir, coloque uma amostra do QSFP-DD do cliente na frente da placa antes de fechar a compra. Suporte para um form factor no datasheet não é a mesma coisa que suporte para o módulo específico na sua mão, e as peças bancadas são onde essa lacuna aparece.

3 South Koreawaverunner63KR Show original (English) AI translation

Em contraste, o trabalho de SFP simples continua tão tosco quanto sempre foi: só os primeiros 128 bytes do dump de 256 bytes realmente importam, o resto é reservado do fabricante, e há anos as pessoas gravam imagens GLC-LX ou GLC-BX-D/GLC-BX-U em peças CWDM genéricas para fazê-las serem aceitas por um Catalyst 3560, um HP J8692A ou um EX4200-24F. Esquemas de programador caseiro circulavam por aí para isso, o serp-0.3 sendo o que eu construí, e dumps de um Finisar FCMJ-8521-3, um HP J4858C ou J4859C ou um D-Link DEM-310GT eram os pontos de referência de sempre.

Bicho diferente, mas vale saber caso sticks GPON caiam na sua bancada: ali você não codifica de fora de jeito nenhum. Em um FS GPON-ONU-34-20BI, parente do Nokia G-010S-A, você ganha um shell no próprio stick - com a fibra conectada ele responde em 192.168.1.10 como ONTUSER - define o serial e o MAC com uci, e regrava as vendor strings da EEPROM de dentro com sfp_i2c.

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