CodingBox Q&A Ask question

Edgecore AS9716-32D: PDDF 환경에서 sfputil이 400G QSFP-DD 모듈을 QSFP28로 디코딩합니다

Asked Active Viewed 291 AI translation from English
4

랩에서 AS9716-32D 두 대를 400G 스파인으로 올리는 중이고, PDDF 플랫폼 레이어가 들어간 커뮤니티 SONiC 이미지를 쓰고 있습니다. 광모듈 자체는 문제가 없고 상대 쪽 링크도 잘 올라오는데, 스위치가 모듈에 대해 말하는 내용이 전부 틀렸습니다.

  • Edgecore AS9716-32D (x86_64-accton_as9716_32d-r0)
  • 이 플랫폼용 PDDF가 들어간 커뮤니티 SONiC 빌드
  • 첫 번째 케이지에 400G QSFP-DD 모듈(NeoPhotonics 제품)

읽기 자체는 성공하고, 모듈도 목록에 뜨고, 케이지는 QSFP28로 보고됩니다.

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

문제는 바로 그 Identifier 줄입니다. 이건 QSFP-DD 제품이라 아래 바이트들이 CMIS가 아니라 SFF-8636 필드셋 기준으로 디코딩되고 있고, 그 뒤로 이어지는 필드들은 노이즈처럼 읽힙니다.

지금까지 확인한 것:

  • 모듈 자체는 멀쩡함. 같은 제품이 다른 플랫폼에서는 제대로 읽히고 반대쪽에서도 빛을 봄
  • 재장착하거나 다른 케이지로 옮겨도 달라지지 않음. 400G 포트 전부 동일하게 동작함
  • PDDF 디바이스 디스크립션에서 이 케이지들이 QSFP28로 선언되어 optoe1에 바인딩되어 있음

이 마지막 부분이 답의 전부인가요? QSFP-DD 케이지는 그냥 다른 optoe 디바이스가 필요한 건가요? 플랫폼 디스크립션을 고치는 게 정석적인 해결법인가요, 아니면 그 위 어딘가에서도 케이지 타입을 알아야 하나요?

Comments 4

Accepted answer

증상이 바인딩 문제와 정확히 일치하니 광모듈 쪽은 더 볼 필요 없습니다.

AS9716-32D의 PDDF 디바이스 디스크립션은 400G 케이지를 QSFP28로 선언하고 optoe1에 바인딩합니다. optoe1은 QSFP+와 QSFP28이 쓰는 SFF-8636 EEPROM 레이아웃을 노출하기 때문에, CMIS 모듈이 잘못된 맵으로 읽히면서 identifier 뒤로는 전부 노이즈처럼 보이는 겁니다. 화면에 보이는 포트 타입은 감지된 게 아니라 그냥 디스크립션에 적힌 그대로일 뿐입니다.

QSFP-DD는 CMIS를 따르고, CMIS는 optoe3가 담당합니다. 해결책은 그 케이지들의 PDDF 디바이스 디스크립션에서 두 필드를 함께 뒤집는 겁니다. 타입은 QSFP28에서 QSFP-DD로, 드라이버는 optoe1에서 optoe3로. 같은 장비에 400G NeoPhotonics 제품을 꽂아 직접 확인했고, 바꾼 뒤로는 sfputil show eeprom이 모듈을 제대로 디코딩해서 보여줍니다.

주의할 점이 두 가지 있습니다. 이건 플랫폼 데이터라서, 빌드하는 이미지 안에 이 수정이 들어가 있지 않으면 이미지 업그레이드가 옛날 디스크립션을 아무렇지 않게 되돌려놓습니다. 그리고 업스트림에서 정확히 이 수정이 승인은 됐지만 이후 변경에 합쳐지면서 풀 리퀘스트 자체는 머지되지 않고 닫혔으니, 여러분 이미지에 이미 들어가 있을 거라고 가정하지 마세요. 먼저 자기 플랫폼의 디바이스 디스크립션을 읽어보면 애초에 쫓을 문제가 있는지 1분 안에 알 수 있습니다.

2 Netherlandsoptichub40NL Show original (English) AI translation

플랫폼 파일을 손대기 전에 해당 포트에서 sudo sfputil show eeprom -d로 raw 덤프부터 올려주세요. 바이트가 다 들어 있는데 해석만 틀렸다면 이건 모듈 문제가 아니라 바인딩 문제이고, RMA 얘기가 나오기 전에 그 구분에 10분 쓰는 건 아깝지 않습니다.

나머지 절반은 이미 스스로 답을 냈습니다. optoe1은 QSFP+와 QSFP28이 쓰는 SFF-8636 방식이라 CMIS 모듈을 그걸로 읽으면 identifier부터 망가진 값이 나오는데, 그게 바로 올려주신 출력입니다. 디스크립션이 QSFP-DD 케이지에 optoe1이라고 적어놓은 이상 모듈 쪽을 의심할 여지는 남지 않습니다.

그러니 그 케이지들 중 하나의 PDDF 디바이스 디스크립션 관련 줄도 같이 올려주세요. 드라이버 필드만 틀렸는지 선언된 케이지 타입까지 틀렸는지 그걸로 알 수 있습니다.

4 IndiagigopsIN Show original (English) AI translation

그게 맞았습니다. 케이지 타입을 QSFP-DD로, 드라이버를 optoe3로 바꾸고 reload하니 이제 모듈이 제대로 디코딩되고, sfputil show eeprom도 더 이상 케이지를 QSFP28이라고 부르지 않습니다. 위에서 나온 업그레이드 문제 때문에 동작 중인 스위치를 패치하는 대신 저희가 빌드하는 이미지 쪽에 수정을 넣었습니다.

나중에 이 글을 보는 분들을 위해 솔직히 말하면, 이건 EEPROM을 읽는 방식만 고친 것뿐입니다. 이 플랫폼의 나머지 트랜시버 관련 부분에는 여전히 자잘한 문제들이 남아 있어서, 장비가 완전히 정리됐다고는 못 하겠습니다.

0 IndonesiaedgepilotID Show original (English) AI translation

남은 문제들 얘기가 나와서 말인데, 같은 플랫폼에서 기다리고 있는 게 하나 더 있습니다. SONiC master 빌드를 돌리는 저희 AS9716-32D (x86_64-accton_as9716_32d-r0)에서, sudo sfputil show presence는 꽂힌 포트를 Present로 표시하고 EEPROM도 제대로 읽는데, show interfaces transceiver presence는 모든 포트를 Not present로 보고합니다. Syslog에는 계속 이게 찍힙니다.

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

CLI로 EEPROM을 읽으면 RuntimeError('PddfEeprom is not Programmed')로 실패합니다. 재부팅 후 무작위로 나타나고 근본 원인은 아직 아무도 올린 적이 없어서, 저희 쪽에서 믿는 presence 확인 방법은 sfputil뿐입니다.

관련은 없지만 비슷한 영역 얘기를 하자면, 이 두 명령어가 202012 브랜치에서 키 이름이 서로 다르게 나오는 문제도 알려져 있는데, 이건 202205에서 정리됐습니다. 출력이 내용이 아니라 표현만 다르다면 아마 그게 전부일 겁니다.

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