[2.21.2-28] vRouter does not send ARP request without Gateway

Bug #1551105 reported by Daisuke Nakajima
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Juniper Openstack
Status tracked in Trunk
R2.20
Fix Committed
High
Naveen N
R2.21.x
Fix Committed
High
Naveen N
R2.22.x
Fix Committed
High
Naveen N
R3.0
Fix Committed
High
Naveen N
Trunk
Fix Committed
High
Naveen N

Bug Description

Live-migration and preferred VM selection are not working in case of without Gateway.
The cause of issue is that vRouter does not send ARP request to AAP address if there is no Gateway in Virtual-network.
vRouter needs to send ARP request from DNS-server-address.

Revision history for this message
Daisuke Nakajima (dnakajima) wrote :
  • aap_v1.pptx Edit (856.0 KiB, application/vnd.openxmlformats-officedocument.presentationml.presentation)
Revision history for this message
Daisuke Nakajima (dnakajima) wrote :
Download full text (4.7 KiB)

Virtual network does not have both 'default_gateway' and 'dns_server_address' in some cases like below;
When VM uses Global IP address without both default gateway and dhcp, customer aims to use all of Global IP address for VM. Because each Global IP address is not wealth. Hence, customer wants to set both 'default_gateway' and 'dns_server_address' as '0.0.0.0'.

However, if both attributes are set '0.0.0.0', there is no Interface of pkt0 for sending APR packet from vRouter. As a result, nova live-migration will not work well.
To avoid this issue, I'd like to propose two solutions below.
1) At least one Pkt0 interface will be allocated to each virtual-network even if both 'default_gateway' and 'dns_server_address' are set "0.0.0.0". If vrouter sends ARP request to VM, use "0.0.0.0" for Sender IP address in ARP packet.
 see DAD mode http://linux.die.net/man/8/arping

2) Allow dummy IP address to 'dns_server_address' such as '169.254.169.1' when Customer does not want to consume any IP address for Contrail internal use.
   As per my test, nova live-migration with AAP worked well when I configured '169.254.169.1' to 'default_gateway'. I think dummy address will work in 'dns_server_address' after fixing this bug.
This is the JSON which I tested.
{
    "virtual-network": {
        "display_name": "test1",
        "flood_unknown_unicast": false,
        "fq_name": [
            "default-domain",
            "admin",
            "test1"
        ],
        "href": "http://172.27.113.202:8082/virtual-network/02cf8444-8fdd-4451-91b5-967b7e6faf35",
        "id_perms": {
            "created": "2016-03-03T00:55:47.726224",
            "creator": null,
            "description": null,
            "enable": true,
            "last_modified": "2016-03-03T00:55:47.841816",
            "permissions": {
                "group": "admin",
                "group_access": 7,
                "other_access": 7,
                "owner": "admin",
                "owner_access": 7
            },
            "user_visible": true,
            "uuid": {
                "uuid_lslong": 10499463563430571829,
                "uuid_mslong": 202525938261247057
            }
        },
        "is_shared": false,
        "name": "test1",
        "network_ipam_refs": [
            {
                "attr": {
                    "ipam_subnets": [
                        {
                            "addr_from_start": true,
                            "allocation_pools": [],
                            "default_gateway": "169.254.169.1",
                            "dhcp_option_list": {
                                "dhcp_option": [
                                    {
                                        "dhcp_option_name": "6",
                                        "dhcp_option_value": "0.0.0.0"
                                    }
                                ]
                            },
                            "dns_server_address": "0.0.0.0",
                            "enable_dhcp": false,
                            "host_routes": {
                                "route": []
                            },
                 ...

Read more...

Revision history for this message
Daisuke Nakajima (dnakajima) wrote :

Please correct #2, the destined routing table to pkt0 is always there even dns_server_address is set '0.0.0.0'.
Can we set dns_server_address '0.0.0.0'? Because when VM uses Global IP address without both default gateway and dhcp, customer aims to use all of Global IP address for VM. Because each Global IP address is not wealth. Hence, customer wants to set both 'default_gateway' and 'dns_server_address' as '0.0.0.0'.

1) if both 'default_gateway' and 'dns_server_address' are set "0.0.0.0", vrouter sends ARP request to VM, use "0.0.0.0" for Sender IP address in ARP packet.
 see DAD mode http://linux.die.net/man/8/arping

2) Allow dummy IP address to 'dns_server_address' such as '169.254.169.1' when Customer does not want to consume any IP address for Contrail internal use.

As per my test, vRouter send 'DHCP offers' which source IP address is '0.0.0.0' when dns_server_address is set '0.0.0.0'. So, I think ARP request will work as same as DHCP.

Changed in juniperopenstack:
assignee: nobody → Naveen N (naveenn)
milestone: none → r3.1.0.0-fcs
importance: Undecided → High
Revision history for this message
OpenContrail Admin (ci-admin-f) wrote : [Review update] R2.22.x

Review in progress for https://review.opencontrail.org/18361
Submitter: Naveen N (<email address hidden>)

Revision history for this message
OpenContrail Admin (ci-admin-f) wrote : [Review update] R2.21.x

Review in progress for https://review.opencontrail.org/18362
Submitter: Naveen N (<email address hidden>)

Revision history for this message
OpenContrail Admin (ci-admin-f) wrote : A change has been merged

Reviewed: https://review.opencontrail.org/18362
Committed: http://github.org/Juniper/contrail-controller/commit/df5ec6b906e355d9372a025265064e3205734273
Submitter: Zuul
Branch: R2.21.x

commit df5ec6b906e355d9372a025265064e3205734273
Author: Naveen N <email address hidden>
Date: Sat Mar 12 14:29:59 2016 +0530

* Use dns server IP as source address while sending ARP
query for allowed address pair address
Closes-bug:#1551105

Change-Id: I78f2ddeea2509dea3d8e98b5b71f1404d0cfc50f

Revision history for this message
OpenContrail Admin (ci-admin-f) wrote :

Reviewed: https://review.opencontrail.org/18361
Committed: http://github.org/Juniper/contrail-controller/commit/dcf0e642c04cca3d861aa87b9152e4a6fafa03ee
Submitter: Zuul
Branch: R2.22.x

commit dcf0e642c04cca3d861aa87b9152e4a6fafa03ee
Author: Naveen N <email address hidden>
Date: Sat Mar 12 14:29:59 2016 +0530

* Use dns server IP as source address while sending ARP
query for allowed address pair address
Closes-bug:#1551105

Change-Id: I78f2ddeea2509dea3d8e98b5b71f1404d0cfc50f

Revision history for this message
OpenContrail Admin (ci-admin-f) wrote : [Review update] R2.21.x

Review in progress for https://review.opencontrail.org/18380
Submitter: Naveen N (<email address hidden>)

Revision history for this message
OpenContrail Admin (ci-admin-f) wrote : [Review update] R2.22.x

Review in progress for https://review.opencontrail.org/18381
Submitter: Naveen N (<email address hidden>)

Revision history for this message
OpenContrail Admin (ci-admin-f) wrote : [Review update] R2.20

Review in progress for https://review.opencontrail.org/18383
Submitter: Naveen N (<email address hidden>)

Revision history for this message
OpenContrail Admin (ci-admin-f) wrote : A change has been merged

Reviewed: https://review.opencontrail.org/18383
Committed: http://github.org/Juniper/contrail-controller/commit/3c662ba7b1b3afb69e40bedbeba0b8b25a6be5b6
Submitter: Zuul
Branch: R2.20

commit 3c662ba7b1b3afb69e40bedbeba0b8b25a6be5b6
Author: Naveen N <email address hidden>
Date: Sat Mar 12 14:29:59 2016 +0530

* Use dns server IP as source address while sending ARP
query for allowed address pair address
Closes-bug:#1551105

Change-Id: I78f2ddeea2509dea3d8e98b5b71f1404d0cfc50f

* Send ARP request for allowed address pair IP even when
gw ip and dns IP is not set. Use zero-ip and send ARP request.
Closes-bug:#1551105

Change-Id: I5b292037b1e0fa69615bd911f8867c77767e4d67

Revision history for this message
OpenContrail Admin (ci-admin-f) wrote :

Reviewed: https://review.opencontrail.org/18380
Committed: http://github.org/Juniper/contrail-controller/commit/49b69bbf35961dd06ea6f53784d5926c1e8db137
Submitter: Zuul
Branch: R2.21.x

commit 49b69bbf35961dd06ea6f53784d5926c1e8db137
Author: Naveen N <email address hidden>
Date: Mon Mar 14 12:16:33 2016 +0530

* Send ARP request for allowed address pair IP even when
gw ip and dns IP is not set. Use zero-ip and send ARP request.
Closes-bug:#1551105

Change-Id: I5b292037b1e0fa69615bd911f8867c77767e4d67

Revision history for this message
OpenContrail Admin (ci-admin-f) wrote :

Reviewed: https://review.opencontrail.org/18381
Committed: http://github.org/Juniper/contrail-controller/commit/bfa36a35cf4f83e0e1f9cbe353f6505a04e3a9a7
Submitter: Zuul
Branch: R2.22.x

commit bfa36a35cf4f83e0e1f9cbe353f6505a04e3a9a7
Author: Naveen N <email address hidden>
Date: Mon Mar 14 12:16:33 2016 +0530

* Send ARP request for allowed address pair IP even when
gw ip and dns IP is not set. Use zero-ip and send ARP request.
Closes-bug:#1551105

Change-Id: I5b292037b1e0fa69615bd911f8867c77767e4d67

Naveen N (naveenn)
Changed in juniperopenstack:
status: New → Fix Committed
information type: Proprietary → Public
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Bug attachments

Remote bug watches

Bug watches keep track of this bug in other bug trackers.