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.

Change-Id: Ia044fff2a1731ab6c04f82aea47096b425e0c0a0

Monty Taylor authored on 2016/08/24 09:07:57
Showing 1 changed files
... ...
@@ -83,6 +83,9 @@ SUBNETPOOL_PREFIX_V6=${SUBNETPOOL_PREFIX_V6:-2001:db8:8000::/48}
83 83
 SUBNETPOOL_SIZE_V4=${SUBNETPOOL_SIZE_V4:-24}
84 84
 SUBNETPOOL_SIZE_V6=${SUBNETPOOL_SIZE_V6:-64}
85 85
 
86
+default_route_dev=$(ip route | grep ^default | awk '{print $5}')
87
+die_if_not_set $LINENO default_route_dev "Failure retrieving default route device"
88
+
86 89
 function _determine_config_l3 {
87 90
     local opts="--config-file $NEUTRON_CONF --config-file $Q_L3_CONF_FILE"
88 91
     echo "$opts"
... ...
@@ -113,9 +116,7 @@ function _configure_neutron_l3_agent {
113 113
             _move_neutron_addresses_route "$PUBLIC_INTERFACE" "$OVS_PHYSICAL_BRIDGE" False False "inet6"
114 114
         fi
115 115
     else
116
-        local default_dev=""
117
-        default_dev=$(ip route | grep ^default | awk '{print $5}')
118
-        sudo iptables -t nat -A POSTROUTING -o $default_dev -s $FLOATING_RANGE -j MASQUERADE
116
+        sudo iptables -t nat -A POSTROUTING -o $default_route_dev -s $FLOATING_RANGE -j MASQUERADE
119 117
     fi
120 118
 }
121 119
 
... ...
@@ -351,6 +352,11 @@ function _neutron_configure_router_v6 {
351 351
 
352 352
     # This logic is specific to using the l3-agent for layer 3
353 353
     if is_service_enabled q-l3 || is_service_enabled neutron-l3; then
354
+        # Ensure IPv6 RAs are accepted on the interface with the default route.
355
+        # This is needed for neutron-based devstack clouds to work in
356
+        # IPv6-only clouds in the gate. Please do not remove this without
357
+        # talking to folks in Infra.
358
+        sudo sysctl -w net.ipv6.conf.$default_route_dev.accept_ra=2
354 359
         # Ensure IPv6 forwarding is enabled on the host
355 360
         sudo sysctl -w net.ipv6.conf.all.forwarding=1
356 361
         # Configure and enable public bridge