==================
OpenVswitch Bridge
==================
เป้าหมาย คือต้องการที่จะใช้งาน virt-manager ให้สามารถใช้งานในรูปแบบของ Bridge mode และใช้งานร่วมกับ openvswitch (virtual switch) เพื่อให้ virtual machine ที่สร้างขึ้นสามารถมี Bride network บน Fedora 20 ได้
อะไรคือ openvswitch
openvswitch คือ virtual switch รองรับการทำงาน openflow protocol เป็นมาตรฐานหลักของ SDN (Software Define networking) โดยที่ Openvswitch จะทำให้ vm ที่สร้างขึ้นสามารถที่ติดต่อกัน ทั้งที่อยู่บน Host เดียวกัน หรือต่าง Host กัน

openvswitch
===========
	* รองรับ VLAN tagging และ 802.1q trunk
	* รองรับ standard spanning tree protocal 802.1D
	* LACP
	* Port mirroring (SPAN/RSPAN)
	* Flow export (sflow, netflow, ipfix)
	* tunneling (GRE, VXLAN, IPSEC)
	* QoS control


Install Openvswitch
*******************
::

	sudo su -
	# dnf install openvswitch python-openvswitch openvswitch-devel
	# systemctl start openvswitch
	# systemctl enable openvswitch
	# lsmod | grep openv

	(result)
	openvswitch           102400  0
	libcrc32c              16384  1 openvswitch
	nf_defrag_ipv6         36864  2 openvswitch,nf_conntrack_ipv6
	nf_nat_ipv6            16384  2 openvswitch,ip6table_nat
	nf_nat_ipv4            16384  2 openvswitch,iptable_nat
	nf_nat                 24576  4 openvswitch,nf_nat_ipv4,nf_nat_ipv6,nf_nat_masquerade_ipv4
	nf_conntrack          106496  8 openvswitch,nf_nat,nf_nat_ipv4,nf_nat_ipv6,xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_ipv4,nf_conntrack_ipv6

ให้เก็บค่า inteface name ,ip ,mac ,route ด้วยคำสั่ง
::

	ip a
	ip r


create bridge
-------------
::

	# ovs-vsctl add-br ovsbr0
	# ovs-vsctl show
    (result)
	e3aa10d9-ca5d-47e4-8eea-5f754cfae0fe
    	Bridge "ovsbr0"
        Port "ovsbr0"
            Interface "ovsbr0"
                type: internal
    	ovs_version: "2.5.0"


นำ  interface enp3s0 มาเชื่อมกับ ovsbr0
::

	# ovs-vsctl add-port ovsbr0 enp3s0
	# ovs-vsctl show
	(result)
	e3aa10d9-ca5d-47e4-8eea-5f754cfae0fe
		Bridge "ovsbr0"
		    Port "ovsbr0"
		        Interface "ovsbr0"
		            type: internal
		    Port "enp3s0"
		        Interface "enp3s0"
		ovs_version: "2.5.0"

.. image:: images/ovs002.png

หลังจากนั้นให้ แก้ config
::

	cd /etc/sysconfig/network-scripts
	cp ifcfg-enp3s0  /root
	cp ifcfg-enp3s0  ifcfg-ovsbr0

edit network config
::

	cd /etc/sysconfig/network-scripts
    vim ifcfg-enp3s0

	DEVICE=enp3s0
    NAME=enp3s0
	HWADDR=54:ee:75:8a:86:09
	ONBOOT=yes
	DEVICETYPE=ovs
	TYPE=OVSPort
	OVS_BRIDGE=ovsbr0

.. note:: ให้แทนค่า

		* enp3s0 ด้วยชื่อของ interface ของตัวเอง
		* HWADDR=54:ee:75:8a:86:09  ด้วย mac ของตัวเอง

::

	# vim ifcfg-ovsbr0

	DEVICE=ovsbr0
	NAME=ovsbr0
	DEVICETYPE=ovs
	TYPE=OVSBridge
	BOOTPROTO=static
	DEFROUTE=yes
	ONBOOT=yes
	IPADDR=192.168.1.100
	PREFIX=24
	GATEWAY=192.168.1.1
	DNS1=8.8.8.8
	DNS2=8.8.4.4
	HOTPLUG=no
	DELAY=0
	IPV6INIT=no

.. note:: ให้แทนค่า

		* 192.168.1.100 ด้วย ip เดิม ของ enp3s0
		* 192.168.1.100 ด้วย gateway เดิม

ยกเลิกการทำงาน NetworkManager
::

    rm -rf /etc/resolv.conf
	systemctl stop NetworkManager
	systemctl disable NetworkManager

	systemctl start network
	systemctl enable network

	reboot