[docs] L3 router support ndp proxy
Change-Id: I2b8642b6830d3e1e1ef86c779c55e9ac1d0f7568 Partial-Bug: #1877301
This commit is contained in:
parent
430abde13e
commit
ad3171c538
@ -28,3 +28,6 @@ haproxy
|
|||||||
keepalived
|
keepalived
|
||||||
|
|
||||||
iproute-tc [platform:rpm]
|
iproute-tc [platform:rpm]
|
||||||
|
|
||||||
|
# Provide ndsend command, used to send IPv6 Neighbor Discovery packets
|
||||||
|
vzctl [platform:dpkg]
|
||||||
|
@ -823,6 +823,8 @@ assist with verifying operation of the BGP speaker.
|
|||||||
| 87cf2970-4970-462e-939e-00e802281dfa | | fa:16:3e:6b:18:e0 | ip_address='203.0.113.14', subnet_id='8ed65d41-2b2a-4f3a-9f92-45adb266e01a' |
|
| 87cf2970-4970-462e-939e-00e802281dfa | | fa:16:3e:6b:18:e0 | ip_address='203.0.113.14', subnet_id='8ed65d41-2b2a-4f3a-9f92-45adb266e01a' |
|
||||||
+--------------------------------------+------+-------------------+--------------------------------------------------------------------------------------------------------+
|
+--------------------------------------+------+-------------------+--------------------------------------------------------------------------------------------------------+
|
||||||
|
|
||||||
|
.. _config-bgp-dynamic-routing-for-ipv6:
|
||||||
|
|
||||||
IPv6
|
IPv6
|
||||||
~~~~
|
~~~~
|
||||||
|
|
||||||
|
@ -485,6 +485,8 @@ endpoints can be accessed via an IPv6 network. At this time, Open vSwitch
|
|||||||
(OVS) tunnel types - STT, VXLAN, GRE, support both IPv4 and IPv6 endpoints.
|
(OVS) tunnel types - STT, VXLAN, GRE, support both IPv4 and IPv6 endpoints.
|
||||||
|
|
||||||
|
|
||||||
|
.. _prefix-delegation:
|
||||||
|
|
||||||
Prefix delegation
|
Prefix delegation
|
||||||
~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
320
doc/source/admin/config-ndp-proxy.rst
Normal file
320
doc/source/admin/config-ndp-proxy.rst
Normal file
@ -0,0 +1,320 @@
|
|||||||
|
.. _config-ndp-proxy:
|
||||||
|
|
||||||
|
=========
|
||||||
|
NDP proxy
|
||||||
|
=========
|
||||||
|
|
||||||
|
If NDP proxy is set on a router, it is used to publish IPv6 addresses to
|
||||||
|
external routers. Its purpose is similar to floating IP, but it forwards the
|
||||||
|
traffic directly by using route rules and has no NAT action. Read the related
|
||||||
|
`specification <https://specs.openstack.org/openstack/neutron-specs/specs/xena/l3-router-support-ndp-proxy.html>`_
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
|
||||||
|
Configuration of NDP proxy
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
To configure NDP proxy, take the following steps:
|
||||||
|
|
||||||
|
* On the controller nodes:
|
||||||
|
|
||||||
|
Add the ``ndp_proxy`` service to the ``service_plugins`` setting in
|
||||||
|
``/etc/neutron/neutron.conf``. For example:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
service_plugins = router,ndp_proxy
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
The ``router`` service plug-in has to be configured along with the
|
||||||
|
``ndp_proxy`` service plug-in
|
||||||
|
|
||||||
|
* On the network nodes or the compute nodes (for the dvr mode router):
|
||||||
|
|
||||||
|
Set the ``extensions`` option in the ``[agent]`` section of
|
||||||
|
``/etc/neutron/l3_agent.ini`` to include ``ndp_proxy``. This has to be
|
||||||
|
done in each network and compute node where the L3 agent is running. For
|
||||||
|
example:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
extensions = ndp_proxy
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
After updating the options in the configuration files, the neutron-server
|
||||||
|
and every neutron-l3-agent need to be restarted for the new values to take
|
||||||
|
effect.
|
||||||
|
|
||||||
|
After configuring ndp proxy, the ``ndp-proxy`` extension alias will be
|
||||||
|
included in the output of the following command:
|
||||||
|
|
||||||
|
For api extension:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack extension list --network
|
||||||
|
|
||||||
|
For agent extension:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack network agent show <l3-agent-id>
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
We Introduced a new command ``ndsend`` for NDP proxy feature, the command can
|
||||||
|
send Neighbor Advertisement about IPv6 to upstream router. With this command,
|
||||||
|
we can make the upstream router rapidly perceive the change of internal IPv6
|
||||||
|
address (such as, port migrated to other node). Read the
|
||||||
|
`manual page <http://manpages.ubuntu.com/manpages/focal/man8/ndsend.8.html>`_
|
||||||
|
for more details about this command.
|
||||||
|
|
||||||
|
Currently, you need install this command manually in every l3 agent node. For
|
||||||
|
ubuntu, the command provided by ``vzctl`` pkg, the install command:
|
||||||
|
``sudo apt install vzctl``.
|
||||||
|
|
||||||
|
* On the upstream router (The datacenter's physical router):
|
||||||
|
|
||||||
|
Generally, the admin operator should plan one or more IPv6 subnetpools to use
|
||||||
|
when NDP proxy is enabled, so that all internal subnets can be allocated from
|
||||||
|
a single, integrated subnetpool. In order to make NDP proxy work correctly,
|
||||||
|
the admin operator needs to set direct routes for these subnetpools.
|
||||||
|
|
||||||
|
Such as, we have a IPv6 subnetpool, it's CIDR is 2001::/96. The direct route
|
||||||
|
like below should be set:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
2001::/96 dev <ext-gw>
|
||||||
|
|
||||||
|
The ``ext-gw`` is the gateway interface of the cloud's external network.
|
||||||
|
|
||||||
|
|
||||||
|
User workflow
|
||||||
|
~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Assume the admin operator already prepared an IPv6 subnetpool:
|
||||||
|
``test-subnetpool``, its CIDR is 2001::/96.
|
||||||
|
|
||||||
|
At a high level, the basic steps to publish an IPv6 address to external
|
||||||
|
network (such as: public network) are the following:
|
||||||
|
|
||||||
|
1、Create a router and enable its external gateway
|
||||||
|
2、Set the router's ``enable_ndp_proxy`` parameter to True
|
||||||
|
3、Create a internal network and create a IPv6 subnet on it
|
||||||
|
4、Add the subnet to the router
|
||||||
|
5、Launch an instance on the network
|
||||||
|
6、Create a ndp proxy for the instance's port
|
||||||
|
|
||||||
|
* Create a router:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack router create test-router
|
||||||
|
+-------------------------+--------------------------------------+
|
||||||
|
| Field | Value |
|
||||||
|
+-------------------------+--------------------------------------+
|
||||||
|
| admin_state_up | UP |
|
||||||
|
| availability_zone_hints | |
|
||||||
|
| availability_zones | |
|
||||||
|
| created_at | 2022-01-01T06:50:44Z |
|
||||||
|
| description | |
|
||||||
|
| distributed | False |
|
||||||
|
| enable_ndp_proxy | False |
|
||||||
|
| external_gateway_info | null |
|
||||||
|
| flavor_id | None |
|
||||||
|
| ha | False |
|
||||||
|
| id | 3aab8554-e5c4-4262-ab95-b92857c641de |
|
||||||
|
| name | test-router |
|
||||||
|
| project_id | bcb0c7a5338b4a46959e47971c58f0f1 |
|
||||||
|
| revision_number | 1 |
|
||||||
|
| routes | |
|
||||||
|
| status | ACTIVE |
|
||||||
|
| tags | |
|
||||||
|
| updated_at | 2022-01-01T06:50:44Z |
|
||||||
|
+-------------------------+--------------------------------------+
|
||||||
|
|
||||||
|
* Set external gateway for the router:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack router set test-router --external-gateway public
|
||||||
|
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
If the external network has no IPv6 subnet and the ``ipv6_gateway`` is
|
||||||
|
configured on the ``neutron-l3-agent``, you may want to set
|
||||||
|
``use_lla_address`` to True at ``/etc/neutron/neutron.conf``, otherwise
|
||||||
|
The following command will raise a 403 error.
|
||||||
|
|
||||||
|
* Enable ndp proxy support on the router:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack router set test-router --enable-ndp-proxy
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
|
||||||
|
If you are using another method (such as:
|
||||||
|
:ref:`BGP <config-bgp-dynamic-routing-for-ipv6>`,
|
||||||
|
:ref:`prefix-delegation` etc.) to publish the internal IPv6 address, the
|
||||||
|
command will break dataplane traffic.
|
||||||
|
|
||||||
|
* Create internal network and IPv6 subnet and add the subnet to above router:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack network create int-net
|
||||||
|
+---------------------------+--------------------------------------+
|
||||||
|
| Field | Value |
|
||||||
|
+---------------------------+--------------------------------------+
|
||||||
|
| admin_state_up | UP |
|
||||||
|
| availability_zone_hints | |
|
||||||
|
| availability_zones | |
|
||||||
|
| created_at | 2022-01-01T07:11:08Z |
|
||||||
|
| description | |
|
||||||
|
| dns_domain | None |
|
||||||
|
| id | e527b38e-9e2a-439b-adf8-4ee1aa4f03b1 |
|
||||||
|
| ipv4_address_scope | None |
|
||||||
|
| ipv6_address_scope | None |
|
||||||
|
| is_default | False |
|
||||||
|
| is_vlan_transparent | None |
|
||||||
|
| mtu | 1450 |
|
||||||
|
| name | int-net |
|
||||||
|
| port_security_enabled | True |
|
||||||
|
| project_id | bcb0c7a5338b4a46959e47971c58f0f1 |
|
||||||
|
| provider:network_type | vxlan |
|
||||||
|
| provider:physical_network | None |
|
||||||
|
| provider:segmentation_id | 575 |
|
||||||
|
| qos_policy_id | None |
|
||||||
|
| revision_number | 1 |
|
||||||
|
| router:external | Internal |
|
||||||
|
| segments | None |
|
||||||
|
| shared | False |
|
||||||
|
| status | ACTIVE |
|
||||||
|
| subnets | |
|
||||||
|
| tags | |
|
||||||
|
| updated_at | 2022-01-01T07:11:08Z |
|
||||||
|
+---------------------------+--------------------------------------+
|
||||||
|
$ openstack subnet create --network int-net --subnet-pool test-subnetpool \
|
||||||
|
--prefix-length 112 --ip-version 6 \
|
||||||
|
--ipv6-ra-mode dhcpv6-stateful \
|
||||||
|
--ipv6-address-mode dhcpv6-stateful int-sub
|
||||||
|
+----------------------+--------------------------------------+
|
||||||
|
| Field | Value |
|
||||||
|
+----------------------+--------------------------------------+
|
||||||
|
| allocation_pools | 2001::2-2001::ffff |
|
||||||
|
| cidr | 2001::/112 |
|
||||||
|
| created_at | 2022-01-02T08:20:26Z |
|
||||||
|
| description | |
|
||||||
|
| dns_nameservers | |
|
||||||
|
| dns_publish_fixed_ip | None |
|
||||||
|
| enable_dhcp | True |
|
||||||
|
| gateway_ip | 2001::1 |
|
||||||
|
| host_routes | |
|
||||||
|
| id | 9bcf194c-d44f-4e6f-90da-98510ddef283 |
|
||||||
|
| ip_version | 6 |
|
||||||
|
| ipv6_address_mode | dhcpv6-stateful |
|
||||||
|
| ipv6_ra_mode | dhcpv6-stateful |
|
||||||
|
| name | int-sub |
|
||||||
|
| network_id | e527b38e-9e2a-439b-adf8-4ee1aa4f03b1 |
|
||||||
|
| project_id | bcb0c7a5338b4a46959e47971c58f0f1 |
|
||||||
|
| revision_number | 0 |
|
||||||
|
| segment_id | None |
|
||||||
|
| service_types | |
|
||||||
|
| subnetpool_id | 73c5311c-6750-43f5-9a69-b50c1c5694fd |
|
||||||
|
| tags | |
|
||||||
|
| updated_at | 2022-01-02T08:20:26Z |
|
||||||
|
+----------------------+--------------------------------------+
|
||||||
|
$ openstack router add subnet test-router int-sub
|
||||||
|
|
||||||
|
* Launch an instance:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack server create --flavor m1.tiny --image cirros-0.5.2-x86_64-disk --network int-net test-server
|
||||||
|
+-------------------------------------+-----------------------------------------------------------------+
|
||||||
|
| Field | Value |
|
||||||
|
+-------------------------------------+-----------------------------------------------------------------+
|
||||||
|
| OS-DCF:diskConfig | MANUAL |
|
||||||
|
| OS-EXT-AZ:availability_zone | |
|
||||||
|
| OS-EXT-SRV-ATTR:host | None |
|
||||||
|
| OS-EXT-SRV-ATTR:hypervisor_hostname | None |
|
||||||
|
| OS-EXT-SRV-ATTR:instance_name | |
|
||||||
|
| OS-EXT-STS:power_state | NOSTATE |
|
||||||
|
| OS-EXT-STS:task_state | scheduling |
|
||||||
|
| OS-EXT-STS:vm_state | building |
|
||||||
|
| OS-SRV-USG:launched_at | None |
|
||||||
|
| OS-SRV-USG:terminated_at | None |
|
||||||
|
| accessIPv4 | |
|
||||||
|
| accessIPv6 | |
|
||||||
|
| addresses | |
|
||||||
|
| adminPass | 97UvRLgdFozR |
|
||||||
|
| config_drive | |
|
||||||
|
| created | 2022-01-02T08:22:35Z |
|
||||||
|
| flavor | m1.tiny (1) |
|
||||||
|
| hostId | |
|
||||||
|
| id | 189a104c-36cd-479a-8702-8111eb34fdb6 |
|
||||||
|
| image | cirros-0.5.2-x86_64-disk (2b2d2975-7ffc-463b-8c0e-993122f38b77) |
|
||||||
|
| key_name | None |
|
||||||
|
| name | test-server |
|
||||||
|
| progress | 0 |
|
||||||
|
| project_id | bcb0c7a5338b4a46959e47971c58f0f1 |
|
||||||
|
| properties | |
|
||||||
|
| security_groups | name='default' |
|
||||||
|
| status | BUILD |
|
||||||
|
| updated | 2022-01-02T08:22:34Z |
|
||||||
|
| user_id | 27e0947bb4fe47e4981da31d4a18ddf7 |
|
||||||
|
| volumes_attached | |
|
||||||
|
+-------------------------------------+-----------------------------------------------------------------+
|
||||||
|
|
||||||
|
* Create ndp proxy for the instance's port:
|
||||||
|
|
||||||
|
Query the port of the instance
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack port list --server test-server
|
||||||
|
+--------------------------------------+------+-------------------+--------------------------------------------------------------------------+--------+
|
||||||
|
| ID | Name | MAC Address | Fixed IP Addresses | Status |
|
||||||
|
+--------------------------------------+------+-------------------+--------------------------------------------------------------------------+--------+
|
||||||
|
| bdd64aa0-437a-4db6-bbca-99869426c908 | | fa:16:3e:ac:15:b8 | ip_address='2001::284', subnet_id='9bcf194c-d44f-4e6f-90da-98510ddef283' | ACTIVE |
|
||||||
|
+--------------------------------------+------+-------------------+--------------------------------------------------------------------------+--------+
|
||||||
|
|
||||||
|
Create ndp proxy for the port
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack network ndp proxy create --router test-router --port bdd64aa0-437a-4db6-bbca-99869426c908 test-np
|
||||||
|
+-----------------+--------------------------------------+
|
||||||
|
| Field | Value |
|
||||||
|
+-----------------+--------------------------------------+
|
||||||
|
| created_at | 2022-01-02T08:25:31Z |
|
||||||
|
| description | |
|
||||||
|
| id | 73889fee-e322-443f-941e-142e4fc5f898 |
|
||||||
|
| ip_address | 2001::284 |
|
||||||
|
| name | test-np |
|
||||||
|
| port_id | bdd64aa0-437a-4db6-bbca-99869426c908 |
|
||||||
|
| project_id | bcb0c7a5338b4a46959e47971c58f0f1 |
|
||||||
|
| revision_number | 0 |
|
||||||
|
| router_id | 3aab8554-e5c4-4262-ab95-b92857c641de |
|
||||||
|
| updated_at | 2022-01-02T08:25:31Z |
|
||||||
|
+-----------------+--------------------------------------+
|
||||||
|
|
||||||
|
* Then ping the port's address from upstream router
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ ping 2001::284
|
||||||
|
PING 2001::284(2001::284) 56 data bytes
|
||||||
|
64 bytes from 2001::284: icmp_seq=1 ttl=64 time=0.365 ms
|
||||||
|
64 bytes from 2001::284: icmp_seq=2 ttl=64 time=0.385 ms
|
||||||
|
|
||||||
|
|
||||||
|
Known limitations
|
||||||
|
~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
* OVN backend is not supported
|
@ -24,6 +24,7 @@ Configuration
|
|||||||
config-logging
|
config-logging
|
||||||
config-macvtap
|
config-macvtap
|
||||||
config-mtu
|
config-mtu
|
||||||
|
config-ndp-proxy
|
||||||
config-network-segment-ranges
|
config-network-segment-ranges
|
||||||
config-ovs-dpdk
|
config-ovs-dpdk
|
||||||
config-ovs-offload
|
config-ovs-offload
|
||||||
|
6
releasenotes/notes/l3-ndp-proxy-397de144813f9396.yaml
Normal file
6
releasenotes/notes/l3-ndp-proxy-397de144813f9396.yaml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
Support for IPv6 NDP proxy has been added. Read the related
|
||||||
|
`specification <https://specs.openstack.org/openstack/neutron-specs/specs/xena/l3-router-support-ndp-proxy.html>`_
|
||||||
|
for more details.
|
Loading…
Reference in New Issue
Block a user