Browse code

Accept IPv6 RAs on the interface with the default route

Because neutron sets ipv6 forwarding settings, we stop accepting RAs
from IPv6-only host environments. This leads to a loss of external
connectivity, which is bad for zuul running tests and stuff.

Setting accept_ra to 2 will cause the RAs to be accepted.

(cherry picked from commit 85b1308be4f4107a9054037b1d7351f57f473a1f)

Conflicts:
lib/neutron_plugins/services/l3

Closes-bug: #1616282

Change-Id: Ia044fff2a1731ab6c04f82aea47096b425e0c0a0

Monty Taylor authored on 2016/08/24 09:07:57
Showing 1 changed files
... ...
@@ -359,6 +359,9 @@ else
359 359
     Q_USE_SECGROUP=False
360 360
 fi
361 361
 
362
+default_route_dev=$(ip route | grep ^default | awk '{print $5}')
363
+die_if_not_set $LINENO default_route_dev "Failure retrieving default route device"
364
+
362 365
 # Save trace setting
363 366
 XTRACE=$(set +o | grep xtrace)
364 367
 set +o xtrace
... ...
@@ -1344,6 +1347,11 @@ function _neutron_configure_router_v6 {
1344 1344
 
1345 1345
     # This logic is specific to using the l3-agent for layer 3
1346 1346
     if is_service_enabled q-l3; then
1347
+        # Ensure IPv6 RAs are accepted on the interface with the default route.
1348
+        # This is needed for neutron-based devstack clouds to work in
1349
+        # IPv6-only clouds in the gate. Please do not remove this without
1350
+        # talking to folks in Infra.
1351
+        sudo sysctl -w net.ipv6.conf.$default_route_dev.accept_ra=2
1347 1352
         # Ensure IPv6 forwarding is enabled on the host
1348 1353
         sudo sysctl -w net.ipv6.conf.all.forwarding=1
1349 1354
         # Configure and enable public bridge