The router provides connectivity to project VM instances with wider networks. The router is shared by all the project networks. Because there is only a single router, project networks cannot use overlapping IP addresses.
The router performs bidirectional network address translation (NAT) on the interface that connects the router to the external network. Projects can have as many floating IPs (public IPs) as they need or as are allowed by the floating IP quota. These floating IPs are associated with the VM instances that require outside connectivity.
Creating the router requires configuring the Neutron L3 agent. This agent automatically creates one-to-one NAT mappings between addresses assigned to Nova instances and the floating IP addresses. The L3 agent also enables communication between private networks.
By default, routing between private networks of the same project is disabled. To change this behavior, set allow_forwarding_between_networks to True in the /etc/neutron/l3_agent.ini configuration file. Restart the neutron-l3-agent SMF service after setting the parameter.
This procedure shows how to create the router for the external network. Part of the steps requires editing a configuration file. Thus, using the terminal window for this procedure is more convenient than the Horizon dashboard.
You perform the following steps on the node where the Neutron service is installed. This document locates the service on the Controller node, based on the sample architecture described in previous chapters.
Before You Begin
Make sure that you have completed the configuration of Neutron as described in How to Install and Configure Neutron.
controller# svcadm enable -rs ipfilter
controller# ipadm set-prop -p forwarding=on ipv4
controller# export OS_USERNAME=neutron controller# export OS_PASSWORD=service-password controller# export OS_TENANT_NAME=service controller# export OS_AUTH_URL=http://$CONTROLLER_ADMIN_NODE:5000/v2.0
controller# neutron router-create router-name
The command displays the router name with a corresponding ID. Use this ID to update the configuration file in the next step.
controller# svcadm enable neutron-l3-agent
After you add the external network to the router, more information is added about the router.
controller# neutron router-show router-name
This example shows how to create the router for the external network.
controller# svcadm enable -rs ipfilter controller# ipadm set-prop -p forwarding=on ipv4 controller# export OS_USERNAME=neutron controller# export OS_PASSWORD=service-password controller# export OS_TENANT_NAME=service controller# export OS_AUTH_URL=http://$CONTROLLER_ADMIN_NODE:5000/v2.0 controller# neutron router-create ext-router Created a new router: +-----------------------+--------------------------------------+ | Field | Value | +-----------------------+--------------------------------------+ | admin_state_up | True | | external_gateway_info | | | id | f89b24ed-42dd-48b0-8f4b-fd41887a3370 | | name | ext-router | | status | ACTIVE | | tenant_id | 7d1caf0854b24becb28df5c5cabf72cc | +-----------------------+--------------------------------------+
At this point, you update router_id in the /etc/neutron/l3_agent.ini file.
router_id = f89b24ed-42dd-48b0-8f4b-fd41887a3370
Then, you enable the L3 agent service.
controller# svcadm enable neutron-l3-agent