Xen 가상화에서 물리적 네트워크 인터페이스는 오로지 dom0만이 직접 엑세스할 수 있다. domU는 dom0에서 만든 가상 인터페이스를 이용해서 네트워킹을 한다. Xen이 만들어지면 Xen은 dom0에서 사용할 가상 인터페이스를 생성하는데, 이들 가상 인터페이스는 물리적인터페이스의 가상 네트워크카드로 veth0, veth1 등의 이름을 가진다. 이 가상 네트워크카드는 vif이름을 가지는 가상 인터페이스와 연결이 되는데, domU는 이 vif를 이용해서 dom0의 네트워크 자원을 사용한다.
vif는 L2 스위치의 인터페이스라고 생각하면 이해가 쉽다. vif는 vif1.1형식으로 표현되는데, 처음 숫자는 domU의 번호와 대응하며, 두번째 숫자는 domU의 인터페이스 번호와 대응한다. 예를들어 vif1.2는 dom1의 eth2와 L2레벨에서 직접 연결된다.
Xen Bridge
브릿지는 L2에서 여러 네트워크 세그먼트를 연결하기 위해서 사용한다. 물리적인 인터페이스와 논리적인 인터페이스를 모두 관리하는 dom0는 bridge를 이용해서 두 개의 인터페이스를 서로 연결한다. dom0는 브릿지를 이용 가상의 스위치를를 만들어서 패킷을 포워딩 한다.
요약하자면 이렇다.
모든 노드는 같은 서브넷 IP(:12) 주소를 가진다.
dom0는 가상의 스위치 역할을 한다.
그림에서 Xen Host는 domu가 Private LAN에 연결하기 위한 브릿지 역할을 하고 있음을 알 수 있다. 실제, Xen 호스트는 물리적 인터페이스와 가상 인터페이스 vif를 연결하는 브릿지 인터페이스를 만들어서 domU와 외부 네트워크를 연결한다. 브리지 인터페이스의 이름은 xenbr0 ~ xenbrn의 형식을 가지는데, 숫자는 브릿지하는 물리적 인터페이스의 번호를 의미한다. 예를 들어 xenbr0은 eth0을 브릿지 하고 xenbr1은 eth1을 브릿지 한다. 대략 그림과 같이 연결된다.
xenbr의 설정을 살펴보자. 다른 네트워크 인터페이스와 마찬가지로 /etc/sysconfig/network-script에 위치한다.
# cat ifcfg-xenbr1
XEMANAGED=yes
DEVICE=xenbr1 # 디바이스 이름
ONBOOT=no
NOZEROCONF=yes
TYPE=Bridge # 디바이스 타입을 Bridge로 설정
DELAY=0
STP=off
PIFDEV=eth1 # 브릿지할 물리적 디바이스
BOOTPROTO=none
NETMASK=255.255.255.0
IPADDR=192.168.6.3
GATEWAY=192.168.6.254
MTU=1500
DNS1=8.8.8.8
DNS2=8.8.4.4
dom0의 물리적인 인터페이스들은 xenbr로 브릿지 되어서 물리적인 포트만 제공하는 역할을 하기 때문에, 인터페이스에 IP와 MAC 주소가 할당되지 않는다. dom0에서 ifconfig를 실행해보면, 물리적인 인터페이스에 IP와 MAC이 할당되지 않은 걸 확인할 수 있을 것이다. MAC 주소와 IP domu의 인터페이스 정보가 나가게 된다.
brctl 명령을 이용해서 브릿지된 가상인터페이스와 MAC 주소를 확인할 수 있다.
## 브리지 이름과 브릿지된 vif 목록을 보여준다.
# brctl show
....
xenbr1 8000.f46d04105943 no eth1
vif27.0
vif31.1
vif10.0
vif29.0
vif75.1
....
## 브리징 된 인터페이스의 MAC 주소를 보여준다.
# brctl showmacs xenbr1
port no mac addr is local? ageing timer
1 00:08:9f:f4:78:f3 no 0.02
1 40:01:c6:e6:fa:01 no 1.61
1 48:5b:39:0a:52:94 no 271.31
11 56:1e:f9:7a:c0:59 no 33.77
1 8a:28:3a:c8:b8:6b no 30.31
9 9e:5d:53:9d:64:8d no 4.45
1 ba:f1:13:c3:82:fa no 2.68
1 ca:4a:68:d0:92:d4 no 5.50
1 f4:6d:04:10:58:89 no 119.41
1 f4:6d:04:10:59:43 yes 0.00
9 fe:ff:ff:ff:ff:ff yes 0.00
브릿지 인터페이스는 vif와 xapi 두 가지 형식이 있다. 외부 인터페이스와 브릿징 할 경우 vif 이름을, 내부 인터페이스를 브릿징 할 경우 xapi를 사용한다. 예를들어 eth0의 vlan 인터페이스인 eth0.10의 브릿지 인터페이스는 xapi이름으로 만들어진다.
VLAN
vlan 인터페이스는 eth0.20의 이름 형식을 가지고 있다. 앞의 숫자는 인터페이스의 이름이고, 뒤의 숫자는 VID이다. doum0는 vlan 인터페이스와 vif의 브릿지 인터페이스를 만든다.
brctl로 확인할 수 있다.
# brctl show
bridge name bridge id STP enabled interfaces
xapi12 8000.f46d04105943 no eth1.20
vif76.1
vif77.1
VLAN을 만들기 위한 xen 명령어들
VLAN을 위한 새로운 네트워크를 만든다. 성공적으로 네트워크를 만들면 UUID를 반환한다.
vlan-create 명령을 이용해서 VLAN 태깅을 원하는 PIF에대한 VLAN 객체를 만든다.
# xe vlan-create network-uuid=<network UUID> pif-uuid=<pif UUID> vlan=110
You tried to create a VLAN on top of another VLAN - use the underlying physical ...
PIF: 53ce62f8-2ed1-261f-e134-b9283f120009
이렇게 만들어진 네트워크를 VM에 attach 하면 된다.
vm-list 명령을 이용해서 VIF를 추가할 UUID를 검색한다. 예를들어 VM 이름이 Ubuntuvm01이라면, 아래와 같이 UUID를 찾을 수 있다.
Contents
Xen Virtual Ethernet Interfaces
Xen Interface
Xen Bridge
VLAN
다음에 할일
Recent Posts
Archive Posts
Tags