CodingBox Q&A Ask question

OpenWrt에서 DGS-1210-28의 24-28번 포트에 SFP를 꽂아도 아무 변화 없음, 구리 쪽이 계속 링크 유지

Asked Active Viewed 96 AI translation from English
3

홈랩 스위치 얘기입니다. 기본 웹 UI와 씨름하기 싫어서 OpenWrt를 올린 D-Link DGS-1210-28 리비전 F1입니다. 마지막 네 포트, 즉 구리/광 콤보 포트만 빼고 다 잘 됩니다.

  • 스위치: D-Link DGS-1210-28 rev F1
  • 펌웨어: OpenWrt 21.02.0-rc3 (r16172-2aba3e9784)
  • 24-28번 포트: RTL8214FC PHY 뒤에 있는 RJ45/SFP 콤보(나머지는 RTL8218B/RTL8218D)
  • 모듈: 다른 스위치에서는 멀쩡히 링크되는 일반 1G 광모듈

케이지에 뭘 꽂든 포트는 그냥 평범한 RJ45 포트처럼 동작합니다. 구리 쪽이 계속 선택돼 있고 광 쪽은 전혀 올라오지 않습니다.

# ethtool lan28
        Supported ports: [ TP MII FIBRE ]
        Port: MII
        Link detected: yes

부팅 로그를 보면 이 포트들이 RTL8214FC 콤보 PHY 드라이버에 바인딩돼 있고, 이 드라이버는 SFP를 알아야 정상인데, 그러니 하드웨어 쪽은 맞는 것 같습니다.

지금까지 시도한 것:

  • 모듈을 다시 꽂아보고, 두 번째 모듈도 꽂아봄
  • 우선순위 문제인가 싶어 구리 케이블을 아예 뽑아봄 - 포트는 여전히 구리 쪽에 머묾
  • 모듈을 다른 스위치로 옮기니 거기서는 링크가 붙음

벤더 펌웨어일 때는 모듈을 꽂는 순간 스위치가 알아서 포트를 광으로 전환했습니다. 이 빌드에서 매체를 직접 선택하는 방법이 있나요, 아니면 콤보 포트는 아직 못 쓰는 건가요?

Comments 3

Accepted answer

고장난 게 아니라 realtek 타겟에 자동 매체 선택 기능이 아예 없는 겁니다. RTL8214FC는 구리 쪽과 광 쪽을 가진 콤보 PHY인데, 이 펌웨어에서는 누가 바꾸라고 하기 전까지는 MII/구리 쪽에 그대로 머뭅니다. 모듈을 꽂는 건 드라이버 입장에서는 아무 의미가 없습니다. 전환 로직을 아무도 구현하지 않았거든요.

매체는 유저스페이스에서 직접 선택합니다.

ethtool -s lan28 port fibre

이렇게 하면 그 포트에서는 케이지가 활성 매체가 되고 광모듈이 올라옵니다. RJ45 쪽으로 다시 돌리려면:

ethtool -s lan28 port tp

다른 콤보 포트도 포트마다 똑같이 호출하면 됩니다.

기본 펌웨어에서 기억하시는 건 제한적인 자동 선택 기능입니다. 양쪽을 다 보고 둘 다 링크가 있으면 구리가 이겼던 거죠. 그래서 이게 퇴보처럼 보이는 건데, 사실은 아닙니다. 이 타겟용으로는 그 기능이 애초에 작성된 적이 없습니다.

주의할 점 두 가지. 이건 CLI 전용이고 LuCI에는 노출돼 있지 않은데, 이걸 요청하는 사람들이 꽤 됐습니다. 그리고 이 빌드의 어떤 것도 매체를 대신 골라주지 않으니, 부팅할 때마다 광을 쓰고 싶다면 그 호출이 실제로 실행되게 해두세요.

7 South KoreanetrunnerKR Show original (English) AI translation

그거였습니다, 감사합니다. 호출 한 번에 포트가 바로 넘어갔습니다.

# ethtool -s lan28 port fibre
# ethtool lan28 | grep Port:
        Port: FIBRE

광모듈이 바로 올라오고 RJ45 쪽은 조용해졌습니다. 나머지 콤보 포트 세 개도 똑같이 하고, 말씀하신 대로 아무것도 선택을 기억하지 않으니 네 개 호출을 시작 스크립트에 넣어뒀습니다.

포트별 토글을 셸 스크립트에 넣어야 한다는 게 좀 거슬리긴 하지만, 필요했던 건 포트를 쓸 수 있게 되는 거였으니 이제 됐습니다.

4 VietnamtxhawkVN Show original (English) AI translation

이 보드들 위에 모니터링을 쌓기 전에 알아둘 게 있습니다. 이런 보드의 SFP 쪽 링크 상태는 항상 믿을 만한 게 아닙니다. DGS-1210-10P는 디바이스 트리에 sfp 노드가 아예 없어서, 커널은 모듈 삽입이나 신호 손실을 절대 못 받고 MAC은 캐리어가 계속 있다고 보고합니다. 케이지가 비어 있어도 ip link는 lan9에 대해 <BROADCAST,MULTICAST,UP,LOWER_UP>를 찍고, GLC-T-CO 구리 SFP가 꽂혀 있고 패치코드가 없어도 그대로 up입니다. DGS-1210-10MP는 그렇지 않은데, DTS에 이미 해당 노드가 있기 때문입니다.

거기서의 해결책은 10MP와 Zyxel GS1900-10HP를 본뜬 디바이스 트리 변경이었습니다. 케이지마다 i2c-gpio 버스 하나, los-gpio, mod-def0-gpio, tx-disable-gpio를 가진 sfp 노드 하나, 포트에서 참조하는 sfp = <&sfp0>, 그리고 phy-mode = "1000base-x"와 managed = "in-band-status". 이게 갖춰지면 케이지가 I2C로 probe되고 캐리어가 드디어 실제 광 신호를 따라갑니다.

그 시기의 기본 이미지에서는 이 동작이 그대로 남아 있으니, 콤보나 SFP 포트에서 캐리어를 지켜보는 게 있다면 광섬유를 뽑았을 때 실제로 떨어지는지 확인해 보세요.

3 South Korealinkadmin79KR Show original (English) AI translation
Log in to comment. Log in