3. Single Server 실험망
Single Server를 사용하는 이유
• I have no OpenFlow Switch
I can’t use SDN Controller
SDN Controller는 OF SW를 제어하는데…
• Just private testbed
I want very simple test
개인적으로 간단하게 구성해서 테스트 하고 싶은데…
• How can I use OF SW
It’s OpenvSwitch
OS는 ubuntu로 정해야 되겠군…
4. Single Server 실험망
시스템 구성
• Server
Ubuntu 14.04 LTS
OpenvSwitch를 설치하여야 하기 때문
Eclipse
Java 1.7
OpenIRIS
VirtualBox
OpenvSwitch
OpenFlow Enable Switch 대체
물리망을 대체하기 위함
6. Single Server 실험망
Single Server OS 설치
• OS Install
Ubuntu 12.04 or 14.04 LTS desktop version
Using CD img
• Ubuntu configuration
Network
$ sudo apt-get purge network-manager
$ sudo apt-get autoremove
$ sudo vi /etc/network/interfaces
$ sudo /etc/init.d/networking restart
OS update
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade
$ sudo reboot
auto eth0
Iface eth0 inet static
address <your public ip>
netmask 255.255.255.0
gateway <your gw ip>
dns-nameservers 8.8.8.8 8.8.4.4
7. Single Server 실험망
Single Server 필수 프로그램 설치
• Must Install and Downloads
git/vim/java1.7 Install
$ sudo apt-get –y git
$ sudo apt-get –y vim
$ sudo apt-get –y openjdk-7-jeadless
OpenIRIS download
$ git clone https://github.com/bjlee72/IRIS.git
Download Eclipse
http://eclipse.org/downloads/?osType=linux&release=undefined
압축해제
Download Ubuntu Img
Using VirtualBox VM (DevStack install)
8. Single Server 실험망
Single Server OpenvSwitch 설치 (1/2)
• OpenvSwitch Download
2.0.1 Version
http://openvswitch.org/pipermail/announce/2014/March/0000059.html
9. Single Server 실험망
Single Server OpenvSwitch 설치 (2/2)
• OpenvSwitch Install
Must Read : openvswitch 디렉토리 (INSTALL.Debian)
$ cd openvswitch-2.0.1
$ sudo apt-get install build-essential fakeroot
# dpkg-checkbuilddeps 명령을 통하여 dependency 내용을 확인할 수 있다.
$ sudo apt-get install debhelper autoconf automake libssl-dev
$ sudo apt-get install python-all python-qt4 python-twisted-conch
$ fackroot debian/rules binary
# home directory에 .deb 파일들이 생성된다.
$ cd~
$ sudo apt-get install dkms
$ sudo dpkg –i openvswitch-datapath-dkms_2.0.1.1_all.deb
$ sudo apt-get install module-assistant
$ sudo dpkg –i openvsiwtch-datapath-source_2.0.1-1_all.deb
$ sudo dpkg –i openvswitch-common_2.0.1-1_amd64.deb
$ sudo dpkg –i openvswitch-switch_2.0.1-1_amd64.deb
10. Single Server 실험망
Single Server VirtualBox 설치
• VirtualBox Download and install
Ubuntu Software Center
Find : virtualbox
11. Single Server 실험망
Single Server OpenvSwitch 설정 (1/5)
• OpenvSwitch Configuration
Make 4 Bridges : ovs-1, ovs-1, ovs-3, ovs-4
$ sudo ovs-vsctl add-br ovs-1
$ sudo ovs-vsctl add-br ovs-2
$ sudo ovs-vsctl add-br ovs-3
$ sudo ovs-vsctl add-br ovs-4
12. Single Server 실험망
Single Server OpenvSwitch 설정 (2/5)
• OpenvSwitch Configuration
Make tuntap : vnet1-1, vnet2-1, vnet3-1, vnet4-1
$ sudo ip tuntap add mode tap vnet1-1
$ sudo ip tuntap add mode tap vnet2-1
$ sudo ip tuntap add mode tap vnet3-1
$ sudo ip tuntap add mode tap vnet4-1
$ sudo ip link set vnet1-1 up
$ sudo ip link set vnet2-1 up
$ sudo ip link set vnet3-1 up
$ sudo ip link set vnet4-1 up
13. Single Server 실험망
Single Server OpenvSwitch 설정 (3/5)
• OpenvSwitch Configuration
Connect Bridge to tuntap : ovs-1:vnet1-1, ovs-2:vnet2-1, ovs-3:vnet3-1, ovs-4:vnet4-1
$ sudo ovs-vsctl add-port ovs-1 vnet1-1
$ sudo ovs-vsctl add-port ovs-1 vnet2-1
$ sudo ovs-vsctl add-port ovs-1 vnet3-1
$ sudo ovs-vsctl add-port ovs-1 vnet4-1
14. Single Server 실험망
Single Server OpenvSwitch 설정 (4/5)
• OpenvSwitch Configuration
Make patch : p1-2, p2-1, p2-3, p3-2, p3-4, p4-3
$ sudo ovs-vsctl add-port ovs-1 p1-2 -- set Interface p1-2 type=patch options:peer=p2-1
$ sudo ovs-vsctl add-port ovs-2 p2-1 -- set Interface p2-1 type=patch options:peer=p1-2
$ sudo ovs-vsctl add-port ovs-2 p2-3 -- set Interface p2-3 type=patch options:peer=p3-2
$ sudo ovs-vsctl add-port ovs-3 p3-2 -- set Interface p3-2 type=patch options:peer=p2-3
$ sudo ovs-vsctl add-port ovs-3 p3-4 -- set Interface p3-4 type=patch options:peer=p4-3
$ sudo ovs-vsctl add-port ovs-4 p4-3 -- set Interface p4-3 type=patch options:peer=p3-4
15. Single Server 실험망
Single Server OpenvSwitch 설정 (5/5)
• OpenvSwitch Configuration
Conntction OpenIRIS : ovs-1, ovs-2, ovs-3, ovs-4
$ sudo ovs-vsctl set-controller ovs-1 tcp:<your public ip>:6633
$ sudo ovs-vsctl set-controller ovs-2 tcp:<your public ip>:6633
$ sudo ovs-vsctl set-controller ovs-3 tcp:<your public ip>:6633
$ sudo ovs-vsctl set-controller ovs-4 tcp:<your public ip>:6633
16. Single Server 실험망
Single Server VirtualBox 설정 (1/3)
• VirtualBox Basic Configuration
Make 4 VMs : controlnode, com01, com02, com03, com04
Memory Size : over 4G
Hard Drive Size : over 32G
18. Single Server 실험망
Single Server VirtualBox 설정 (3/3)
• VirtualBox Configuration Complete
You can have OpenFlow Switchs
ovs-1, ovs-2, ovs-3, ovs-4
You can have Hosts
controlnede / com01 / com02 / com03
19.
20. Single Server 실험망
Single Server DevStack Install (1/10)
• controlnode
OS Install : ubuntu 14.04
Already downloaded ubuntu
21. Single Server 실험망
Single Server DevStack Install (2/10)
• controlnode
Must Configuration
$ sudo vi /etc/network/interfaces
auto lo
iface lo inet loopback
# Public Network, NAT
auto eth0
iface eth0 inet static
address <NAT IP> # may be default is 10.0.2.15
netmask 255.255.255.0
gateway <GW IP> # may be default is 10.0.2.2
dns-nameservers 8.8.8.8 8.8.4.4
# Data Network, Private IP
auto eth1
iface eth1 inet static
address <private ip>
netmaks 255.255.255.0
$ sudo apt-get purge network-manager
$ sudo apt-get autoremove
$ sudo /etc/init.d/networking restart
22. Single Server 실험망
Single Server DevStack Install (3/10)
• controlnode
Must Configuration
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade
$ sudo reboot
$ sudo su
$ echo “stack ALL=(ALL:ALL) NOPASSWD:ALL” >> /etc/sudoers
$ sudo vi /etc/hosts
…
<controlnode private IP> controlnode
<com01 private IP> com01
<com02 private IP> com02
<com03 private IP> com03
…
$ sudo apt-get install –y git vim
DevStack Download
$ git clone –b stable/icehouse https://github.com/openstack-dev/devstack.git
23. Single Server 실험망
Single Server DevStack Install (4/10)
• controlnode
DevStack Download
$ cd devstack
$ vim local.conf
[[local|localrc]]
GIT_BASE=${GIT_BASE:-https://git.openstack.org}
# Credentials
DATABASE_PASSWORD=openstack
ADMIN_PASSWORD=openstack
SERVICE_PASSWORD=openstack
SERVICE_TOKEN=admin
RABBIT_PASSWORD=openstack
# Services
ENABLED_SERVICES=rabbit,mysql,key
ENABLED_SERVICES+=,n-api,n-crt,n-obj,n-cond,n-sch,n-novnc,n-cauth
ENABLED_SERVICES+=,neutron,q-svc,q-agt,q-dhcp,q-l3,q-meta
ENABLED_SERVICES+=,g-api,g-reg
ENABLED_SERVICES+=,cinder,c-api,c-vol,c-sch,c-bak
ENABLED_SERVICES+=,horizon
# MULTI_HOST
MULTI_HOST=True
# Services IP
HOST_IP=<controlnode private ip>
# Use this image when creating test instances
IMAGE_URLS+=",http://cdn.download.cirros-cloud.net/0.3.2/cirros-0.3.2-
x86_64-disk.img"
# vnc
VNCSERVER_LISTEN=0.0.0.0
VNCSERVER_PROXYCLIENT_ADDRESS=$HOST_IP
# Branches
KEYSTONE_BRANCH=stable/icehouse
NOVA_BRANCH=stable/icehouse
NEUTRON_BRANCH=stable/icehouse
SWIFT_BRANCH=stable/icehouse
GLANCE_BRANCH=stable/icehouse
CINDER_BRANCH=stable/icehouse
HEAT_BRANCH=stable/icehouse
TROVE_BRANCH=stable/icehouse
HORIZON_BRANCH=stable/icehouse
# Enable Logging
LOGFILE=/opt/stack/logs/stack.sh.log
VERBOSE=True
LOG_COLOR=True
SCREEN_LOGDIR=/opt/stack/logs
24. Single Server 실험망
Single Server DevStack Install (5/10)
• controlnode
Start DevStack
$ ./stack.sh
25. Single Server 실험망
Single Server DevStack Install (6/10)
• com01, com02, com03
OS Install : ubuntu 14.04
Already downloaded ubuntu
26. Single Server 실험망
Single Server DevStack Install (7/10)
• com01, com02, com03
Must Configuration
$ sudo vi /etc/network/interfaces
auto lo
iface lo inet loopback
# Public Network, NAT
auto eth0
iface eth0 inet static
address <NAT IP> # may be default is 10.0.2.15
netmask 255.255.255.0
gateway <GW IP> # may be default is 10.0.2.2
dns-nameservers 8.8.8.8 8.8.4.4
# Data Network, Private IP
auto eth1
iface eth1 inet static
address <private ip>
netmaks 255.255.255.0
$ sudo apt-get purge network-manager
$ sudo apt-get autoremove
$ sudo /etc/init.d/networking restart
27. Single Server 실험망
Single Server DevStack Install (8/10)
• com01, com02, com03
Must Configuration
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade
$ sudo reboot
$ sudo su
$ echo “stack ALL=(ALL:ALL) NOPASSWD:ALL” >> /etc/sudoers
$ sudo vi /etc/hosts
…
<controlnode private IP> controlnode
<com01 private IP> com01
<com02 private IP> com02
<com03 private IP> com03
…
$ sudo apt-get install –y git vim
DevStack Download
$ git clone –b stable/icehouse https://github.com/openstack-dev/devstack.git
29. Single Server 실험망
Single Server DevStack Install (10/10)
• controlnode
Start DevStack
$ ./stack.sh
30.
31. Single Server 실험망
Single Server Test
• OpenIRIS to OpenvSwitch
OpenIRIS connection to OVS (ovs-1, ovs-2, ovs-3, ovs-4)
Run OpenIRIS using Eclipse
You must edit ‘torpedo.properties’
SimpleOFController = false
BasicOFController = true
Connected OVS -> ovs-1, ovs-2, ovs-3, ovs-4
OpenIRIS console
32. Single Server 실험망
Single Server Test
• OpenIRIS to OpenvSwitch
Web page
Single Server ip:8080
ovs-1, ovs-2, ovs-3, ovs-4
controlnode, com01, com02, com03
controlnode, com01, com02, com03 ovs-1, ovs-2, ovs-3, ovs-4
33. Single Server 실험망
Single Server Test
• DevStack (create Network and VM)
Create Network (2 Networks)
Net01 : 30.0.0.0/24, Net02 : 40.0.0.0/24
Create VM (4VMs)
Net01: vm01, vm03 / Net02: vm02, vm04
34. Single Server 실험망
Single Server Test
• DevStack (Node OVS)
networknode
Net01 : 30.0.0.0/24, Net02 : 40.0.0.0/24
com01, com02, com03
Net01: vm01, vm03 / Net02: vm02, vm04
controlnode : sudo ovs-vsctl show com01 : sudo ovs-vsctl show
vxlan configuration vxlan configuration
com01 : create vm02 port
controlnode : Net01, Net02
35. Single Server 실험망
Single Server Test
• DevStack (Ping)
com01, com02, com03
Net01: vm01, vm03 / Net02: vm02, vm04
Ping : vm01 to vm03 (It’s same subnet)
vm01, vm03 Same Network : connected
36. Single Server 실험망
Single Server Test
• DevStack (Ping)
com01, com02, com03
Net01: vm01, vm03 / Net02: vm02, vm04
Ping : vm01 to vm02 (It’s different subnet)
vm01, vm02 Different Network :
Not connected
37. Single Server 실험망
Single Server Test
• DevStack (create Virtual Router)
Connected Net01 to Net02 : Router01
Net01: vm01, vm03 <-> Router01 <-> Net02: vm02, vm04
38. Single Server 실험망
Single Server Test
• DevStack (create Router Node OVS)
networknode
Virtual Router
Routing Net01 to Net02
controlnode : sudo ovs-vsctl show
controlnode : virtual router port
Net01, Net02
39. Single Server 실험망
Single Server Test
• DevStack (check Virtual Router)
Connected Net01 to Net02 : Router01
Net01: vm01, vm03 <-> Router01 <-> Net02: vm02, vm04
40. Single Server 실험망
Single Server Test
• DevStack (Ping)
com01, com02, com03
Connected Net01 to Net02 : Router01
Net01: vm01, vm03 <-> Router01 <-> Net02: vm02, vm04
Ping : vm01 to vm02 (It’s different subnet)
vm01, vm02 Different Network :
Connected (Router01)
41.
42. Multi Nodes 실험망
Todo Multi Node
• OpenIRIS Controller
Ubuntu 14.04 server/cloud
LAN port 3
• Control Node
Ubuntu 14.04 LTS or Ubuntu 14.04 server/cloud
LAN port 2
For Migration
• Network Node
Ubuntu 14.04 server/cloud
LAN port 3
• Compute Node (over 2 systems)
Ubuntu 14.04 server/cloud
LAN port 2
• Switch (OpenFlow SW : 6 ea, SW : 3 ea)
OpenFlow Switch (Data Network)
Switch (Public Network, Management Network, Aggregation)
45. Multi Nodes 실험망
간략 구성도
eth0
Control
Node
OpenIRIS Network Node
Compute Node
#01
Compute Node
#02
eth1
eth1
eth0
eth2 eth1
eth2 eth1 eth1
eth0
eth2:1
eth0
eth1:1
eth0
eth1:1
물리 NIC
OVS
Management Network
(IP: 10.0.0.0/24)
Public Network
(IP: 129.254.197.0/254,
GW: 129.254.197.1)
Management Net
129.254.197.184,
129.254.197.182 129.254.197.183 external
Data Network
(IP: 10.0.10.0/24,
OpenFlow)
가상 연결
10.0.0.11
management
10.0.0.21
management
10.0.0.31
management
10.0.0.41
management
10.0.0.51
10.0.10.31 management
Instance tunnel
10.0.10.41
Instance tunnel
10.0.10.51
Instance tunnel
10.0.10.21
Data Net
Data Net
46. Multi Nodes 실험망
세부 구성도
Data Network
(IP: 10.0.10.0/24)
NEC#02
Netvision#03 Netvision#04
Netvision#01 Netvision#02
eth0 eth2 eth2 eth2 eth2 eth2 eth2 eth2 eth2
eth0 eth2
OpenIRIS
Network
Node
Control
Node
OVS OVS OVS OVS OVS OVS OVS
VM
VM
VM
VM
VM
VM
VM
VM
VM
VM
VM
VM
VM
VM
VM
VM
VM
VM
VM
VM
VM
VM
VM
VM
VM
eth1 eth1 eth1 eth1 eth1 eth1 eth1 eth1 eth1
Management Network
(IP: 10.0.0.0/24)
eth1
Public
Network
eth0
Compute Nodes (#01 ~ #n)
Aggregation SW
NEC#01
OVS
VM
VM
VM
47.
48. Mechanism Driver
Develop Mechanism Driver
• OpenStack plugin
ML2 plugin
Mechanism Driver for OpenIRIS : v0.1 dev. Complete
Network REST : create_network, update_network, delete_network
Subnet REST : create_subnet, update_subnet, delete_subnet
Port REST : create_port, update_port, delete_port
Now testing
Mechanism Driver for OpenIRIS v1.0
OVS Bridge and Port create
We want managed OVS from OpenIRIS
Sync. (Network, Subnet, Port, … info.)
We want managed network type(gre, vxlan, …) from OpenIRIS
49. Mechanism Driver
Develop OpenIRIS Module
• OpenIRIS Module
ML2 Manager
REST call from mechanism_iris (openstack plugin)
Now testing
Tunnel Manager
Create Port to OVS using Network type (gre, vxlan, …)
Support overlay network
L3 Routing Manager
Support L3 Router (ex: virtual router)
…