Set the MTU of the overlay network

We need to set the MTU of the overlay network accurately, because with
fast datapath we can't inject the ICMP frag-needed packets to cause a
lower path MTU.  Later on we can refine this to try to try to
automatically detect a good cluster-wide MTU value.  But for now we
default to a conservative value that should work on almost all local
networks, with support for manually overriding it where a higher MTU
gives better performance.
This commit is contained in:
David Wragg committed 2015-06-12 21:24:15 +01:00
1 parent 62de82f349
commit ec779c5ebd
1 file changed
+9 -1
+9 -1
View File
@@ -65,6 +65,7 @@ exec_remote() {
-e WEAVE_PASSWORD \
-e WEAVE_PORT \
-e WEAVE_CONTAINER_NAME \
-e WEAVE_MTU \
-e DOCKER_BRIDGE \
$WEAVEEXEC_DOCKER_ARGS $EXEC_IMAGE --local "$@"
}
@@ -164,7 +165,6 @@ CONTAINER_NAME=${WEAVE_CONTAINER_NAME:-weave}
DNS_CONTAINER_NAME=weavedns
BRIDGE=weave
CONTAINER_IFNAME=ethwe
MTU=65535
PORT=${WEAVE_PORT:-6783}
HTTP_PORT=6784
DNS_HTTP_PORT=6785
@@ -176,6 +176,13 @@ if [ "$DOCKER_HOST" != "${DOCKER_HOST#tcp://}" ] ; then
fi
# GCE has the lowest underlay network MTU we're likely to encounter on
# a local network, at 1460 bytes. To get the overlay MTU from that we
# subtract 20 bytes for the outer IPv4 header, 8 bytes for the outer
# UDP hear, 8 bytes for the vxlan header, and 14 bytes for the inner
# ethernet header.
MTU=${WEAVE_MTU:-1410}
######################################################################
# general helpers; independent of docker and weave
######################################################################
@@ -269,6 +276,7 @@ create_bridge() {
#ip link add name v${CONTAINER_IFNAME}du mtu $MTU type dummy
#ip link set dev v${CONTAINER_IFNAME}du master $BRIDGE
#ip link del dev v${CONTAINER_IFNAME}du
ip link set dev $BRIDGE mtu $MTU
# Drop traffic from Docker bridge to Weave; it can break subnet isolation
if [ "$DOCKER_BRIDGE" != "$BRIDGE" ] ; then
# Note using -I to insert ahead of Docker's bridge rules