OpenVSwitch

(장현정 작가님의 "오픈스택을 다루는 기술" 서적을 참고하였음을 밝힙니다.) 

Open vSwitch(이하 OVS)는 클라우드 서비스 내(內) 가상의 Network Bridge와 Flow rule을 사용하여

효율적으로 가상머신에 패킷을 포워딩하기 위한 가상의 스위치

 

참고링크 https://m.blog.naver.com/love_tolty/220237750951

 

네트워크 어댑터 추가하기 (host only, no dhcp, eth2)

브릿지 만들어 이용해보기

 

1. ovs-vsctl add-br [브릿지이름] #브릿지만들기

작업] ovs-vsctl add-br br-eth2

 

2. ovs-vsctl add-port [브릿지이름] [인터페이스카드이름] #브릿지 포트에 eth1을 추가

작업] ovs-vsctl add-port br-eth2 eth2

 

3. 레이어2 에이전트 설정( vi /etc/neutron/plugins/ml2/ml2_conf.ini )

마지막 줄에 추가(다른 섹션과 겹치지 않게)

[ml2_type_flat]

flat_networks = physnet1

 

4. OSV 에이전트 설정( vi /etc/neutron/plugins/ml2/openvswitch_agent.ini )

마지막 줄에 추가(다른 섹션과 겹치지 않게)

[ovs]

bridge_mappings = physnet1:br-eth2

 

5. 가상 네트워크 생성

openstack network create --project [project ID] --share \

--provider-network-type flat

--provider-physical-network [ovs에 설정된 브릿지네트워크ID] \

[가상 네트워크 이름]

 

작업1] projectID=$(openstack project list | grep service | awk '{print $2}')

-> service project의 두번째 필드 값을 추출해 변수에 저장(첫번째 필드는 |(파이프))

awk는 필드값을 추출해 표시하는 명령어 입니다. 작은 따옴표를 이용해 패턴을 표현하거나 표준입력함수를 이용합니다.

$0은 모든 필드값을 나타내며, 이후 1,2,3,4 이런식으로 필드 값을 정해 줄 수 있습니다.

 

예를 들어 ls -al을 사용했다라고 한다면

-rw-------. 1 root root 13889 1211 16:25 .bash_history

요런 형태로 나타나게 되는데,

 

ls -al | awk '{ print $3 }' 이라고 입력하면 3번째 필드인 root만 표시되게 됩니다.

물론 awk '{ print $3,4 }' 와 같이 콤마를 이용해 한번에 여러필드를 출력하는 것도 가능합니다.

위의 작업은 service라는 이름의 프로젝트를 검색해 ID만 추출하여 변수 projectID에 넣는 과정입니다.

 

작업2] openstack network create --project $projectID \

--share --provider-network-type flat \

--provider-physical-network physnet1 sharednet1

 

6. 서브넷 10.0.0.0/24를 만들어 둔 네트워크(sharednet1)에다가 만들어 넣습니다.

openstack subnet create subnet1 \

--network sharednet1 --project $projectID --subnet-range 10.0.0.0/24 \

--allocation-pool start=10.0.0.200,end=10.0.0.254 \

--gateway 10.0.0.2 --dns-nameserver 10.0.0.2

=> 10.0.0.0/24 대역대의 네트워크인 subnet1 이라는 서브넷을 만들어 sharednet1 이라는 이름으로 미리 정의해 두었던 가상의 네트워크에 넣어 주고 있습니다.

 

7. 여기까지가 기본적인 세팅의 완료. 이제 인스턴스 생성가능

 

 

 

+ Recent posts