Metonymical Deflection

ゆるく日々のコト・たまにITインフラ

VLAN Interface + Bonding Interface設定

Ciscoライクに言うとLayer3 Ether Channelになります。


Bonding Interfaceの中にVLAN Interfaceで生成された
トラフィック(VLANタグが付いたEtherフレーム)を流してみたくなるのが、
NWエンジニアという生き物なわけですよ。


CiscoのConfigライクに書くならば、こういうこと↓ができるってこと。

vlan 100,110
!
interface Port-channel1
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 100,110
 switchport mode trunk
 spanning-tree portfast trunk
!
interface FastEthernet0/1
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 100,110
 switchport mode trunk
 channel-group 1 mode on
!
interface FastEthernet0/2
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 100,110
 switchport mode trunk
 channel-group 1 mode on
!
interface Vlan100
 ip address 192.168.100.1 255.255.255.0
!
interface Vlan110
 ip address 192.168.110.1 255.255.255.0

この辺りの内容がすんなり頭の中でイメージできるようになってくれば、
VMWare ESXのvSwitchの概念も「あぁ、そういうことしてるだけね」と解ってくるのかなと。


それでは行ってみよう。
大半が今までの記事の応用的な部分なので、重複している内容があります。

1.Bonding Interfaceの有効化

以下のファイルを開く。

vi /etc/modprobe.conf
以下の設定を追記することで、Bonding Interfaceを有効化する。

alias bond0 bonding
options bonding mode=0 miimon=200

Optionについて、以前の記事などを参照してください。

2.Bonding Interfaceの設定ファイル作成

以下のファイルを開く。

vi /etc/sysconfig/network-scripts/ifcfg-bond0

DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes

以下2つがポイント。
BOOTPROTO=noneを設定している点
IPアドレス関連の設定を全て削除している点

3.Bonding Interfaceに物理NICを追加

ここでは例として、eth1とeth2でBondingする設定を記載します。


eth1のファイルを開く。

vi /etc/sysconfig/network-scripts/ifcfg-eth1

# Intel Corporation 82572EI Gigabit Ethernet Controller (Copper)
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
HWADDR=00:1b:21:2a:5f:e9
MASTER=bond0
SLAVE=yes


eth2のファイルを開く。

vi /etc/sysconfig/network-scripts/ifcfg-eth2

# Intel Corporation 82572EI Gigabit Ethernet Controller (Copper)
DEVICE=eth2
ONBOOT=yes
BOOTPROTO=none
HWADDR=00:1b:21:2a:5e:67
MASTER=bond0
SLAVE=yes

ポイントは以下3つ
BOOTPROTO=noneを設定している点
MASTER=bond0を設定している点
SLAVE=yesを設定している点

4.VLAN Interfaceの有効化

以下のファイルを開く。

vi /etc/sysconfig/network

VLAN=yes
VLAN_NAME_TYPE=VLAN_PLUS_VID_NO_PAD

VLAN_NAME_TYPEについて、以前の記事を参照してください。
また「VLAN_PLUS_VID_NO_PAD」を選択した理由は、SW側の表記と合わせたかったので。
Linux=ifcfg-vlan100
Cisco=interface Vlan100

5.VLAN Interfaceの作成

ここでは、Vlan100とVlan110のInterfaceを作成する例を記載します。


vlan100のファイルを開く。

vi /etc/sysconfig/network-scripts/ifcfg-vlan100

DEVICE=vlan100
BOOTPROTO=static
ONBOOT=yes
PHYSDEV=bond0
IPADDR=192.168.100.10
NETMASK=255.255.255.0
NETWORK=192.168.100.0
BROADCAST=192.168.100.255


vlan110のファイルを開く。

vi /etc/sysconfig/network-scripts/ifcfg-vlan110

DEVICE=vlan110
BOOTPROTO=static
ONBOOT=yes
PHYSDEV=bond0
IPADDR=192.168.110.10
NETMASK=255.255.255.0
NETWORK=192.168.110.0
BROADCAST=192.168.110.255

ポイントは以下3つ。
DEVICE=vlan100DEVICE=vlan110を設定している点
BOOTPROTO=staticを設定している点
PHYSDEV=bond0を設定している点

6.netwrokサービスのリスタート

以下のコマンドにてリスタート。

/etc/rc.d/init.d/network restart

インターフェース bond0 を終了中:                           [  OK  ]
インターフェース eth0 を終了中:                            [  OK  ]
ループバックインターフェースを終了中                       [  OK  ]
ループバックインターフェイスを呼び込み中                   [  OK  ]
802.1Q VLAN パラメーターを設定中:  Set name-type for VLAN subsystem. Should be visible in /proc/net/vlan/config
                                                           [  OK  ]
インターフェース bond0 を活性化中:                         [  OK  ]
インターフェース eth0 を活性化中:                          [  OK  ]
インターフェース vlan100 を活性化中:  Added VLAN with VID == 100 to IF -:bond0:-
                                                           [  OK  ]
インターフェース vlan110 を活性化中:  Added VLAN with VID == 110 to IF -:bond0:-
                                                           [  OK  ]


ifconfigの結果は以下の通り。

ifconfig

bond0     Link encap:Ethernet  HWaddr 00:1B:21:2A:5F:E9
          inet6 addr: fe80::21b:21ff:fe2a:5fe9/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:12624 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12848 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:3344504 (3.1 MiB)  TX bytes:3220815 (3.0 MiB)

eth1      Link encap:Ethernet  HWaddr 00:1B:21:2A:5F:E9
          inet6 addr: fe80::21b:21ff:fe2a:5fe9/64 Scope:Link
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:360 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6291 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:225920 (220.6 KiB)  TX bytes:1555896 (1.4 MiB)

eth2      Link encap:Ethernet  HWaddr 00:1B:21:2A:5F:E9
          inet6 addr: fe80::21b:21ff:fe2a:5fe9/64 Scope:Link
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:12264 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6557 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:3118584 (2.9 MiB)  TX bytes:1664919 (1.5 MiB)

vlan100   Link encap:Ethernet  HWaddr 00:1B:21:2A:5F:E9
          inet addr:192.168.100.10  Bcast:192.168.100.255  Mask:255.255.255.0
          inet6 addr: fe80::21b:21ff:fe2a:5fe9/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:2008 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5573 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:205204 (200.3 KiB)  TX bytes:595222 (581.2 KiB)

vlan110   Link encap:Ethernet  HWaddr 00:1B:21:2A:5F:E9
          inet addr:192.168.110.10  Bcast:192.168.110.255  Mask:255.255.255.0
          inet6 addr: fe80::21b:21ff:fe2a:5fe9/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:3631 errors:0 dropped:0 overruns:0 frame:0
          TX packets:36 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:353410 (345.1 KiB)  TX bytes:8620 (8.4 KiB)

若干問題になりそうな点を記載しておくと、
MACアドレスがみんな同じ値になっていること。
「HWaddr 00:1B:21:2A:5F:E9」*1

Linux上でrouteを書いたりすると、片側に寄る可能性はあり得るけど、
「問題になるかもな?」と気付いた方は対処方法もご存知だと思うので大丈夫でしょう。

7.SW側の設定

以下、Cat3560-8PCのサンプルConfigを記載
不要なConfigはDelっているのであしからず。

Switch#sh run
!
ip routing
!
vlan 100,110,120
!
interface Port-channel1
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 100,110
 switchport mode trunk
 spanning-tree portfast trunk
!
interface FastEthernet0/1
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 100,110
 switchport mode trunk
 channel-group 1 mode on
!
interface FastEthernet0/2
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 100,110
 switchport mode trunk
 channel-group 1 mode on
!
interface FastEthernet0/3
 switchport access vlan 120
 switchport mode access
 spanning-tree portfast
!
interface Vlan100
 ip address 192.168.100.1 255.255.255.0
!
interface Vlan110
 ip address 192.168.110.1 255.255.255.0
!
interface Vlan120
 ip address 192.168.120.1 255.255.255.0
!
end


LinuxマシンとCat3560をL3EtherChannelとして接続ができたときのLog
物理接続として以下のようなイメージ。

Linux Cat3560
eth1 F0/1
eth2 F0/2
Switch#sh etherchannel summary
Flags:  D - down        P - bundled in port-channel
        I - stand-alone s - suspended
        H - Hot-standby (LACP only)
        R - Layer3      S - Layer2
        U - in use      f - failed to allocate aggregator

        M - not in use, minimum links not met
        u - unsuitable for bundling
        w - waiting to be aggregated
        d - default port


Number of channel-groups in use: 1
Number of aggregators:           1

Group  Port-channel  Protocol    Ports
                                                                                                                                                              • -
1 Po1(SU) - Fa0/1(P) Fa0/2(P)


上記の状態でF0/3にPCを接続し、ExPingでシビアにPing打ってみる。


PC:192.168.120.10
宛先1:192.168.100.10
宛先2:192.168.110.10


実行間隔:1ms
ブロックサイズ:64bytes
タイムアウト:100ms


そんでもって、UTPの抜き差しを実施すると、
 抜線時
  F0/1=Ping落ちず
  F0/2=Ping1発落ち
 結線時
  F0/1=Ping5〜6発落ち
  F0/2=Ping5〜6発落ち
ってな具合で、
VLAN Interface&Bonding Interfaceが正常に稼動してることが確認できた。


以上です。

*1:eth1の実MACアドレスになります