シスコサポートコミュニティ
キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

ACI: controller interface

はじめに

ACI に関しては、ACI How To というページがあり、設定やトラブルシューティング等、一般的な内容についてはそちらの方が充実しています。 設定やトラブルシューティングについては、今後 ACI How To を中心に更新していく予定のため、ACI に関する情報収集はまず、ACI How To を参考にしてください。

ここでは、wiACI とはあまり関係がなく、役に立つかどうかわからない (ACI How To に掲載するのがはばかられるような) コンテンツを掲載しようと思います。


今回は、APIC 上の、SYSTEM > CONTROLLERS > Interfaces で確認できる下記 interface が起動時にどのように作られているかについて紹介します。

 

 

dmesg

起動時の大まかな流れは、dmesg コマンドで確認できます。 udev で interface の名前を変換し、eth2-1, eth2-2 を bond0 に、eth1-1, eth1-2 を bond1 に割り当てています。

admin@apic1:~> dmesg | grep eth
igb 0000:01:00.0: eth0: (PCIe:5.0Gb/s:Width x4) 58:f3:9c:89:8b:ee
igb 0000:01:00.0: eth0: PBA No: FFFFFF-0FF
igb 0000:01:00.1: eth1: (PCIe:5.0Gb/s:Width x4) 58:f3:9c:89:8b:ef
igb 0000:01:00.1: eth1: PBA No: FFFFFF-0FF
udev: renamed network interface eth0 to eth1-1
udev: renamed network interface eth1 to eth1-2
udev: renamed network interface eth1 to eth2-2
udev: renamed network interface eth0 to eth2-1
bonding: bond0: Adding slave eth2-1.
enic 0000:08:00.0: eth2-1: Link UP
bonding: bond0: making interface eth2-1 the new active one.
bonding: bond0: enslaving eth2-1 as an active interface with an up link.
bonding: bond0: Adding slave eth2-2.
enic 0000:09:00.0: eth2-2: Link UP
bonding: bond0: enslaving eth2-2 as a backup interface with an up link.
bonding: bond1: Adding slave eth1-1.
8021q: adding VLAN 0 to HW filter on device eth1-1
bonding: bond1: enslaving eth1-1 as a backup interface with a down link.
bonding: bond1: Adding slave eth1-2.
8021q: adding VLAN 0 to HW filter on device eth1-2
bonding: bond1: enslaving eth1-2 as a backup interface with a down link.
igb: eth1-1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
bonding: bond1: link status definitely up for interface eth1-1, 1000 Mbps full duplex.
bonding: bond1: making interface eth1-1 the new active one.
device eth1-1 entered promiscuous mode
[snip]

 

ちなみに、APIC は下記図のような構成になっていて、NIC は、上段の VIC (leaf と接続)  と、下段の右側 2 つのオンボード NIC (管理用) を使用します。

 

 

lspci

1 つ 1 つ順番に見ていくことにします。 まずは、lspci コマンドで各 PCI slot に接続されているデバイスが何かを確認します。 この結果、0000:01:00.0 と 0000:01:00.1 はオンボードの intel NIC、0000:08:00.0 と 0000:09:00.0 は cisco VIC ということがわかります。

admin@apic1:~> lspci -s 0000:01:00.0 -v
01:00.0 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
        Subsystem: Cisco Systems Inc Device 008a
        Flags: bus master, fast devsel, latency 0, IRQ 32
        Memory at dee00000 (32-bit, non-prefetchable) [size=1M]
        I/O ports at 8020 [size=32]
        Memory at df004000 (32-bit, non-prefetchable) [size=16K]
        Expansion ROM at def80000 [disabled] [size=512K]
        Capabilities: <access denied>
        Kernel driver in use: igb

admin@apic1:~>
admin@apic1:~> lspci -s 0000:01:00.1 -v
01:00.1 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
        Subsystem: Cisco Systems Inc Device 008a
        Flags: bus master, fast devsel, latency 0, IRQ 36
        Memory at ded00000 (32-bit, non-prefetchable) [size=1M]
        I/O ports at 8000 [size=32]
        Memory at df000000 (32-bit, non-prefetchable) [size=16K]
        Expansion ROM at def00000 [disabled] [size=512K]
        Capabilities: <access denied>
        Kernel driver in use: igb

admin@apic1:~>
admin@apic1:~> lspci -s 0000:08:00.0 -v
08:00.0 Ethernet controller: Cisco Systems Inc VIC Ethernet NIC (rev a2)
        Subsystem: Cisco Systems Inc Device 0085
        Flags: bus master, fast devsel, latency 0, IRQ 44
        Memory at dea10000 (64-bit, non-prefetchable) [size=32K]
        Memory at dea18000 (64-bit, non-prefetchable) [size=8K]
        I/O ports at 7000 [size=128]
        Expansion ROM at dea00000 [disabled] [size=64K]
        Capabilities: <access denied>
        Kernel driver in use: enic
        Kernel modules: enic

admin@apic1:~>
admin@apic1:~> lspci -s 0000:09:00.0 -v
09:00.0 Ethernet controller: Cisco Systems Inc VIC Ethernet NIC (rev a2)
        Subsystem: Cisco Systems Inc Device 0085
        Flags: bus master, fast devsel, latency 0, IRQ 45
        Memory at de910000 (64-bit, non-prefetchable) [size=32K]
        Memory at de918000 (64-bit, non-prefetchable) [size=8K]
        I/O ports at 6000 [size=128]
        Expansion ROM at de900000 [disabled] [size=64K]
        Capabilities: <access denied>
        Kernel driver in use: enic
        Kernel modules: enic

admin@apic1:~>

 

 

udev

udev で interface の名前を変換しているようなので、各デバイスがどのような名前に変換されているのか udev rule を確認します。 たくさん出力されますが、上記 4 つのデバイスはそれぞれ下記青字の箇所になります。 この情報から、オンボード NIC は eth1-1, eth1-2 という名前に、VIC カードは eth2-1, eth2-2 という名前になることがわかります。

admin@apic1:~> cat /etc/udev/rules.d/70-persistent-net.rules
#On board 1G NICs
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:01:00.0", SUBSYSTEMS=="pci", DRIVERS=="igb", NAME="eth1-1"
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:01:00.1", SUBSYSTEMS=="
pci", DRIVERS=="igb", NAME="eth1-2"

#On board 1G broadcom
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:01:00.0", SUBSYSTEMS=="pci", DRIVERS=="bnx2", NAME="eth1-1"
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:01:00.1", SUBSYSTEMS=="pci", DRIVERS=="bnx2", NAME="eth1-2"

#10G Intel NICs
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:03:00.0", SUBSYSTEMS=="pci", DRIVERS=="ixgbe", NAME="eth2-1"
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:03:00.1", SUBSYSTEMS=="pci", DRIVERS=="ixgbe", NAME="eth2-2"
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:82:00.0", SUBSYSTEMS=="pci", DRIVERS=="ixgbe", NAME="eth3-1"
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:82:00.1", SUBSYSTEMS=="pci", DRIVERS=="ixgbe", NAME="eth3-2"

#1G Intel NICs for apcisim
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:03:00.0", SUBSYSTEMS=="pci", DRIVERS=="igb", NAME="eth2-1"
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:03:00.1", SUBSYSTEMS=="pci", DRIVERS=="igb", NAME="eth2-2"
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:03:00.2", SUBSYSTEMS=="pci", DRIVERS=="igb", NAME="eth2-3"
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:03:00.3", SUBSYSTEMS=="pci", DRIVERS=="igb", NAME="eth2-4"
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:82:00.0", SUBSYSTEMS=="pci", DRIVERS=="igb", NAME="eth3-1"
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:82:00.1", SUBSYSTEMS=="pci", DRIVERS=="igb", NAME="eth3-2"
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:82:00.2", SUBSYSTEMS=="pci", DRIVERS=="igb", NAME="eth3-3"
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:82:00.3", SUBSYSTEMS=="pci", DRIVERS=="igb", NAME="eth3-4"


#CISCO ENICs
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:08:00.0", SUBSYSTEMS=="pci", DRIVERS=="enic", NAME="eth2-1"
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:09:00.0", SUBSYSTEMS=="
pci", DRIVERS=="enic", NAME="eth2-2"
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:87:00.0", SUBSYSTEMS=="pci", DRIVERS=="enic", NAME="eth3-1"
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:88:00.0", SUBSYSTEMS=="pci", DRIVERS=="enic", NAME="eth3-2"

#ESX vnic
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:02:00.0", SUBSYSTEMS=="pci", DRIVERS=="e1000", NAME="eth1-1"
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:02:01.0", SUBSYSTEMS=="pci", DRIVERS=="e1000", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:02:02.0", SUBSYSTEMS=="pci", DRIVERS=="e1000", NAME="eth1-1"
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:02:03.0", SUBSYSTEMS=="pci", DRIVERS=="e1000", NAME="eth2-2"
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:02:04.0", SUBSYSTEMS=="pci", DRIVERS=="e1000", NAME="eth3-1"
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:02:05.0", SUBSYSTEMS=="pci", DRIVERS=="e1000", NAME="eth3-2"
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:02:06.0", SUBSYSTEMS=="pci", DRIVERS=="e1000", NAME="eth3-3"
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:02:07.0", SUBSYSTEMS=="pci", DRIVERS=="e1000", NAME="eth3-4"

#VirtualBox
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:00:03.0", SUBSYSTEMS=="pci", DRIVERS=="e1000", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:00:08.0", SUBSYSTEMS=="pci", DRIVERS=="e1000", NAME="eth1-1"


admin@apic1:~>

 

これで、最初の図の PHYSICAL INTERFACES に出力されている名前が、どの NIC を指しているのかの関連付けが確認できました。

 

 

network-scripts

次は、bond interface について確認します。
APIC は CentOS ベースのため、interface 設定は、/etc/sysconfig/network-scripts 配下
を確認します。 この出力から、eth1-1, eth1-2 は bond1 に、eth2-1, eth2-2 は bond0 に bonding されていることが確認できます。

admin@apic1:~> ls /etc/sysconfig/network-scripts/
ifcfg-bond0       ifcfg-eth2-1   ifdown       ifdown-ISDN    ifdown-tunnel  ifup-ippp   ifup-post    ifup-wireless           route-bond0.4094
ifcfg-bond0.4094  ifcfg-eth2-2   ifdown-bnep  ifdown-post    ifup           ifup-ipv6   ifup-ppp     init.ipv6-global        route-lxcbr0
ifcfg-bond1       ifcfg-lo       ifdown-eth   ifdown-ppp     ifup-aliases   ifup-isdn   ifup-routes  net.hotplug             route-oobmgmt
ifcfg-eth1-1      ifcfg-lxcbr0   ifdown-ippp  ifdown-routes  ifup-bnep      ifup-plip   ifup-sit     network-functions       rule-bond0.4094
ifcfg-eth1-2      ifcfg-oobmgmt  ifdown-ipv6  ifdown-sit     ifup-eth       ifup-plusb  ifup-tunnel  network-functions-ipv6  rule-oobmgmt
admin@apic1:~>
admin@apic1:~>
admin@apic1:~>
admin@apic1:~> cat /etc/sysconfig/network-scripts/ifcfg-eth1-1
BOOTPROTO="none"
DEVICE="eth1-1"
MASTER="bond1"
MTU="1500"
NOZEROCONF="yes"
ONBOOT="yes"
SLAVE="yes"
USERCTL="no"
admin@apic1:~> cat /etc/sysconfig/network-scripts/ifcfg-eth1-2
BOOTPROTO="none"
DEVICE="eth1-2"
MASTER="bond1"
MTU="1500"
NOZEROCONF="yes"
ONBOOT="yes"
SLAVE="yes"
USERCTL="no"
admin@apic1:~>
admin@apic1:~> cat /etc/sysconfig/network-scripts/ifcfg-eth2-1
BOOTPROTO="none"
DEVICE="eth2-1"
MASTER="bond0"
MTU="1500"
NOZEROCONF="yes"
ONBOOT="yes"
SLAVE="yes"
USERCTL="no"
admin@apic1:~> cat /etc/sysconfig/network-scripts/ifcfg-eth2-2
BOOTPROTO="none"
DEVICE="eth2-2"
MASTER="bond0"
MTU="1500"
NOZEROCONF="yes"
ONBOOT="yes"
SLAVE="yes"
USERCTL="no"
admin@apic1:~>

 

ちなみに、下記 BONDING_OPTS で確認できる通り bond0, bond1 はどちらも、active-backup mode で動作するように設定されているため、最初の図の AGGREGATED INTERFACES 内の ACTIVE INTERFACE 欄に、片方の interface しか表示されていません。
また、APIC の初期設定を行う際に infra vlan と tep address pool を設定しますが、その vlan interface が bond0.[vlan id] となります。 ここでは、default 値を使用しているので、bond0.4094 になり、ip address 10.0.0.1 になっています。

bond1 側は、BRIDGE="oobmgmt" と設定されている通り、ip address 設定は oobmgmt で行われています。 初期設定時の out-of-band management 設定値がここに入ります。

admin@apic1:~> cat /etc/sysconfig/network-scripts/ifcfg-bond0
BONDING_OPTS="mode=active-backup  miimon=60"
BOOTPROTO="none"
DEVICE="bond0"
MTU="1500"
NOZEROCONF="yes"
ONBOOT="yes"
SLAVE="no"
USERCTL="no"
admin@apic1:~> cat /etc/sysconfig/network-scripts/ifcfg-bond0.4094
BOOTPROTO="static"
DEVICE="bond0.4094"
IPADDR="10.0.0.1"
MTU="1496"
NETMASK="255.255.255.255"
NOZEROCONF="yes"
ONBOOT="yes"
USERCTL="no"
VLAN="yes"
admin@apic1:~>
admin@apic1:~> cat /etc/sysconfig/network-scripts/ifcfg-bond1
BONDING_OPTS="mode=active-backup  miimon=60"
BOOTPROTO="none"
BRIDGE="oobmgmt"
DEVICE="bond1"
MTU="1500"
NOZEROCONF="yes"
ONBOOT="yes"
SLAVE="no"
USERCTL="no"
admin@apic1:~>
admin@apic1:~> cat /etc/sysconfig/network-scripts/ifcfg-oobmgmt
BOOTPROTO="static"
DELAY="0"
DEVICE="oobmgmt"
IPADDR="1.80.0.11"
MTU="1500"
NETMASK="255.0.0.0"
NOZEROCONF="yes"
ONBOOT="yes"
STP="no"
TYPE="Bridge"
USERCTL="no"
admin@apic1:~>

 

ACI は今までにはなかった新しいものというように言われることがありますが、
内部動作については、今までの技術を流用している部分も多く、基本的な linux
や network に関する知識が必要になります。

 

バージョン履歴
改訂番号
1/1
最終更新:
‎04-23-2015 02:34 PM
更新者:
 
ラベル(1)