LoginSignup
0
0

More than 3 years have passed since last update.

RTL8366の使い方

Last updated at Posted at 2018-08-20

FreeBSDのEthernet Switchのフレームワークのetherswitchはいくつかのチップをサポートしていますが、その中のRealtekのRTL8366の使い方を簡単に説明します。

RTL8366はtag vlanが使えSRというモデルが最初に出てその後継でRBが出たようです。これらは微妙に仕様が違っていますが、etherswitch上では同じように使えます。

RTL8316という製品もRTL8366の前にあったようです。またRTL8325という製品もあるようです。

最近RT3052に接続されたRTL8366RBも使えるようにしてレビュー出したので、これをターゲットにしてみます。

このモジュールでは内蔵スイッチと外付けのRTL8366RBがあるのでデバイス名を指定してetherswitchcfgを実行する必要があります。

RT3052_Ether.png

まずドライバーのデフォルトの状態を示します。

# 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無しが良い気がします。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0