OpenStack Virtual Networks with Routers

OpenStack Virtual Networks with Routers

OpenStack Virtual Networks with Routers

Virtual Routers are used to communicate to different virtual network. As soon as Tenant adds the subnet associated virtual network to router, doing this will creates a port on virtual router and is associated to IP address of the gateway for that subnet.

The Default Layer 3 plugin is used to implements the virtual router using Linus Namespace and these namespaces has its own network configuration, Routing table, Packet forwarding tables.

Configuring Routing Service:  

In order to provide the routing service, Neutron server must be configured with router service plugin. This can be achieved by following:

To do this, update the service plugin list in Neutron configuration file /etc/neutron/neutron.conf:

service_plugins = router

The router plugin implements virtual router instances using Linux namespaces. This is done using the L3 agent deployed on the network node. The router plugin and L3 agent communicate over the message bus. The L3 agent configuration file is present at /etc/neutron/l3_agent.ini:

The router plugin also provides external access using NAT and floating IP configuration. NAT and floating IP requires a configured network node with the external network bridge. Assuming the third NIC on the network node is used for providing external access, use the following OVS commands to create the external access bridge:

# ovs-vsctl add-br br-ex
# ovs-vsctl add-port br-ex eth3

How to connect the Networks using Virtual Router:

To create a virtual router use the router-create command as follows:

$ neutron router-create router1

Add the subnets to the router using the router-interface-add command:

$ neutron router-interface-add subnet1

Once the router interfaces are added, you can check the namespace created by the L3 agent on the network node. To do this, use the ip netns commands as follows:

$ ip netns list

24ae48094d68-4ff2-541c is the router id. Next you can check the routing table in the virtual router, as follows, by selecting the router namespace:

$ sudo ip netns exec qrouter-24ae48094d68-4ff2-541c route -n


    You are will be the first.


Please login here to comment.