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
259 pmtu_vti4_default_mtu vti4: default MTU assignment 0
260 pmtu_vti6_default_mtu vti6: default MTU assignment 0
261 pmtu_vti4_link_add_mtu vti4: MTU setting on link creation 0
262 pmtu_vti6_link_add_mtu vti6: MTU setting on link creation 0
263 pmtu_vti6_link_change_mtu vti6: MTU changes on link changes 0
958 mtu() { function
961 mtu="${3}"
963 ${ns_cmd} ip link set dev ${dev} mtu ${mtu}
974 [ "${i}" = "mtu" ] && next=1
1021 err " found PMTU exception with incorrect MTU ${value}, expected ${expected}, after ${event}"
1044 # Set up initial MTU values
1045 mtu "${ns_a}" veth_A-R1 2000
1046 mtu "${ns_r1}" veth_R1-A 2000
1047 mtu "${ns_r1}" veth_R1-B 1400
1048 mtu "${ns_b}" veth_B-R1 1400
1050 mtu "${ns_a}" veth_A-R2 2000
1051 mtu "${ns_r2}" veth_R2-A 2000
1052 mtu "${ns_r2}" veth_R2-B 1500
1053 mtu "${ns_b}" veth_B-R2 1500
1061 check_pmtu_value "1400" "${pmtu_1}" "exceeding MTU" || return 1
1063 check_pmtu_value "1500" "${pmtu_2}" "exceeding MTU" || return 1
1065 # Decrease local MTU below PMTU, check for PMTU decrease in route exception
1066 mtu "${ns_a}" veth_A-R1 1300
1067 mtu "${ns_r1}" veth_R1-A 1300
1069 check_pmtu_value "1300" "${pmtu_1}" "decreasing local MTU" || return 1
1072 check_pmtu_value "1500" "${pmtu_2}" "changing local MTU on a link not on this path" || return 1
1074 # Increase MTU, check for PMTU increase in route exception
1075 mtu "${ns_a}" veth_A-R1 1700
1076 mtu "${ns_r1}" veth_R1-A 1700
1078 check_pmtu_value "1700" "${pmtu_1}" "increasing local MTU" || return 1
1081 check_pmtu_value "1500" "${pmtu_2}" "changing local MTU on a link not on this path" || return 1
1086 # Decrease remote MTU on path via R2, get new exception
1087 mtu "${ns_r2}" veth_R2-B 400
1088 mtu "${ns_b}" veth_B-R2 400
1091 check_pmtu_value "lock 552" "${pmtu_2}" "exceeding MTU, with MTU < min_pmtu" || return 1
1093 # Decrease local MTU below PMTU
1094 mtu "${ns_a}" veth_A-R2 500
1095 mtu "${ns_r2}" veth_R2-A 500
1097 check_pmtu_value "500" "${pmtu_2}" "decreasing local MTU" || return 1
1099 # Increase local MTU
1100 mtu "${ns_a}" veth_A-R2 1500
1101 mtu "${ns_r2}" veth_R2-A 1500
1103 check_pmtu_value "1500" "${pmtu_2}" "increasing local MTU" || return 1
1108 check_pmtu_value "lock 552" "${pmtu_2}" "exceeding MTU, with MTU < min_pmtu" || return 1
1128 # Set up initial MTU values
1129 mtu "${ns_a}" veth_A-R1 2000
1130 mtu "${ns_r1}" veth_R1-A 2000
1131 mtu "${ns_r1}" veth_R1-B 1400
1132 mtu "${ns_b}" veth_B-R1 1400
1134 mtu "${ns_a}" veth_A-R2 2000
1135 mtu "${ns_r2}" veth_R2-A 2000
1136 mtu "${ns_r2}" veth_R2-B 1500
1137 mtu "${ns_b}" veth_B-R2 1500
1139 len=$((2000 - 20 - 8)) # Fills MTU of veth_A-R1
1153 check_pmtu_value "1400" "${pmtu_1}" "exceeding MTU" || return 1
1156 check_pmtu_value "1500" "${pmtu_2}" "exceeding MTU" || return 1
1173 # Set up initial MTU values
1174 mtu "${ns_a}" veth_A-R1 2000
1175 mtu "${ns_r1}" veth_R1-A 2000
1176 mtu "${ns_r1}" veth_R1-B 1400
1177 mtu "${ns_b}" veth_B-R1 1400
1179 mtu "${ns_a}" veth_A-R2 2000
1180 mtu "${ns_r2}" veth_R2-A 2000
1181 mtu "${ns_r2}" veth_R2-B 1500
1182 mtu "${ns_b}" veth_B-R2 1500
1184 len=$((2000 - 20 - 8)) # Fills MTU of veth_A-R1
1203 check_pmtu_value "1400" "${pmtu_1}" "exceeding MTU" || return 1
1205 check_pmtu_value "1500" "${pmtu_2}" "exceeding MTU" || return 1
1236 # Create route exception by exceeding link layer MTU
1237 mtu "${ns_a}" veth_A-R1 $((${ll_mtu} + 1000))
1238 mtu "${ns_r1}" veth_R1-A $((${ll_mtu} + 1000))
1239 mtu "${ns_b}" veth_B-R1 ${ll_mtu}
1240 mtu "${ns_r1}" veth_R1-B ${ll_mtu}
1242 mtu "${ns_a}" ${type}_a $((${ll_mtu} + 1000))
1243 mtu "${ns_b}" ${type}_b $((${ll_mtu} + 1000))
1248 check_pmtu_value ${exp_mtu} "${pmtu}" "exceeding link layer MTU on ${type} interface"
1313 # Create route exception by exceeding link layer MTU
1314 mtu "${ns_a}" veth_A-R1 $((${ll_mtu} + 1000))
1315 mtu "${ns_a}" br0 $((${ll_mtu} + 1000))
1316 mtu "${ns_a}" veth_A-C $((${ll_mtu} + 1000))
1317 mtu "${ns_c}" veth_C-A $((${ll_mtu} + 1000))
1318 mtu "${ns_r1}" veth_R1-A $((${ll_mtu} + 1000))
1319 mtu "${ns_b}" veth_B-R1 ${ll_mtu}
1320 mtu "${ns_r1}" veth_R1-B ${ll_mtu}
1322 mtu "${ns_a}" ${type}_a $((${ll_mtu} + 1000))
1323 mtu "${ns_b}" ${type}_b $((${ll_mtu} + 1000))
1330 check_pmtu_value ${exp_mtu} "${pmtu}" "exceeding link layer MTU on bridged ${type} interface"
1332 …check_pmtu_value ${exp_mtu} "${pmtu}" "exceeding link layer MTU on locally bridged ${type} interfa…
1363 check_pmtu_value ${exp_mtu} "${pmtu}" "tcp: exceeding link layer MTU on bridged ${type} interface"
1365 …check_pmtu_value ${exp_mtu} "${pmtu}" "tcp exceeding link layer MTU on locally bridged ${type} int…
1436 # Create route exception by exceeding link layer MTU
1437 mtu "" veth_A-R1 $((${ll_mtu} + 1000))
1438 mtu "" ovs_br0 $((${ll_mtu} + 1000))
1439 mtu "" veth_A-C $((${ll_mtu} + 1000))
1440 mtu "${ns_c}" veth_C-A $((${ll_mtu} + 1000))
1441 mtu "${ns_r1}" veth_R1-A $((${ll_mtu} + 1000))
1442 mtu "${ns_b}" veth_B-R1 ${ll_mtu}
1443 mtu "${ns_r1}" veth_R1-B ${ll_mtu}
1445 mtu "" ${tun_a} $((${ll_mtu} + 1000))
1446 mtu "${ns_b}" ${type}_b $((${ll_mtu} + 1000))
1452 check_pmtu_value ${exp_mtu} "${pmtu}" "exceeding link layer MTU on Open vSwitch ${type} interface"
1520 # Create route exception by exceeding link layer MTU
1521 mtu "${ns_a}" veth_A-R1 $((${ll_mtu} + 1000))
1522 mtu "${ns_r1}" veth_R1-A $((${ll_mtu} + 1000))
1523 mtu "${ns_b}" veth_B-R1 ${ll_mtu}
1524 mtu "${ns_r1}" veth_R1-B ${ll_mtu}
1526 mtu "${ns_a}" ${encap}_a $((${ll_mtu} + 1000))
1527 mtu "${ns_b}" ${encap}_b $((${ll_mtu} + 1000))
1532 check_pmtu_value ${exp_mtu} "${pmtu}" "exceeding link layer MTU on ${encap} interface"
1594 # Create route exception by exceeding link layer MTU
1595 mtu "${ns_a}" veth_A-R1 $((${ll_mtu} + 1000))
1596 mtu "${ns_r1}" veth_R1-A $((${ll_mtu} + 1000))
1597 mtu "${ns_b}" veth_B-R1 ${ll_mtu}
1598 mtu "${ns_r1}" veth_R1-B ${ll_mtu}
1600 mtu "${ns_a}" ip_a $((${ll_mtu} + 1000)) || return
1601 mtu "${ns_b}" ip_b $((${ll_mtu} + 1000)) || return
1606 check_pmtu_value ${exp_mtu} "${pmtu}" "exceeding link layer MTU on ip${inner}ip${outer} interface"
1637 mtu "${ns_a}" veth_a ${veth_mtu}
1638 mtu "${ns_b}" veth_b ${veth_mtu}
1639 mtu "${ns_a}" vti4_a ${vti_mtu}
1640 mtu "${ns_b}" vti4_b ${vti_mtu}
1642 # Send DF packet without exceeding link layer MTU, check that no
1648 # Now exceed link layer MTU by one byte, check that exception is created
1661 # Create route exception by exceeding link layer MTU
1662 mtu "${ns_a}" veth_a 4000
1663 mtu "${ns_b}" veth_b 4000
1664 mtu "${ns_a}" vti6_a 5000
1665 mtu "${ns_b}" vti6_b 5000
1670 check_pmtu_value any "${pmtu}" "creating tunnel exceeding link layer MTU" || return 1
1672 # Decrease tunnel MTU, check for PMTU decrease in route exception
1673 mtu "${ns_a}" vti6_a 3000
1675 check_pmtu_value "3000" "${pmtu}" "decreasing tunnel MTU" || fail=1
1677 # Increase tunnel MTU, check for PMTU increase in route exception
1678 mtu "${ns_a}" vti6_a 9000
1680 check_pmtu_value "9000" "${pmtu}" "increasing tunnel MTU" || fail=1
1697 mtu "${ns_a}" veth_a ${veth_mtu}
1698 mtu "${ns_b}" veth_b ${veth_mtu}
1699 mtu "${ns_a}" vti4_a ${vti_mtu}
1700 mtu "${ns_b}" vti4_b ${vti_mtu}
1702 # Send DF packet without exceeding link layer MTU, check that no
1708 # Now exceed link layer MTU by one byte, check that exception is created
1721 # Create route exception by exceeding link layer MTU
1722 mtu "${ns_a}" veth_a 4000
1723 mtu "${ns_b}" veth_b 4000
1724 mtu "${ns_a}" vti6_a 5000
1725 mtu "${ns_b}" vti6_b 5000
1730 check_pmtu_value any "${pmtu}" "creating tunnel exceeding link layer MTU" || return 1
1732 # Decrease tunnel MTU, check for PMTU decrease in route exception
1733 mtu "${ns_a}" vti6_a 3000
1735 check_pmtu_value "3000" "${pmtu}" "decreasing tunnel MTU" || fail=1
1737 # Increase tunnel MTU, check for PMTU increase in route exception
1738 mtu "${ns_a}" vti6_a 9000
1740 check_pmtu_value "9000" "${pmtu}" "increasing tunnel MTU" || fail=1
1757 mtu "${ns_a}" veth_A-R1 ${veth_mtu}
1758 mtu "${ns_r1}" veth_R1-A ${veth_mtu}
1759 mtu "${ns_b}" veth_B-R1 ${veth_mtu}
1760 mtu "${ns_r1}" veth_R1-B ${veth_mtu}
1762 mtu "${ns_a}" vti4_a ${vti_mtu}
1763 mtu "${ns_b}" vti4_b ${vti_mtu}
1765 # Send DF packet without exceeding link layer MTU, check that no
1771 # Now decrease link layer MTU by 8 bytes on R1, check that exception is created
1773 mtu "${ns_r1}" veth_R1-B $((veth_mtu - 8))
1791 mtu "${ns_a}" veth_A-R1 ${veth_mtu}
1792 mtu "${ns_r1}" veth_R1-A ${veth_mtu}
1793 mtu "${ns_b}" veth_B-R1 ${veth_mtu}
1794 mtu "${ns_r1}" veth_R1-B ${veth_mtu}
1796 # mtu "${ns_a}" vti6_a ${vti_mtu}
1797 # mtu "${ns_b}" vti6_b ${vti_mtu}
1805 # Now decrease link layer MTU by 8 bytes on R1, check that exception is created
1807 mtu "${ns_r1}" veth_R1-B $((veth_mtu - 8))
1817 # Check that MTU of vti device is MTU of veth minus IPv4 header length
1821 err " vti MTU ${vti4_mtu} is not veth MTU ${veth_mtu} minus IPv4 header length"
1829 # Check that MTU of vti device is MTU of veth minus IPv6 header length
1833 err " vti MTU ${vti6_mtu} is not veth MTU ${veth_mtu} minus IPv6 header length"
1851 …run_cmd ${ns_a} ip link add vti4_a mtu ${v} type vti local ${veth4_a_addr} remote ${veth4_b_addr} …
1852 # This can fail, or MTU can be adjusted to a proper value
1854 mtu="$(link_get_mtu "${ns_a}" vti4_a)"
1855 if [ ${mtu} -lt ${min} -o ${mtu} -gt ${max} ]; then
1856 err " vti tunnel created with invalid MTU ${mtu}"
1864 …run_cmd ${ns_a} ip link add vti4_a mtu ${v} type vti local ${veth4_a_addr} remote ${veth4_b_addr} …
1865 mtu="$(link_get_mtu "${ns_a}" vti4_a)"
1867 if [ "${mtu}" != "${v}" ]; then
1868 err " vti MTU ${mtu} doesn't match configured value ${v}"
1889 …run_cmd ${ns_a} ip link add vti6_a mtu ${v} type vti6 local ${veth6_a_addr} remote ${veth6_b_addr}…
1890 # This can fail, or MTU can be adjusted to a proper value
1892 mtu="$(link_get_mtu "${ns_a}" vti6_a)"
1893 if [ ${mtu} -lt ${min} -o ${mtu} -gt ${max} ]; then
1894 err " vti6 tunnel created with invalid MTU ${v}"
1902 …run_cmd ${ns_a} ip link add vti6_a mtu ${v} type vti6 local ${veth6_a_addr} remote ${veth6_b_addr}…
1903 mtu="$(link_get_mtu "${ns_a}" vti6_a)"
1905 if [ "${mtu}" != "${v}" ]; then
1906 err " vti6 MTU ${mtu} doesn't match configured value ${v}"
1917 run_cmd ${ns_a} ip link add dummy0 mtu 1500 type dummy
1919 run_cmd ${ns_a} ip link add dummy1 mtu 3000 type dummy
1928 # Create vti6 interface bound to device, passing MTU, check it
1929 …run_cmd ${ns_a} ip link add vti6_a mtu 1300 type vti6 remote ${dummy6_0_prefix}2 local ${dummy6_0_…
1930 mtu="$(link_get_mtu "${ns_a}" vti6_a)"
1931 if [ ${mtu} -ne 1300 ]; then
1932 err " vti6 MTU ${mtu} doesn't match configured value 1300"
1936 # Move to another device with different MTU, without passing MTU, check
1937 # MTU is adjusted
1939 mtu="$(link_get_mtu "${ns_a}" vti6_a)"
1940 if [ ${mtu} -ne $((3000 - 40)) ]; then
1941 err " vti MTU ${mtu} is not dummy MTU 3000 minus IPv6 header length"
1945 # Move it back, passing MTU, check MTU is not overridden
1946 …run_cmd ${ns_a} ip link set vti6_a mtu 1280 type vti6 remote ${dummy6_0_prefix}2 local ${dummy6_0_…
1947 mtu="$(link_get_mtu "${ns_a}" vti6_a)"
1948 if [ ${mtu} -ne 1280 ]; then
1949 err " vti6 MTU ${mtu} doesn't match configured value 1280"
1979 # Create route exception by exceeding link layer MTU
1980 mtu "${ns_a}" veth_A-R1 $((${ll_mtu} + 1000))
1981 mtu "${ns_r1}" veth_R1-A $((${ll_mtu} + 1000))
1982 mtu "${ns_b}" veth_B-R1 ${ll_mtu}
1983 mtu "${ns_r1}" veth_R1-B ${ll_mtu}
1985 mtu "${ns_a}" ${encap}_a $((${ll_mtu} + 1000))
1986 mtu "${ns_b}" ${encap}_b $((${ll_mtu} + 1000))
2084 # Set up initial MTU values
2085 mtu "${ns_a}" veth_A-R1 2000
2086 mtu "${ns_r1}" veth_R1-A 2000
2087 mtu "${ns_r1}" veth_R1-B 1500
2088 mtu "${ns_b}" veth_B-R1 1500
2090 mtu "${ns_a}" veth_A-R2 2000
2091 mtu "${ns_r2}" veth_R2-A 2000
2092 mtu "${ns_r2}" veth_R2-B 1500
2093 mtu "${ns_b}" veth_B-R2 1500
2138 # Set up initial MTU values
2139 mtu "${ns_a}" veth_A-R1 2000
2140 mtu "${ns_r1}" veth_R1-A 2000
2141 mtu "${ns_r1}" veth_R1-B 1500
2142 mtu "${ns_b}" veth_B-R1 1500
2144 mtu "${ns_a}" veth_A-R2 2000
2145 mtu "${ns_r2}" veth_R2-A 2000
2146 mtu "${ns_r2}" veth_R2-B 1500
2147 mtu "${ns_b}" veth_B-R2 1500
2199 # Set up initial MTU values
2200 mtu "${ns_a}" veth_A-R1 2000
2201 mtu "${ns_r1}" veth_R1-A 2000
2202 mtu "${ns_r1}" veth_R1-B 1400
2203 mtu "${ns_b}" veth_B-R1 1400
2205 mtu "${ns_a}" veth_A-R2 2000
2206 mtu "${ns_r2}" veth_R2-A 2000
2207 mtu "${ns_r2}" veth_R2-B 1500
2208 mtu "${ns_b}" veth_B-R2 1500
2216 check_pmtu_value "1400" "${pmtu_1}" "exceeding MTU" || return 1
2218 check_pmtu_value "1500" "${pmtu_2}" "exceeding MTU" || return 1