Copy up/downstream bandwidth and TCP buffer sizes from underlying
This change copies the relevant pieces of information used to tune the system for performance Bug: 188943592 Test: atest FrameworksVcnTests Change-Id: I2d5dc5b9000fa9d0da9d34772b3704110694c526
This commit is contained in:
@@ -1970,6 +1970,9 @@ public class VcnGatewayConnection extends StateMachine {
|
||||
}
|
||||
builder.setAdministratorUids(adminUids);
|
||||
|
||||
builder.setLinkUpstreamBandwidthKbps(underlyingCaps.getLinkUpstreamBandwidthKbps());
|
||||
builder.setLinkDownstreamBandwidthKbps(underlyingCaps.getLinkDownstreamBandwidthKbps());
|
||||
|
||||
// Set TransportInfo for SysUI use (never parcelled out of SystemServer).
|
||||
if (underlyingCaps.hasTransport(TRANSPORT_WIFI)
|
||||
&& underlyingCaps.getTransportInfo() instanceof WifiInfo) {
|
||||
@@ -1986,6 +1989,11 @@ public class VcnGatewayConnection extends StateMachine {
|
||||
"Unknown transport type or missing TransportInfo/NetworkSpecifier for"
|
||||
+ " non-null underlying network");
|
||||
}
|
||||
} else {
|
||||
Slog.wtf(
|
||||
TAG,
|
||||
"No underlying network while building network capabilities",
|
||||
new IllegalStateException());
|
||||
}
|
||||
|
||||
return builder.build();
|
||||
@@ -2013,7 +2021,18 @@ public class VcnGatewayConnection extends StateMachine {
|
||||
lp.addRoute(new RouteInfo(new IpPrefix(Inet6Address.ANY, 0), null /*gateway*/,
|
||||
null /*iface*/, RouteInfo.RTN_UNICAST));
|
||||
|
||||
final int underlyingMtu = (underlying == null) ? 0 : underlying.linkProperties.getMtu();
|
||||
int underlyingMtu = 0;
|
||||
if (underlying != null) {
|
||||
final LinkProperties underlyingLp = underlying.linkProperties;
|
||||
|
||||
lp.setTcpBufferSizes(underlyingLp.getTcpBufferSizes());
|
||||
underlyingMtu = underlyingLp.getMtu();
|
||||
} else {
|
||||
Slog.wtf(
|
||||
TAG,
|
||||
"No underlying network while building link properties",
|
||||
new IllegalStateException());
|
||||
}
|
||||
lp.setMtu(
|
||||
MtuUtils.getMtu(
|
||||
ikeTunnelParams.getTunnelModeChildSessionParams().getSaProposals(),
|
||||
|
||||
@@ -200,6 +200,9 @@ public class VcnGatewayConnectionConnectedStateTest extends VcnGatewayConnection
|
||||
public void testMigration() throws Exception {
|
||||
triggerChildOpened();
|
||||
|
||||
mGatewayConnection
|
||||
.getUnderlyingNetworkTrackerCallback()
|
||||
.onSelectedUnderlyingNetworkChanged(TEST_UNDERLYING_NETWORK_RECORD_2);
|
||||
getChildSessionCallback()
|
||||
.onIpSecTransformsMigrated(makeDummyIpSecTransform(), makeDummyIpSecTransform());
|
||||
mTestLooper.dispatchAll();
|
||||
@@ -207,7 +210,7 @@ public class VcnGatewayConnectionConnectedStateTest extends VcnGatewayConnection
|
||||
verify(mIpSecSvc, times(2))
|
||||
.setNetworkForTunnelInterface(
|
||||
eq(TEST_IPSEC_TUNNEL_RESOURCE_ID),
|
||||
eq(TEST_UNDERLYING_NETWORK_RECORD_1.network),
|
||||
eq(TEST_UNDERLYING_NETWORK_RECORD_2.network),
|
||||
any());
|
||||
|
||||
for (int direction : new int[] {DIRECTION_IN, DIRECTION_OUT}) {
|
||||
@@ -226,8 +229,10 @@ public class VcnGatewayConnectionConnectedStateTest extends VcnGatewayConnection
|
||||
MtuUtils.getMtu(
|
||||
saProposals,
|
||||
mConfig.getMaxMtu(),
|
||||
TEST_UNDERLYING_NETWORK_RECORD_1.linkProperties.getMtu());
|
||||
verify(mNetworkAgent).sendLinkProperties(argThat(lp -> expectedMtu == lp.getMtu()));
|
||||
TEST_UNDERLYING_NETWORK_RECORD_2.linkProperties.getMtu());
|
||||
verify(mNetworkAgent).sendLinkProperties(
|
||||
argThat(lp -> expectedMtu == lp.getMtu()
|
||||
&& TEST_TCP_BUFFER_SIZES_2.equals(lp.getTcpBufferSizes())));
|
||||
}
|
||||
|
||||
private void triggerChildOpened() {
|
||||
@@ -297,6 +302,7 @@ public class VcnGatewayConnectionConnectedStateTest extends VcnGatewayConnection
|
||||
final LinkProperties lp = lpCaptor.getValue();
|
||||
assertEquals(Collections.singletonList(TEST_INTERNAL_ADDR), lp.getLinkAddresses());
|
||||
assertEquals(Collections.singletonList(TEST_DNS_ADDR), lp.getDnsServers());
|
||||
assertEquals(TEST_TCP_BUFFER_SIZES_1, lp.getTcpBufferSizes());
|
||||
|
||||
final NetworkCapabilities nc = ncCaptor.getValue();
|
||||
assertTrue(nc.hasTransport(TRANSPORT_CELLULAR));
|
||||
|
||||
@@ -74,6 +74,9 @@ public class VcnGatewayConnectionTest extends VcnGatewayConnectionTestBase {
|
||||
private static final SubscriptionInfo TEST_SUBINFO_2 = mock(SubscriptionInfo.class);
|
||||
private static final Map<Integer, ParcelUuid> TEST_SUBID_TO_GROUP_MAP;
|
||||
|
||||
private static final int TEST_UPSTREAM_BANDWIDTH = 1234;
|
||||
private static final int TEST_DOWNSTREAM_BANDWIDTH = 2345;
|
||||
|
||||
static {
|
||||
final Map<Integer, ParcelUuid> subIdToGroupMap = new HashMap<>();
|
||||
subIdToGroupMap.put(TEST_SUBSCRIPTION_ID_1, TEST_PARCEL_UUID);
|
||||
@@ -106,6 +109,8 @@ public class VcnGatewayConnectionTest extends VcnGatewayConnectionTestBase {
|
||||
capBuilder.setNetworkSpecifier(
|
||||
new TelephonyNetworkSpecifier(TEST_SUBSCRIPTION_ID_1));
|
||||
}
|
||||
capBuilder.setLinkUpstreamBandwidthKbps(TEST_UPSTREAM_BANDWIDTH);
|
||||
capBuilder.setLinkDownstreamBandwidthKbps(TEST_DOWNSTREAM_BANDWIDTH);
|
||||
capBuilder.setAdministratorUids(new int[] {TEST_UID});
|
||||
UnderlyingNetworkRecord record = new UnderlyingNetworkRecord(
|
||||
mock(Network.class, CALLS_REAL_METHODS),
|
||||
@@ -130,6 +135,8 @@ public class VcnGatewayConnectionTest extends VcnGatewayConnectionTestBase {
|
||||
|
||||
assertArrayEquals(new int[] {TEST_UID}, vcnCaps.getAdministratorUids());
|
||||
assertTrue(vcnCaps.getTransportInfo() instanceof VcnTransportInfo);
|
||||
assertEquals(TEST_UPSTREAM_BANDWIDTH, vcnCaps.getLinkUpstreamBandwidthKbps());
|
||||
assertEquals(TEST_DOWNSTREAM_BANDWIDTH, vcnCaps.getLinkDownstreamBandwidthKbps());
|
||||
|
||||
final VcnTransportInfo info = (VcnTransportInfo) vcnCaps.getTransportInfo();
|
||||
if (transportType == TRANSPORT_WIFI) {
|
||||
|
||||
@@ -99,6 +99,7 @@ public class VcnGatewayConnectionTestBase {
|
||||
protected static final long ELAPSED_REAL_TIME = 123456789L;
|
||||
protected static final String TEST_IPSEC_TUNNEL_IFACE = "IPSEC_IFACE";
|
||||
|
||||
protected static final String TEST_TCP_BUFFER_SIZES_1 = "1,2,3,4";
|
||||
protected static final UnderlyingNetworkRecord TEST_UNDERLYING_NETWORK_RECORD_1 =
|
||||
new UnderlyingNetworkRecord(
|
||||
mock(Network.class, CALLS_REAL_METHODS),
|
||||
@@ -108,8 +109,10 @@ public class VcnGatewayConnectionTestBase {
|
||||
|
||||
static {
|
||||
TEST_UNDERLYING_NETWORK_RECORD_1.linkProperties.setMtu(1500);
|
||||
TEST_UNDERLYING_NETWORK_RECORD_1.linkProperties.setTcpBufferSizes(TEST_TCP_BUFFER_SIZES_1);
|
||||
}
|
||||
|
||||
protected static final String TEST_TCP_BUFFER_SIZES_2 = "2,3,4,5";
|
||||
protected static final UnderlyingNetworkRecord TEST_UNDERLYING_NETWORK_RECORD_2 =
|
||||
new UnderlyingNetworkRecord(
|
||||
mock(Network.class, CALLS_REAL_METHODS),
|
||||
@@ -119,6 +122,7 @@ public class VcnGatewayConnectionTestBase {
|
||||
|
||||
static {
|
||||
TEST_UNDERLYING_NETWORK_RECORD_2.linkProperties.setMtu(1460);
|
||||
TEST_UNDERLYING_NETWORK_RECORD_2.linkProperties.setTcpBufferSizes(TEST_TCP_BUFFER_SIZES_2);
|
||||
}
|
||||
|
||||
protected static final TelephonySubscriptionSnapshot TEST_SUBSCRIPTION_SNAPSHOT =
|
||||
|
||||
Reference in New Issue
Block a user