how to bring up network-interfaces and bridges in specific order at boot time

Currently, my setup is having many nodes, each having RHEL 7 installed, with each node having only one single interface. I am using ovs-bridge and a vlan-tagged interface within the host. I use vlan-tagged virtual-interfaces to process the vlan-tagged traffic. I have disabled NetworkManager.

Example of my network config:-

My /etc/sysconfig/network-scripts/ifcfg-eth0:-

BOOTPROTO="dhcp"
DEVICE="eth0"
HWADDR="80:34:53:23:12:45"
ONBOOT=yes
PEERDNS=no
DEFROUTE=no
PEERROUTES=no

My vlan-tagged interface /etc/sysconfig/network-scripts/ifcfg-eth0.200:-

DEVICE=eth0.200
DEVICETYPE=ovs
TYPE=OVSPort
OVS_BRIDGE=br100
ONBOOT=yes
BOOTPROTO=none
VLAN=yes
NOZEROCONF=yes

My openvswitch bridge /etc/sysconfig/network-scripts/ifcfg-br100 :-

ONBOOT=yes
IPADDR=100.100.100.20
NETMASK=255.255.255.0
GATEWAY=100.100.100.1
DEVICE=br100
DEVICETYPE=ovs
OVSBOOTPROTO=static
TYPE=OVSBridge

Now, here is the main problem:-

When I reboot the system, at the boot time, it tries to bring up br100, then eth0 and then eth0.200. Networking works fine only and only if the interfaces are brought up in order eth0, eth0.200 and br100 respectively.

Is there any way using which I can order the bringing up of interfaces at boot time? I am a bit hesitant to use scripts to restart the networks once the system is fully up as some services fail initially and I have to manually go and start them. I am unable to figure out how can I make bringup of eth0 before br100? Any pointers would be really helpful.

Thanks.


Your interfaces seems misconfiugred. Please take a look at here (I have quoted the example setup from the following link and edited it according to your setup): https://github.com/osrg/openvswitch/blob/master/rhel/README.RHEL

 Example
---------


Standalone bridge:

==> ifcfg-ovsbridge0 <==
DEVICE=br100
ONBOOT=yes
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=static
IPADDR=A.B.C.D
NETMASK=X.Y.Z.0
HOTPLUG=no

Enable DHCP on the bridge:
* Needs OVSBOOTPROTO instead of BOOTPROTO.
* All the interfaces that can reach the DHCP server
as a space separated list in OVSDHCPINTERFACES.

DEVICE=br100
ONBOOT=yes
DEVICETYPE=ovs
TYPE=OVSBridge
OVSBOOTPROTO="dhcp"
OVSDHCPINTERFACES="eth0"
HOTPLUG=no

Adding physical eth0 to br100 described above:

==> ifcfg-eth0 <==
DEVICE=eth0
ONBOOT=yes
DEVICETYPE=ovs
TYPE=OVSPort
OVS_BRIDGE=br100
BOOTPROTO=none
HOTPLUG=no


Tagged VLAN interface on top of br100:

==> ifcfg-eth0.200 <==
DEVICE=eth0.200
ONBOOT=yes
DEVICETYPE=ovs
TYPE=OVSIntPort
BOOTPROTO=static
IPADDR=A.B.C.D
NETMASK=X.Y.Z.0
OVS_BRIDGE=br100
OVS_OPTIONS="tag=200"
OVS_EXTRA="set Interface $DEVICE external-ids:iface-id=$(hostname -s)-$DEVICE-vif"
HOTPLUG=no