RTL8366 사용법

FreeBSD의 Ethernet Switch 프레임워크인 etherswitch는 여러 칩을 지원하지만, 그 중 Realtek RTL8366의 사용법을 간략하게 설명합니다.

RTL8366은 tag vlan이 사용할 수 SR이라는 모델이 먼저 나와 그 후계에서 RB가 나온 것 같습니다. 이들은 미묘하게 사양이 다르지만 etherswitch에서도 같은 방식으로 사용할 수 있습니다.

RTL8316이라는 제품도 RTL8366 앞에 있었던 것 같습니다. 또한 RTL8325라는 제품도있는 것 같습니다.

최근 RT3052에 접속된 RTL8366RB도 사용할 수 있도록 해 리뷰 내놓았으므로, 이것을 타겟으로 해 보겠습니다.

이 모듈에는 내부 스위치와 외부 RTL8366RB가 있으므로 디바이스 이름을 지정하여 etherswitchcfg를 실행해야 합니다.



먼저 드라이버의 기본 상태를 나타냅니다.
# etherswitchcfg -f /dev/etherswitch1 -v
etherswitch1: Realtek RTL8366RB with 6 ports and 16 VLAN groups
etherswitch1: VLAN capabilities=4<DOT1Q>
etherswitch1: VLAN mode: DOT1Q
port0:
    pvid: 2
    flags=0<>
    media: Ethernet autoselect (none)
    status: no carrier
port1:
    pvid: 1
    flags=0<>
    media: Ethernet autoselect (none)
    status: no carrier
port2:
    pvid: 1
    flags=0<>
    media: Ethernet autoselect (100baseTX <full-duplex>)
    status: active
port3:
    pvid: 1
    flags=0<>
    media: Ethernet autoselect (none)
    status: no carrier
port4:
    pvid: 1
    flags=0<>
    media: Ethernet autoselect (none)
    status: no carrier
port5:
    pvid: 1
    flags=1<CPUPORT>
    media: Ethernet 1000baseT <full-duplex,rxpause,txpause>
    status: active
vlangroup0:
    vlan: 1
    members 1,2,3,4,5
vlangroup1:
    vlan: 2
    members 0,5t

etherswitchcfg 명령의 -v 옵션을 사용하여 RB인지 SR인지 확인할 수 있습니다.

이 상태라면 port0은 vlan2가 되어 있어 그대로는 사용할 수 없습니다. 그 이외의 포트는 CPU와 통신이 가능합니다.

port0에서 들어온 패킷은 태그 2가 들어가 CPU 포트로 올라갑니다. 이 때문에 통상의 if에서는 받을 수 없는 패킷이 되고 있습니다.

제품의 포트 번호와 RTL8366의 보트 번호가 다를 수 있으므로주의가 필요합니다. 또한 일부 포트가 나오지 않는 경우도 있습니다.

port0을 사용할 수 있도록 vlan을 설정합니다.
# ifconfig vlan2 create vlan 2 vlandev rt0
# ifconfig vlan2 inet 10.10.10.1 netmask 255.255.255.0

vlan2는 원래 rt0으로 설정된 IP 주소와는 별도의 네트워크가 됩니다.

port1을 vlan2쪽으로 옮겨 보겠습니다.
# etherswitchcfg -f /dev/etherswitch1 vlangroup0 members 2,3,4,5
vlangroup0:
    vlan: 1
    members 2,3,4,5
# etherswitchcfg -f /dev/etherswitch1 vlangroup1 members 0,1,5t
vlangroup1:
    vlan: 2
    members 0,1,5t
# etherswitchcfg -f /dev/etherswitch1 port1 pvid 2             
port1:
    pvid: 2
    flags=0<>
    media: Ethernet autoselect (1000baseT <full-duplex>)
    status: active

하는 일은 vlangroup0에서 port1을 뽑아 vlangroup1에 추가하여 port1의 pvid를 2로 만듭니다.

이제 port0,1과 port2,3,4가 다른 네트워크가되었습니다.

모든 포트에서 vlan을 사용하지 않는 경우 다음 설정을 구성합니다.
etherswitchcfg -f /dev/etherswitch1 vlangroup1 members none
etherswitchcfg -f /dev/etherswitch1 port0 pvid 1
etherswitchcfg -f /dev/etherswitch1 vlangroup0 members 0,1,2,3,4,5

확인은 ping과 tcpdump로 실시하고 있습니다.

vlan의 조작은 자신이 액세스하고 있는 포트를 잘못해 다른 네트워크에 넣어 버리거나 하면 액세스 불능이 되기 때문에, 주의가 필요합니다.

vlan과는 상관없지만 케이블이 오래되고 긴 경우와 같이 협상이 작동하지 않는 경우 다음 명령을 사용하여 포트를 10으로 설정할 수 있습니다.
# etherswitchcfg port2 media 10baseT
port2:
    pvid: 1
    flags=0<>
    media: Ethernet 10baseT/UTP
    status: no carrier

그런데 etherswitchcfg는 명령 이름 조금 길지요. . . 그리고 디폴트로 port0 사용할 수 없는 것은 잊고 상당히 빠질 때 있으므로, 디폴트는 모든 포트에서 vlan 없음이 좋은 생각이 듭니다.

좋은 웹페이지 즐겨찾기