Lines Matching full:mtu
4 # Check that route PMTU values match expectations, and that initial device MTU
20 # decrease and increase the MTU of the local link for one of the paths,
41 # set a MTU lower than the VXLAN MTU and the MTU on the link between A and
42 # R1. Send IPv4 packets, exceeding the MTU between R1 and B, over VXLAN
75 # MTU on the B-R1 link is lower than other MTUs.
94 # which is handled by Open vSwitch and bridged to C. MTU on the B-R1 link
125 # created if link layer MTU is not exceeded, then exceed it and check that
127 # below for IPv6 doesn't apply here, because, on IPv4, administrative MTU
136 # route exception is not created if link layer MTU is not exceeded, then
137 # lower MTU on second part of routed environment and check that exception
143 # created by exceeding link layer MTU with ping to other endpoint. Then
144 # decrease and increase MTU of tunnel, checking that route exception PMTU
156 # endpoints. Check that MTU assigned to vti interface is the MTU of the
164 # Set up vti4 interface passing MTU value at link creation, check MTU is
165 # configured, and that link is not created with invalid MTU values
172 # and check that configured MTU is used on link creation and changes, and
173 # that MTU is properly calculated instead when MTU is not configured from
204 # addresses have multipath routes to each other, b_r1 mtu = 1500.
265 pmtu_vti4_default_mtu vti4: default MTU assignment 0
266 pmtu_vti6_default_mtu vti6: default MTU assignment 0
267 pmtu_vti4_link_add_mtu vti4: MTU setting on link creation 0
268 pmtu_vti6_link_add_mtu vti6: MTU setting on link creation 0
269 pmtu_vti6_link_change_mtu vti6: MTU changes on link changes 0
1100 mtu() { function
1103 mtu="${3}"
1105 ${ns_cmd} ip link set dev ${dev} mtu ${mtu}
1116 [ "${i}" = "mtu" ] && next=1
1155 err " found PMTU exception with incorrect MTU ${value}, expected ${expected}, after ${event}"
1178 # Set up initial MTU values
1179 mtu "${ns_a}" veth_A-R1 2000
1180 mtu "${ns_r1}" veth_R1-A 2000
1181 mtu "${ns_r1}" veth_R1-B 1400
1182 mtu "${ns_b}" veth_B-R1 1400
1184 mtu "${ns_a}" veth_A-R2 2000
1185 mtu "${ns_r2}" veth_R2-A 2000
1186 mtu "${ns_r2}" veth_R2-B 1500
1187 mtu "${ns_b}" veth_B-R2 1500
1195 check_pmtu_value "1400" "${pmtu_1}" "exceeding MTU" || return 1
1197 check_pmtu_value "1500" "${pmtu_2}" "exceeding MTU" || return 1
1199 # Decrease local MTU below PMTU, check for PMTU decrease in route exception
1200 mtu "${ns_a}" veth_A-R1 1300
1201 mtu "${ns_r1}" veth_R1-A 1300
1203 check_pmtu_value "1300" "${pmtu_1}" "decreasing local MTU" || return 1
1206 check_pmtu_value "1500" "${pmtu_2}" "changing local MTU on a link not on this path" || return 1
1208 # Increase MTU, check for PMTU increase in route exception
1209 mtu "${ns_a}" veth_A-R1 1700
1210 mtu "${ns_r1}" veth_R1-A 1700
1212 check_pmtu_value "1700" "${pmtu_1}" "increasing local MTU" || return 1
1215 check_pmtu_value "1500" "${pmtu_2}" "changing local MTU on a link not on this path" || return 1
1220 # Decrease remote MTU on path via R2, get new exception
1221 mtu "${ns_r2}" veth_R2-B 400
1222 mtu "${ns_b}" veth_B-R2 400
1225 check_pmtu_value "lock 552" "${pmtu_2}" "exceeding MTU, with MTU < min_pmtu" || return 1
1227 # Decrease local MTU below PMTU
1228 mtu "${ns_a}" veth_A-R2 500
1229 mtu "${ns_r2}" veth_R2-A 500
1231 check_pmtu_value "500" "${pmtu_2}" "decreasing local MTU" || return 1
1233 # Increase local MTU
1234 mtu "${ns_a}" veth_A-R2 1500
1235 mtu "${ns_r2}" veth_R2-A 1500
1237 check_pmtu_value "1500" "${pmtu_2}" "increasing local MTU" || return 1
1242 check_pmtu_value "lock 552" "${pmtu_2}" "exceeding MTU, with MTU < min_pmtu" || return 1
1262 # Set up initial MTU values
1263 mtu "${ns_a}" veth_A-R1 2000
1264 mtu "${ns_r1}" veth_R1-A 2000
1265 mtu "${ns_r1}" veth_R1-B 1400
1266 mtu "${ns_b}" veth_B-R1 1400
1268 mtu "${ns_a}" veth_A-R2 2000
1269 mtu "${ns_r2}" veth_R2-A 2000
1270 mtu "${ns_r2}" veth_R2-B 1500
1271 mtu "${ns_b}" veth_B-R2 1500
1273 len=$((2000 - 20 - 8)) # Fills MTU of veth_A-R1
1287 check_pmtu_value "1400" "${pmtu_1}" "exceeding MTU" || return 1
1290 check_pmtu_value "1500" "${pmtu_2}" "exceeding MTU" || return 1
1307 # Set up initial MTU values
1308 mtu "${ns_a}" veth_A-R1 2000
1309 mtu "${ns_r1}" veth_R1-A 2000
1310 mtu "${ns_r1}" veth_R1-B 1400
1311 mtu "${ns_b}" veth_B-R1 1400
1313 mtu "${ns_a}" veth_A-R2 2000
1314 mtu "${ns_r2}" veth_R2-A 2000
1315 mtu "${ns_r2}" veth_R2-B 1500
1316 mtu "${ns_b}" veth_B-R2 1500
1318 len=$((2000 - 20 - 8)) # Fills MTU of veth_A-R1
1337 check_pmtu_value "1400" "${pmtu_1}" "exceeding MTU" || return 1
1339 check_pmtu_value "1500" "${pmtu_2}" "exceeding MTU" || return 1
1370 # Create route exception by exceeding link layer MTU
1371 mtu "${ns_a}" veth_A-R1 $((${ll_mtu} + 1000))
1372 mtu "${ns_r1}" veth_R1-A $((${ll_mtu} + 1000))
1373 mtu "${ns_b}" veth_B-R1 ${ll_mtu}
1374 mtu "${ns_r1}" veth_R1-B ${ll_mtu}
1376 mtu "${ns_a}" ${type}_a $((${ll_mtu} + 1000))
1377 mtu "${ns_b}" ${type}_b $((${ll_mtu} + 1000))
1382 check_pmtu_value ${exp_mtu} "${pmtu}" "exceeding link layer MTU on ${type} interface"
1447 # Create route exception by exceeding link layer MTU
1448 mtu "${ns_a}" veth_A-R1 $((${ll_mtu} + 1000))
1449 mtu "${ns_a}" br0 $((${ll_mtu} + 1000))
1450 mtu "${ns_a}" veth_A-C $((${ll_mtu} + 1000))
1451 mtu "${ns_c}" veth_C-A $((${ll_mtu} + 1000))
1452 mtu "${ns_r1}" veth_R1-A $((${ll_mtu} + 1000))
1453 mtu "${ns_b}" veth_B-R1 ${ll_mtu}
1454 mtu "${ns_r1}" veth_R1-B ${ll_mtu}
1456 mtu "${ns_a}" ${type}_a $((${ll_mtu} + 1000))
1457 mtu "${ns_b}" ${type}_b $((${ll_mtu} + 1000))
1464 check_pmtu_value ${exp_mtu} "${pmtu}" "exceeding link layer MTU on bridged ${type} interface"
1466 …check_pmtu_value ${exp_mtu} "${pmtu}" "exceeding link layer MTU on locally bridged ${type} interfa…
1499 check_pmtu_value ${exp_mtu} "${pmtu}" "tcp: exceeding link layer MTU on bridged ${type} interface"
1501 …check_pmtu_value ${exp_mtu} "${pmtu}" "tcp exceeding link layer MTU on locally bridged ${type} int…
1572 # Create route exception by exceeding link layer MTU
1573 mtu "" veth_A-R1 $((${ll_mtu} + 1000))
1574 mtu "" ovs_br0 $((${ll_mtu} + 1000))
1575 mtu "" veth_A-C $((${ll_mtu} + 1000))
1576 mtu "${ns_c}" veth_C-A $((${ll_mtu} + 1000))
1577 mtu "${ns_r1}" veth_R1-A $((${ll_mtu} + 1000))
1578 mtu "${ns_b}" veth_B-R1 ${ll_mtu}
1579 mtu "${ns_r1}" veth_R1-B ${ll_mtu}
1581 mtu "" ${tun_a} $((${ll_mtu} + 1000)) 2>/dev/null || \
1582 mtu "" ${type}_a $((${ll_mtu} + 1000)) 2>/dev/null
1583 mtu "${ns_b}" ${type}_b $((${ll_mtu} + 1000))
1589 check_pmtu_value ${exp_mtu} "${pmtu}" "exceeding link layer MTU on Open vSwitch ${type} interface"
1657 # Create route exception by exceeding link layer MTU
1658 mtu "${ns_a}" veth_A-R1 $((${ll_mtu} + 1000))
1659 mtu "${ns_r1}" veth_R1-A $((${ll_mtu} + 1000))
1660 mtu "${ns_b}" veth_B-R1 ${ll_mtu}
1661 mtu "${ns_r1}" veth_R1-B ${ll_mtu}
1663 mtu "${ns_a}" ${encap}_a $((${ll_mtu} + 1000))
1664 mtu "${ns_b}" ${encap}_b $((${ll_mtu} + 1000))
1669 check_pmtu_value ${exp_mtu} "${pmtu}" "exceeding link layer MTU on ${encap} interface"
1731 # Create route exception by exceeding link layer MTU
1732 mtu "${ns_a}" veth_A-R1 $((${ll_mtu} + 1000))
1733 mtu "${ns_r1}" veth_R1-A $((${ll_mtu} + 1000))
1734 mtu "${ns_b}" veth_B-R1 ${ll_mtu}
1735 mtu "${ns_r1}" veth_R1-B ${ll_mtu}
1737 mtu "${ns_a}" ip_a $((${ll_mtu} + 1000)) || return
1738 mtu "${ns_b}" ip_b $((${ll_mtu} + 1000)) || return
1743 check_pmtu_value ${exp_mtu} "${pmtu}" "exceeding link layer MTU on ip${inner}ip${outer} interface"
1774 mtu "${ns_a}" veth_a ${veth_mtu}
1775 mtu "${ns_b}" veth_b ${veth_mtu}
1776 mtu "${ns_a}" vti4_a ${vti_mtu}
1777 mtu "${ns_b}" vti4_b ${vti_mtu}
1779 # Send DF packet without exceeding link layer MTU, check that no
1785 # Now exceed link layer MTU by one byte, check that exception is created
1798 # Create route exception by exceeding link layer MTU
1799 mtu "${ns_a}" veth_a 4000
1800 mtu "${ns_b}" veth_b 4000
1801 mtu "${ns_a}" vti6_a 5000
1802 mtu "${ns_b}" vti6_b 5000
1807 check_pmtu_value any "${pmtu}" "creating tunnel exceeding link layer MTU" || return 1
1809 # Decrease tunnel MTU, check for PMTU decrease in route exception
1810 mtu "${ns_a}" vti6_a 3000
1812 check_pmtu_value "3000" "${pmtu}" "decreasing tunnel MTU" || fail=1
1814 # Increase tunnel MTU, check for PMTU increase in route exception
1815 mtu "${ns_a}" vti6_a 9000
1817 check_pmtu_value "9000" "${pmtu}" "increasing tunnel MTU" || fail=1
1834 mtu "${ns_a}" veth_a ${veth_mtu}
1835 mtu "${ns_b}" veth_b ${veth_mtu}
1836 mtu "${ns_a}" vti4_a ${vti_mtu}
1837 mtu "${ns_b}" vti4_b ${vti_mtu}
1839 # Send DF packet without exceeding link layer MTU, check that no
1845 # Now exceed link layer MTU by one byte, check that exception is created
1858 # Create route exception by exceeding link layer MTU
1859 mtu "${ns_a}" veth_a 4000
1860 mtu "${ns_b}" veth_b 4000
1861 mtu "${ns_a}" vti6_a 5000
1862 mtu "${ns_b}" vti6_b 5000
1867 check_pmtu_value any "${pmtu}" "creating tunnel exceeding link layer MTU" || return 1
1869 # Decrease tunnel MTU, check for PMTU decrease in route exception
1870 mtu "${ns_a}" vti6_a 3000
1872 check_pmtu_value "3000" "${pmtu}" "decreasing tunnel MTU" || fail=1
1874 # Increase tunnel MTU, check for PMTU increase in route exception
1875 mtu "${ns_a}" vti6_a 9000
1877 check_pmtu_value "9000" "${pmtu}" "increasing tunnel MTU" || fail=1
1894 mtu "${ns_a}" veth_A-R1 ${veth_mtu}
1895 mtu "${ns_r1}" veth_R1-A ${veth_mtu}
1896 mtu "${ns_b}" veth_B-R1 ${veth_mtu}
1897 mtu "${ns_r1}" veth_R1-B ${veth_mtu}
1899 mtu "${ns_a}" vti4_a ${vti_mtu}
1900 mtu "${ns_b}" vti4_b ${vti_mtu}
1902 # Send DF packet without exceeding link layer MTU, check that no
1908 # Now decrease link layer MTU by 8 bytes on R1, check that exception is created
1910 mtu "${ns_r1}" veth_R1-B $((veth_mtu - 8))
1928 mtu "${ns_a}" veth_A-R1 ${veth_mtu}
1929 mtu "${ns_r1}" veth_R1-A ${veth_mtu}
1930 mtu "${ns_b}" veth_B-R1 ${veth_mtu}
1931 mtu "${ns_r1}" veth_R1-B ${veth_mtu}
1933 # mtu "${ns_a}" vti6_a ${vti_mtu}
1934 # mtu "${ns_b}" vti6_b ${vti_mtu}
1942 # Now decrease link layer MTU by 8 bytes on R1, check that exception is created
1944 mtu "${ns_r1}" veth_R1-B $((veth_mtu - 8))
1954 # Check that MTU of vti device is MTU of veth minus IPv4 header length
1958 err " vti MTU ${vti4_mtu} is not veth MTU ${veth_mtu} minus IPv4 header length"
1966 # Check that MTU of vti device is MTU of veth minus IPv6 header length
1970 err " vti MTU ${vti6_mtu} is not veth MTU ${veth_mtu} minus IPv6 header length"
1988 …run_cmd ${ns_a} ip link add vti4_a mtu ${v} type vti local ${veth4_a_addr} remote ${veth4_b_addr} …
1989 # This can fail, or MTU can be adjusted to a proper value
1991 mtu="$(link_get_mtu "${ns_a}" vti4_a)"
1992 if [ ${mtu} -lt ${min} -o ${mtu} -gt ${max} ]; then
1993 err " vti tunnel created with invalid MTU ${mtu}"
2001 …run_cmd ${ns_a} ip link add vti4_a mtu ${v} type vti local ${veth4_a_addr} remote ${veth4_b_addr} …
2002 mtu="$(link_get_mtu "${ns_a}" vti4_a)"
2004 if [ "${mtu}" != "${v}" ]; then
2005 err " vti MTU ${mtu} doesn't match configured value ${v}"
2026 …run_cmd ${ns_a} ip link add vti6_a mtu ${v} type vti6 local ${veth6_a_addr} remote ${veth6_b_addr}…
2027 # This can fail, or MTU can be adjusted to a proper value
2029 mtu="$(link_get_mtu "${ns_a}" vti6_a)"
2030 if [ ${mtu} -lt ${min} -o ${mtu} -gt ${max} ]; then
2031 err " vti6 tunnel created with invalid MTU ${v}"
2039 …run_cmd ${ns_a} ip link add vti6_a mtu ${v} type vti6 local ${veth6_a_addr} remote ${veth6_b_addr}…
2040 mtu="$(link_get_mtu "${ns_a}" vti6_a)"
2042 if [ "${mtu}" != "${v}" ]; then
2043 err " vti6 MTU ${mtu} doesn't match configured value ${v}"
2054 run_cmd ${ns_a} ip link add dummy0 mtu 1500 type dummy
2056 run_cmd ${ns_a} ip link add dummy1 mtu 3000 type dummy
2065 # Create vti6 interface bound to device, passing MTU, check it
2066 …run_cmd ${ns_a} ip link add vti6_a mtu 1300 type vti6 remote ${dummy6_0_prefix}2 local ${dummy6_0_…
2067 mtu="$(link_get_mtu "${ns_a}" vti6_a)"
2068 if [ ${mtu} -ne 1300 ]; then
2069 err " vti6 MTU ${mtu} doesn't match configured value 1300"
2073 # Move to another device with different MTU, without passing MTU, check
2074 # MTU is adjusted
2076 mtu="$(link_get_mtu "${ns_a}" vti6_a)"
2077 if [ ${mtu} -ne $((3000 - 40)) ]; then
2078 err " vti MTU ${mtu} is not dummy MTU 3000 minus IPv6 header length"
2082 # Move it back, passing MTU, check MTU is not overridden
2083 …run_cmd ${ns_a} ip link set vti6_a mtu 1280 type vti6 remote ${dummy6_0_prefix}2 local ${dummy6_0_…
2084 mtu="$(link_get_mtu "${ns_a}" vti6_a)"
2085 if [ ${mtu} -ne 1280 ]; then
2086 err " vti6 MTU ${mtu} doesn't match configured value 1280"
2123 # Create route exception by exceeding link layer MTU
2124 mtu "${ns_a}" veth_A-R1 $((${ll_mtu} + 1000))
2125 mtu "${ns_r1}" veth_R1-A $((${ll_mtu} + 1000))
2126 mtu "${ns_b}" veth_B-R1 ${ll_mtu}
2127 mtu "${ns_r1}" veth_R1-B ${ll_mtu}
2129 mtu "${ns_a}" ${encap}_a $((${ll_mtu} + 1000))
2130 mtu "${ns_b}" ${encap}_b $((${ll_mtu} + 1000))
2229 # Set up initial MTU values
2230 mtu "${ns_a}" veth_A-R1 2000
2231 mtu "${ns_r1}" veth_R1-A 2000
2232 mtu "${ns_r1}" veth_R1-B 1500
2233 mtu "${ns_b}" veth_B-R1 1500
2235 mtu "${ns_a}" veth_A-R2 2000
2236 mtu "${ns_r2}" veth_R2-A 2000
2237 mtu "${ns_r2}" veth_R2-B 1500
2238 mtu "${ns_b}" veth_B-R2 1500
2283 # Set up initial MTU values
2284 mtu "${ns_a}" veth_A-R1 2000
2285 mtu "${ns_r1}" veth_R1-A 2000
2286 mtu "${ns_r1}" veth_R1-B 1500
2287 mtu "${ns_b}" veth_B-R1 1500
2289 mtu "${ns_a}" veth_A-R2 2000
2290 mtu "${ns_r2}" veth_R2-A 2000
2291 mtu "${ns_r2}" veth_R2-B 1500
2292 mtu "${ns_b}" veth_B-R2 1500
2344 # Set up initial MTU values
2345 mtu "${ns_a}" veth_A-R1 2000
2346 mtu "${ns_r1}" veth_R1-A 2000
2347 mtu "${ns_r1}" veth_R1-B 1400
2348 mtu "${ns_b}" veth_B-R1 1400
2350 mtu "${ns_a}" veth_A-R2 2000
2351 mtu "${ns_r2}" veth_R2-A 2000
2352 mtu "${ns_r2}" veth_R2-B 1500
2353 mtu "${ns_b}" veth_B-R2 1500
2361 check_pmtu_value "1400" "${pmtu_1}" "exceeding MTU" || return 1
2363 check_pmtu_value "1500" "${pmtu_2}" "exceeding MTU" || return 1
2388 # Set up initial MTU values
2389 mtu "${ns_a}" veth_A-R1 2000
2390 mtu "${ns_r1}" veth_R1-A 2000
2391 mtu "${ns_r1}" veth_R1-B 1500
2392 mtu "${ns_b}" veth_B-R1 1500
2394 mtu "${ns_a}" veth_A-R2 2000
2395 mtu "${ns_r2}" veth_R2-A 2000
2396 mtu "${ns_r2}" veth_R2-B 1500
2397 mtu "${ns_b}" veth_B-R2 1500
2406 check_pmtu_value "1500" "${pmtu_a_R1}" "exceeding MTU (veth_A-R1)" || return 1
2407 check_pmtu_value "1500" "${pmtu_a_R2}" "exceeding MTU (veth_A-R2)" || return 1