Open vSwitch is a
multi layer software switch which is free and open source software released
under Apache 2 license. In this tutorial we are going to setup Open vSwitch with
NIC bonding. NIC Bonding enables two
or more network interfaces to act as one interface, to provide higher data
rates and as well as link fail over.
Step-1: Create Bond Configuration
Files
We need to create these below files in
/etc/sysconfig/network-scripts/ directory and append the below parameters on
respective files:
[root@linuxcloudy
~]# vi /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
NAME=bond0
TYPE=Bond
BONDING_MASTER=yes
IPADDR=192.168.43.105
NETMASK=255.255.255.0
GATEWAY=192.168.43.1
DNS1=192.168.43.1
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
NM_CONTROLLED=no
BONDING_OPTS="mode=1
miimon=100"
|
Here, you need to replace IP address and interface names as per
setup IP addresses.
Similarly, Modify ens33 and ens34 interfaces
configuration files and put the below parameters:
[root@linuxcloudy
~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE=ens33
TYPE=Ethernet
USERCTL=no
ONBOOT=yes
BOOTPROTO=none
NM_CONTROLLED=no
MASTER=bond0
SLAVE=yes
|
[root@linuxcloudy
~]# vi /etc/sysconfig/network-scripts/ifcfg-ens34
DEVICE=ens34
TYPE=Ethernet
USERCTL=no
ONBOOT=yes
BOOTPROTO=none
NM_CONTROLLED=no
MASTER=bond0
SLAVE=yes
|
Step-2: Load bond driver/module
Check bonding driver/module is loaded for NIC-bonding interface
(bond0) is bringing up.
First, load the bonding module, enter:
[root@linuxcloudy
~]# modprobe --first-time bonding
[root@linuxcloudy
~]#
|
Step-3: Restarting Network service:
Now we can restart the network service in order
to bring up bond0 interface:
[root@linuxcloudy
~]# systemctl restart network
[root@linuxcloudy
~]#
|
Step-4: Verify Bond Configuration:
Enter the below commands to verify the bonding
configuration status from Linux kernel bonding driver:
[root@linuxcloudy ~]# cat /proc/net/bonding/bond0
Ethernet Channel
Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode:
fault-tolerance (active-backup)
Primary Slave:
None
Currently Active
Slave: ens33
MII Status: up
MII Polling
Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms):
0
Slave Interface:
ens33
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure
Count: 0
Permanent HW
addr: 00:0c:29:1b:86:76
Slave queue ID: 0
Slave Interface:
ens34
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure
Count: 1
Permanent HW
addr: 00:0c:29:1b:86:80
Slave queue ID: 0
[root@linuxcloudy ~]#
|
[root@linuxcloudy ~]# ip a
1: lo:
<LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group
default qlen 1000
link/loopback 00:00:00:00:00:00 brd
00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft
forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft
forever
2: ens34:
<BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
master bond0 state UP group default qlen 1000
link/ether 00:0c:29:1b:86:76 brd
ff:ff:ff:ff:ff:ff
3: ens33:
<BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
master bond0 state UP group default qlen 1000
link/ether 00:0c:29:1b:86:76 brd
ff:ff:ff:ff:ff:ff
4: bond0:
<BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state
UP group default qlen 1000
link/ether 00:0c:29:1b:86:76 brd
ff:ff:ff:ff:ff:ff
inet 192.168.43.105/24 brd 192.168.43.255
scope global bond0
valid_lft forever preferred_lft
forever
inet6 fe80::20c:29ff:fe1b:8676/64 scope
link
valid_lft forever preferred_lft
forever
[root@linuxcloudy ~]#
|
Bond configuration done now setup
Open vSwitch:
Step 1. Install the Open vSwitch package:
[root@linuxcloudy ~]# yum install
https://repos.fedorapeople.org/repos/openstack/EOL/openstack-juno/epel-7/openvswitch-2.3.1-2.el7.x86_64.rpm
-y
Loaded plugins: fastestmirror
……………………………
Installed:
openvswitch.x86_64 0:2.3.1-2.el7
Complete!
[root@linuxcloudy ~]#
|
Step 2. Enable and start the openvswitch daemon:
[root@linuxcloudy ~]# systemctl enable
openvswitch
Created symlink from
/etc/systemd/system/multi-user.target.wants/openvswitch.service to
/usr/lib/systemd/system/openvswitch.service.
[root@linuxcloudy ~]# systemctl start
openvswitch
[root@linuxcloudy ~]#
|
Step 3. Check the OVS switch status:
[root@linuxcloudy ~]# ovs-vsctl show
8351a631-f1e7-43f5-a9ee-736f80778c43
ovs_version: "2.3.1"
[root@linuxcloudy ~]#
|
Step 4. Create an Open vSwitch bridge device
called ovs-br0 and verify:
[root@linuxcloudy ~]# ovs-vsctl add-br
ovs-br0
[root@linuxcloudy ~]# ovs-vsctl show
8351a631-f1e7-43f5-a9ee-736f80778c43
Bridge "ovs-br0"
Port "ovs-br0"
Interface "ovs-br0"
type: internal
ovs_version: "2.3.1"
[root@linuxcloudy ~]#
|
Step 5. Modify the bond0 configuration file
/etc/sysconfig/network-scripts/ifcfg-bond0 and Create a bridge configuration
file /etc/sysconfig/network-scripts/ifcfg-ovs-br0 with the following content:
[root@linuxcloudy ~]# cp -p /etc/sysconfig/network-scripts/ifcfg-bond0
/etc/sysconfig/network-scripts/ifcfg-ovs-br0
[root@linuxcloudy ~]# vi /etc/sysconfig/network-scripts/ifcfg-bond0
TYPE=OVSPort
DEVICETYPE=ovs
OVS_BRIDGE=ovs-br0
DEVICE=bond0
ONBOOT=yes
NAME=bond0
BONDING_MASTER=yes
BOOTPROTO=none
USERCTL=no
NM_CONTROLLED=no
BONDING_OPTS="mode=1
miimon=100"
|
[root@linuxcloudy ~]# vi /etc/sysconfig/network-scripts/ifcfg-ovs-br0
DEVICE=ovs-br0
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.43.105
NETMASK=255.255.255.0
GATEWAY=192.168.43.1
|
Step 6. Restart the network service:
[root@linuxcloudy ~]# systemctl
restart network
[root@linuxcloudy ~]#
|
Step 7. Finally, verify the configuration:
[root@linuxcloudy ~]# ovs-vsctl show
8351a631-f1e7-43f5-a9ee-736f80778c43
Bridge "ovs-br0"
Port "ovs-br0"
Interface "ovs-br0"
type: internal
Port "bond0"
Interface "bond0"
ovs_version: "2.3.1"
[root@linuxcloudy ~]#
|
[root@linuxcloudy ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP>
mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens34:
<BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
master bond0 state UP group default qlen 1000
link/ether 00:0c:29:1b:86:76 brd ff:ff:ff:ff:ff:ff
3: ens33: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP>
mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
link/ether 00:0c:29:1b:86:76 brd ff:ff:ff:ff:ff:ff
4: bond0:
<BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue master
ovs-system state UP group default qlen 1000
link/ether 00:0c:29:1b:86:76 brd ff:ff:ff:ff:ff:ff
inet6 fe80::20c:29ff:fe1b:8676/64 scope link
valid_lft forever preferred_lft forever
5: ovs-system:
<BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen
1000
link/ether f2:6c:ff:1e:6e:a7 brd ff:ff:ff:ff:ff:ff
6: ovs-br0:
<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
group default qlen 1000
link/ether 00:0c:29:1b:86:76 brd ff:ff:ff:ff:ff:ff
inet 192.168.43.105/24 brd 192.168.43.255 scope global ovs-br0
valid_lft forever preferred_lft forever
inet6 2405:204:3126:fccb:20c:29ff:fe1b:8676/64 scope global mngtmpaddr
dynamic
valid_lft 3388sec preferred_lft 3388sec
inet6 fe80::20c:29ff:fe1b:8676/64 scope link
valid_lft forever preferred_lft forever
[root@linuxcloudy ~]#
|
[root@linuxcloudy ~]# ping -c4
192.168.43.1
PING 192.168.43.1 (192.168.43.1)
56(84) bytes of data.
64 bytes from 192.168.43.1: icmp_seq=1
ttl=64 time=3.39 ms
64 bytes from 192.168.43.1: icmp_seq=2
ttl=64 time=2.66 ms
64 bytes from 192.168.43.1: icmp_seq=3
ttl=64 time=2.52 ms
64 bytes from 192.168.43.1: icmp_seq=4
ttl=64 time=2.71 ms
--- 192.168.43.1 ping statistics ---
4 packets transmitted, 4 received, 0%
packet loss, time 3007ms
rtt min/avg/max/mdev =
2.525/2.824/3.395/0.338 ms
[root@linuxcloudy ~]#
|
It’s done!!! OVS
vSwitch with NIC bonding is configured.
No comments:
Post a Comment