3.7. 가상 네트워크 인터페이스 카드 (VNIC)

VNIC란 호스트의 물리적인 네트워크 인터페이스 카드를 기반으로 하는 가상 네트워크 인터페이스를 말합니다. 각 호스트는 여러 NIC가 있을 수 있으며 각 네트워크 인터페이스 마드는 여러 가상 NIC(VNIC)의 기반이 될 수 있습니다.
가상 머신에 VNIC 연결 시 Red Hat Virtualization Manager는 VNIC를 연결하는 가상 머신, VNIC 자체, 그리고 VNIC가 기반으로 하는 물리적인 호스트 NIC 간에 여러 연결을 생성합니다. 특히 VNIC가 가상 머신에 연결되는 경우 VNIC가 기반으로 하는 물리적인 호스트 NIC 상에 새로운 VNIC 및 MAC 주소가 생성됩니다. 이렇게 VNIC 연결 후 처음 가상 머신 시작 시 libvirt는 이러한 VNIC에 PCI 주소를 배정합니다. 그 후 MAC 주소 및 PCI 주소를 사용하여 가상 머신에 있는 VNIC의 이름(예: eth0)을 가져옵니다.
MAC 주소를 할당하고 해당 MAC 주소를 PCI 주소와 연결하는 과정은 템플릿 또는 스냅샷을 기반으로 가상 머신을 생성하는 경우에 약간 다릅니다. 템플릿 또는 스냅샷에 대하여 PCI 주소가 이미 생성된 경우 해당 템플릿이나 스냅샷을 기반으로 생성된 가상 머신에 있는 VNIC는 이러한 PCI 주소에 따라 순서가 정해지며 이러한 순서대로 MAC 주소가 할당됩니다. PCI 주소가 템플릿에 대하여 아직 생성되지 않은 경우 해당 템플릿을 기반으로 생성된 가상 머신의 VNIC는 VNIC의 이름 순서대로 할당됩니다. PCI 주소가 스냅샷에 대하여 아직 생성되지 않은 경우 Red Hat Virtualization Manager는 해당 스냅샷을 기반으로 하는 가상 머신의 VNIC에 새 MAC 주소를 할당합니다.
VNIC는 생성된 후 네트워크 브리지 장치에 추가됩니다. 네트워크 브리지 장치는 가상 머신이 가상 머신 논리 네트워크에 연결할 수 있게 해줍니다.
가상화 호스트에서 ip addr show 명령 실행 시 해당 호스트에 있는 가상 머신과 연결된 모든 VNIC가 표시됩니다. 또한 논리 네트워크를 백업하기 위해 생성된 모든 네트워크 브리지도 표시되며 해당 호스트가 사용하는 모든 네트워크 인터페이스 카드(NIC)가 표시됩니다.
[root@rhev-host-01 ~]# ip addr show 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:21:86:a2:85:cd brd ff:ff:ff:ff:ff:ff
    inet6 fe80::221:86ff:fea2:85cd/64 scope link 
       valid_lft forever preferred_lft forever
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000
    link/ether 00:21:6b:cc:14:6c brd ff:ff:ff:ff:ff:ff
5: ;vdsmdummy;: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN 
    link/ether 4a:d5:52:c2:7f:4b brd ff:ff:ff:ff:ff:ff
6: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN 
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
7: bond4: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN 
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
8: bond1: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN 
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
9: bond2: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN 
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
10: bond3: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN 
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
11: ovirtmgmt: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN 
    link/ether 00:21:86:a2:85:cd brd ff:ff:ff:ff:ff:ff
    inet 10.64.32.134/23 brd 10.64.33.255 scope global ovirtmgmt
    inet6 fe80::221:86ff:fea2:85cd/64 scope link 
       valid_lft forever preferred_lft forever
위의 명령에 대하여 콘솔에 다음과 같이 여러 장치가 표시됩니다: 한 개의 루프 백 장치 (lo), 한 개의 Ethernet 장치(eth0), 한 개의 무선 장치 (wlan0), 한 개의 VDSM 더미(dummy) 장치(;vdsmdummy;), 다섯 개의 본딩 장치(bond0, bond4, bond1, bond2, bond3), 그리고 한 개의 네트워크 브리지(ovirtmgmt).
VNIC는 모두 네트워크 브리지 장치 및 논리 네트워크의 멤버입니다. brctl show 명령을 사용하여 브리지 멤버십을 표시할 수 있습니다:
[root@rhev-host-01 ~]# brctl show
bridge name	bridge id		STP enabled	interfaces
ovirtmgmt		8000.e41f13b7fdd4	no		vnet002
							vnet001
							vnet000
							eth0
brctl show 명령에 대한 콘솔 출력 내용을 보면 virtio VNIC가 ovirtmgmt 브리지의 멤버인 것으로 표시됩니다. VNIC가 연결된 모든 가상 머신은 ovirtmgmt 논리 네트워크에 연결되어 있습니다. eth0 NIC도 ovirtmgmt 브리지의 멤버입니다. eth0 장치는 호스트 범위 밖에서 연결을 제공하는 스위치에 케이블로 연결되어 있습니다.