← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1365756] [NEW] DHCPv6 stateful doesn't assign IP to ports created before it

 

Public bug reported:

When we create port in network without subnets(*) and then create IPv4
subnet with DHCP enabled, the port gets IP automatically. Unlike so with
IPv6 subnets. When we create subnet with DHCPv6 stateful the port
doesn't get anything from DHCP server automatically, only after explicit
port-update. It's inconsistence.

With IPv4:
$ neutron net-create netto
$ neutron port-create netto
$ neutron subnet-create  --ip-version=4 netto "192.168.111.0/24"
$ neutron port-list | grep 9856ecc4-9fc0-495c-81d1-686502a3ec83 # Port ID

| cb1f0dad-d393-49fc-a3ed-098a7e1d3692 |      | fa:16:3e:79:04:d6 |
{"subnet_id": "9856ecc4-9fc0-495c-81d1-686502a3ec83", "ip_address":
"192.168.111.2"} |

With IPv6:

$ neutron net-create netto6
Created a new network:
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | True                                 |
| id                        | b3858d5e-4665-422a-8511-6dd79f54437f |
| name                      | netto6                               |
| provider:network_type     | vxlan                                |
| provider:physical_network |                                      |
| provider:segmentation_id  | 1005                                 |
| router:external           | False                                |
| shared                    | False                                |
| status                    | ACTIVE                               |
| subnets                   |                                      |
| tenant_id                 | b1be3cf4e956459cad6b3f6541bbbad8     |
+---------------------------+--------------------------------------+

$ neutron port-create netto6
Created a new port:
+-----------------------+--------------------------------------+
| Field                 | Value                                |
+-----------------------+--------------------------------------+
| admin_state_up        | True                                 |
| allowed_address_pairs |                                      |
| binding:host_id       |                                      |
| binding:profile       | {}                                   |
| binding:vif_details   | {}                                   |
| binding:vif_type      | unbound                              |
| binding:vnic_type     | normal                               |
| device_id             |                                      |
| device_owner          |                                      |
| fixed_ips             |                                      |
| id                    | bd12d32c-66fc-4947-b266-c4d565454174 |
| mac_address           | fa:16:3e:a2:d8:14                    |
| name                  |                                      |
| network_id            | b3858d5e-4665-422a-8511-6dd79f54437f |
| security_groups       | b2fdab5e-1aa1-49bd-9717-72b41b8d109e |
| status                | DOWN                                 |
| tenant_id             | b1be3cf4e956459cad6b3f6541bbbad8     |
+-----------------------+--------------------------------------+

$ neutron subnet-create --ipv6-ra-mode=dhcpv6-stateful --ipv6-address-mode=dhcpv6-stateful --ip-version=6 netto6 "2002::/64"
Created a new subnet:
+-------------------+----------------------------------------------------------+
| Field             | Value                                                    |
+-------------------+----------------------------------------------------------+
| allocation_pools  | {"start": "2002::2", "end": "2002::ffff:ffff:ffff:fffe"} |
| cidr              | 2002::/64                                                |
| dns_nameservers   |                                                          |
| enable_dhcp       | True                                                     |
| gateway_ip        | 2002::1                                                  |
| host_routes       |                                                          |
| id                | 66e3e3c6-d561-494a-aec7-4fee272cf71d                     |
| ip_version        | 6                                                        |
| ipv6_address_mode | dhcpv6-stateful                                          |
| ipv6_ra_mode      | dhcpv6-stateful                                          |
| name              |                                                          |
| network_id        | b3858d5e-4665-422a-8511-6dd79f54437f                     |
| tenant_id         | b1be3cf4e956459cad6b3f6541bbbad8                         |
+-------------------+----------------------------------------------------------+

$ neutron port-list | grep bd12d32c-66fc-4947-b266-c4d565454174 # Port
ID

| bd12d32c-66fc-4947-b266-c4d565454174 |      | fa:16:3e:a2:d8:14 |

The same thing also with :
1) --ipv6-ra-mode=dhcpv6-stateless --ipv6-address-mode=dhcpv6-stateless
2)  --ipv6-address-mode=dhcpv6-stateful only
3) --ipv6-address-mode=dhcpv6-stateless only

-------
(*) why to do it? is it real user story?

** Affects: neutron
     Importance: Undecided
         Status: New


** Tags: ipv6

** Description changed:

  When we create port in network without subnets(*) and then create IPv4
  subnet with DHCP enabled, the port gets IP automatically. Unlike so with
  IPv6 subnets. When we create subnet with DHCPv6 stateful the port
  doesn't get anything from DHCP server automatically, only after explicit
  port-update. It's inconsistence.
  
  With IPv4:
-  $ neutron net-create netto
+ $ neutron net-create netto
+ $ neutron port-create netto
+ $ neutron subnet-create  --ip-version=4 netto "192.168.111.0/24"
+ $ neutron port-list | grep 9856ecc4-9fc0-495c-81d1-686502a3ec83 # Port ID
+ 
+ | cb1f0dad-d393-49fc-a3ed-098a7e1d3692 |      | fa:16:3e:79:04:d6 |
+ {"subnet_id": "9856ecc4-9fc0-495c-81d1-686502a3ec83", "ip_address":
+ "192.168.111.2"} |
+ 
+ With IPv6:
+ 
+ $ neutron net-create netto6
  Created a new network:
  +---------------------------+--------------------------------------+
  | Field                     | Value                                |
  +---------------------------+--------------------------------------+
  | admin_state_up            | True                                 |
  | id                        | b3858d5e-4665-422a-8511-6dd79f54437f |
  | name                      | netto6                               |
  | provider:network_type     | vxlan                                |
  | provider:physical_network |                                      |
  | provider:segmentation_id  | 1005                                 |
  | router:external           | False                                |
  | shared                    | False                                |
  | status                    | ACTIVE                               |
  | subnets                   |                                      |
  | tenant_id                 | b1be3cf4e956459cad6b3f6541bbbad8     |
  +---------------------------+--------------------------------------+
  
- 
-  $ neutron port-create netto
+ $ neutron port-create netto6
  Created a new port:
  +-----------------------+--------------------------------------+
  | Field                 | Value                                |
  +-----------------------+--------------------------------------+
  | admin_state_up        | True                                 |
  | allowed_address_pairs |                                      |
  | binding:host_id       |                                      |
  | binding:profile       | {}                                   |
  | binding:vif_details   | {}                                   |
  | binding:vif_type      | unbound                              |
  | binding:vnic_type     | normal                               |
  | device_id             |                                      |
  | device_owner          |                                      |
  | fixed_ips             |                                      |
  | id                    | bd12d32c-66fc-4947-b266-c4d565454174 |
  | mac_address           | fa:16:3e:a2:d8:14                    |
  | name                  |                                      |
  | network_id            | b3858d5e-4665-422a-8511-6dd79f54437f |
  | security_groups       | b2fdab5e-1aa1-49bd-9717-72b41b8d109e |
  | status                | DOWN                                 |
  | tenant_id             | b1be3cf4e956459cad6b3f6541bbbad8     |
  +-----------------------+--------------------------------------+
  
-  $ neutron subnet-create  --ip-version=4 netto "192.168.111.0/24"
+ $ neutron subnet-create --ipv6-ra-mode=dhcpv6-stateful --ipv6-address-mode=dhcpv6-stateful --ip-version=6 netto6 "2002::/64"
  Created a new subnet:
  +-------------------+----------------------------------------------------------+
  | Field             | Value                                                    |
  +-------------------+----------------------------------------------------------+
  | allocation_pools  | {"start": "2002::2", "end": "2002::ffff:ffff:ffff:fffe"} |
  | cidr              | 2002::/64                                                |
  | dns_nameservers   |                                                          |
  | enable_dhcp       | True                                                     |
  | gateway_ip        | 2002::1                                                  |
  | host_routes       |                                                          |
  | id                | 66e3e3c6-d561-494a-aec7-4fee272cf71d                     |
  | ip_version        | 6                                                        |
  | ipv6_address_mode | dhcpv6-stateful                                          |
  | ipv6_ra_mode      | dhcpv6-stateful                                          |
  | name              |                                                          |
  | network_id        | b3858d5e-4665-422a-8511-6dd79f54437f                     |
  | tenant_id         | b1be3cf4e956459cad6b3f6541bbbad8                         |
  +-------------------+----------------------------------------------------------+
  
-  $ neutron port-list | grep 9856ecc4-9fc0-495c-81d1-686502a3ec83 # Port
- ID
  
- | cb1f0dad-d393-49fc-a3ed-098a7e1d3692 |      | fa:16:3e:79:04:d6 |
- {"subnet_id": "9856ecc4-9fc0-495c-81d1-686502a3ec83", "ip_address":
- "192.168.111.2"} |
- 
- With IPv6:
- $ neutron net-create netto6
- $ neutron port-create netto6
- $ neutron subnet-create --ipv6-ra-mode=dhcpv6-stateful --ipv6-address-mode=dhcpv6-stateful --ip-version=6 netto6 "2002::/64"
  $ neutron port-list | grep bd12d32c-66fc-4947-b266-c4d565454174 # Port ID
  
  | bd12d32c-66fc-4947-b266-c4d565454174 |      | fa:16:3e:a2:d8:14 |
  
  The same thing also with :
  1) --ipv6-ra-mode=dhcpv6-stateless --ipv6-address-mode=dhcpv6-stateless
  2)  --ipv6-address-mode=dhcpv6-stateful only
  3) --ipv6-address-mode=dhcpv6-stateless only

** Description changed:

  When we create port in network without subnets(*) and then create IPv4
  subnet with DHCP enabled, the port gets IP automatically. Unlike so with
  IPv6 subnets. When we create subnet with DHCPv6 stateful the port
  doesn't get anything from DHCP server automatically, only after explicit
  port-update. It's inconsistence.
  
  With IPv4:
  $ neutron net-create netto
  $ neutron port-create netto
  $ neutron subnet-create  --ip-version=4 netto "192.168.111.0/24"
  $ neutron port-list | grep 9856ecc4-9fc0-495c-81d1-686502a3ec83 # Port ID
  
  | cb1f0dad-d393-49fc-a3ed-098a7e1d3692 |      | fa:16:3e:79:04:d6 |
  {"subnet_id": "9856ecc4-9fc0-495c-81d1-686502a3ec83", "ip_address":
  "192.168.111.2"} |
  
  With IPv6:
  
  $ neutron net-create netto6
  Created a new network:
  +---------------------------+--------------------------------------+
  | Field                     | Value                                |
  +---------------------------+--------------------------------------+
  | admin_state_up            | True                                 |
  | id                        | b3858d5e-4665-422a-8511-6dd79f54437f |
  | name                      | netto6                               |
  | provider:network_type     | vxlan                                |
  | provider:physical_network |                                      |
  | provider:segmentation_id  | 1005                                 |
  | router:external           | False                                |
  | shared                    | False                                |
  | status                    | ACTIVE                               |
  | subnets                   |                                      |
  | tenant_id                 | b1be3cf4e956459cad6b3f6541bbbad8     |
  +---------------------------+--------------------------------------+
  
  $ neutron port-create netto6
  Created a new port:
  +-----------------------+--------------------------------------+
  | Field                 | Value                                |
  +-----------------------+--------------------------------------+
  | admin_state_up        | True                                 |
  | allowed_address_pairs |                                      |
  | binding:host_id       |                                      |
  | binding:profile       | {}                                   |
  | binding:vif_details   | {}                                   |
  | binding:vif_type      | unbound                              |
  | binding:vnic_type     | normal                               |
  | device_id             |                                      |
  | device_owner          |                                      |
  | fixed_ips             |                                      |
  | id                    | bd12d32c-66fc-4947-b266-c4d565454174 |
  | mac_address           | fa:16:3e:a2:d8:14                    |
  | name                  |                                      |
  | network_id            | b3858d5e-4665-422a-8511-6dd79f54437f |
  | security_groups       | b2fdab5e-1aa1-49bd-9717-72b41b8d109e |
  | status                | DOWN                                 |
  | tenant_id             | b1be3cf4e956459cad6b3f6541bbbad8     |
  +-----------------------+--------------------------------------+
  
  $ neutron subnet-create --ipv6-ra-mode=dhcpv6-stateful --ipv6-address-mode=dhcpv6-stateful --ip-version=6 netto6 "2002::/64"
  Created a new subnet:
  +-------------------+----------------------------------------------------------+
  | Field             | Value                                                    |
  +-------------------+----------------------------------------------------------+
  | allocation_pools  | {"start": "2002::2", "end": "2002::ffff:ffff:ffff:fffe"} |
  | cidr              | 2002::/64                                                |
  | dns_nameservers   |                                                          |
  | enable_dhcp       | True                                                     |
  | gateway_ip        | 2002::1                                                  |
  | host_routes       |                                                          |
  | id                | 66e3e3c6-d561-494a-aec7-4fee272cf71d                     |
  | ip_version        | 6                                                        |
  | ipv6_address_mode | dhcpv6-stateful                                          |
  | ipv6_ra_mode      | dhcpv6-stateful                                          |
  | name              |                                                          |
  | network_id        | b3858d5e-4665-422a-8511-6dd79f54437f                     |
  | tenant_id         | b1be3cf4e956459cad6b3f6541bbbad8                         |
  +-------------------+----------------------------------------------------------+
  
- 
- $ neutron port-list | grep bd12d32c-66fc-4947-b266-c4d565454174 # Port ID
+ $ neutron port-list | grep bd12d32c-66fc-4947-b266-c4d565454174 # Port
+ ID
  
  | bd12d32c-66fc-4947-b266-c4d565454174 |      | fa:16:3e:a2:d8:14 |
  
  The same thing also with :
  1) --ipv6-ra-mode=dhcpv6-stateless --ipv6-address-mode=dhcpv6-stateless
  2)  --ipv6-address-mode=dhcpv6-stateful only
  3) --ipv6-address-mode=dhcpv6-stateless only
+ 
+ -------
+ (*) why to do it? is it real user story?

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1365756

Title:
  DHCPv6 stateful doesn't assign IP to ports created before it

Status in OpenStack Neutron (virtual network service):
  New

Bug description:
  When we create port in network without subnets(*) and then create IPv4
  subnet with DHCP enabled, the port gets IP automatically. Unlike so
  with IPv6 subnets. When we create subnet with DHCPv6 stateful the port
  doesn't get anything from DHCP server automatically, only after
  explicit port-update. It's inconsistence.

  With IPv4:
  $ neutron net-create netto
  $ neutron port-create netto
  $ neutron subnet-create  --ip-version=4 netto "192.168.111.0/24"
  $ neutron port-list | grep 9856ecc4-9fc0-495c-81d1-686502a3ec83 # Port ID

  | cb1f0dad-d393-49fc-a3ed-098a7e1d3692 |      | fa:16:3e:79:04:d6 |
  {"subnet_id": "9856ecc4-9fc0-495c-81d1-686502a3ec83", "ip_address":
  "192.168.111.2"} |

  With IPv6:

  $ neutron net-create netto6
  Created a new network:
  +---------------------------+--------------------------------------+
  | Field                     | Value                                |
  +---------------------------+--------------------------------------+
  | admin_state_up            | True                                 |
  | id                        | b3858d5e-4665-422a-8511-6dd79f54437f |
  | name                      | netto6                               |
  | provider:network_type     | vxlan                                |
  | provider:physical_network |                                      |
  | provider:segmentation_id  | 1005                                 |
  | router:external           | False                                |
  | shared                    | False                                |
  | status                    | ACTIVE                               |
  | subnets                   |                                      |
  | tenant_id                 | b1be3cf4e956459cad6b3f6541bbbad8     |
  +---------------------------+--------------------------------------+

  $ neutron port-create netto6
  Created a new port:
  +-----------------------+--------------------------------------+
  | Field                 | Value                                |
  +-----------------------+--------------------------------------+
  | admin_state_up        | True                                 |
  | allowed_address_pairs |                                      |
  | binding:host_id       |                                      |
  | binding:profile       | {}                                   |
  | binding:vif_details   | {}                                   |
  | binding:vif_type      | unbound                              |
  | binding:vnic_type     | normal                               |
  | device_id             |                                      |
  | device_owner          |                                      |
  | fixed_ips             |                                      |
  | id                    | bd12d32c-66fc-4947-b266-c4d565454174 |
  | mac_address           | fa:16:3e:a2:d8:14                    |
  | name                  |                                      |
  | network_id            | b3858d5e-4665-422a-8511-6dd79f54437f |
  | security_groups       | b2fdab5e-1aa1-49bd-9717-72b41b8d109e |
  | status                | DOWN                                 |
  | tenant_id             | b1be3cf4e956459cad6b3f6541bbbad8     |
  +-----------------------+--------------------------------------+

  $ neutron subnet-create --ipv6-ra-mode=dhcpv6-stateful --ipv6-address-mode=dhcpv6-stateful --ip-version=6 netto6 "2002::/64"
  Created a new subnet:
  +-------------------+----------------------------------------------------------+
  | Field             | Value                                                    |
  +-------------------+----------------------------------------------------------+
  | allocation_pools  | {"start": "2002::2", "end": "2002::ffff:ffff:ffff:fffe"} |
  | cidr              | 2002::/64                                                |
  | dns_nameservers   |                                                          |
  | enable_dhcp       | True                                                     |
  | gateway_ip        | 2002::1                                                  |
  | host_routes       |                                                          |
  | id                | 66e3e3c6-d561-494a-aec7-4fee272cf71d                     |
  | ip_version        | 6                                                        |
  | ipv6_address_mode | dhcpv6-stateful                                          |
  | ipv6_ra_mode      | dhcpv6-stateful                                          |
  | name              |                                                          |
  | network_id        | b3858d5e-4665-422a-8511-6dd79f54437f                     |
  | tenant_id         | b1be3cf4e956459cad6b3f6541bbbad8                         |
  +-------------------+----------------------------------------------------------+

  $ neutron port-list | grep bd12d32c-66fc-4947-b266-c4d565454174 # Port
  ID

  | bd12d32c-66fc-4947-b266-c4d565454174 |      | fa:16:3e:a2:d8:14 |

  The same thing also with :
  1) --ipv6-ra-mode=dhcpv6-stateless --ipv6-address-mode=dhcpv6-stateless
  2)  --ipv6-address-mode=dhcpv6-stateful only
  3) --ipv6-address-mode=dhcpv6-stateless only

  -------
  (*) why to do it? is it real user story?

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1365756/+subscriptions


Follow ups

References