Remove non-default initcwnd capabilities from Bonnet
Functionality should no longer be necessary now that we have deprecated the partial message buffering in Arnold inspection, and was disabled by default and in run_bonnet in previous CLs.
Startblock:
cl/634555661 is submitted
and then
2w have passed
PiperOrigin-RevId: 639062841
diff --git a/quiche/quic/qbone/bonnet/tun_device_controller.cc b/quiche/quic/qbone/bonnet/tun_device_controller.cc
index 5169a77..97a6361 100644
--- a/quiche/quic/qbone/bonnet/tun_device_controller.cc
+++ b/quiche/quic/qbone/bonnet/tun_device_controller.cc
@@ -9,6 +9,7 @@
#include <utility>
#include <vector>
+#include "absl/flags/flag.h"
#include "absl/time/clock.h"
#include "quiche/quic/platform/api/quic_logging.h"
#include "quiche/quic/qbone/qbone_constants.h"
@@ -19,9 +20,8 @@
"qbone interface to the qbone table. This is unnecessary in "
"environments with no other ipv6 route.");
-ABSL_FLAG(int, qbone_route_init_cwnd, 0,
- "If non-zero, will add initcwnd to QBONE routing rules. Setting "
- "a value below 10 is dangerous and not recommended.");
+ABSL_RETIRED_FLAG(int, qbone_route_init_cwnd, 0,
+ "Deprecated. Code no longer modifies initcwnd.");
namespace quic {
@@ -90,8 +90,7 @@
rule.table == QboneConstants::kQboneRouteTableId) {
if (!netlink_->ChangeRoute(NetlinkInterface::Verb::kRemove, rule.table,
rule.destination_subnet, rule.scope,
- rule.preferred_source, rule.out_interface,
- rule.init_cwnd)) {
+ rule.preferred_source, rule.out_interface)) {
QUIC_LOG(ERROR) << "Unable to remove old route to <"
<< rule.destination_subnet.ToString() << ">";
return false;
@@ -111,8 +110,8 @@
for (const auto& route : routes) {
if (!netlink_->ChangeRoute(NetlinkInterface::Verb::kReplace,
QboneConstants::kQboneRouteTableId, route,
- RT_SCOPE_LINK, desired_address, link_info.index,
- absl::GetFlag(FLAGS_qbone_route_init_cwnd))) {
+ RT_SCOPE_LINK, desired_address,
+ link_info.index)) {
QUIC_LOG(ERROR) << "Unable to add route <" << route.ToString() << ">";
return false;
}
diff --git a/quiche/quic/qbone/bonnet/tun_device_controller_test.cc b/quiche/quic/qbone/bonnet/tun_device_controller_test.cc
index fd15f31..58a57d0 100644
--- a/quiche/quic/qbone/bonnet/tun_device_controller_test.cc
+++ b/quiche/quic/qbone/bonnet/tun_device_controller_test.cc
@@ -134,7 +134,6 @@
NetlinkInterface::RoutingRule matching_route{};
matching_route.table = QboneConstants::kQboneRouteTableId;
matching_route.out_interface = kIfindex;
- matching_route.init_cwnd = NetlinkInterface::kUnspecifiedInitCwnd;
for (int i = 0; i < num_matching_routes; i++) {
routing_rules->push_back(matching_route);
}
@@ -146,10 +145,9 @@
return true;
}));
- EXPECT_CALL(netlink_,
- ChangeRoute(NetlinkInterface::Verb::kRemove,
- QboneConstants::kQboneRouteTableId, _, _, _, kIfindex,
- NetlinkInterface::kUnspecifiedInitCwnd))
+ EXPECT_CALL(netlink_, ChangeRoute(NetlinkInterface::Verb::kRemove,
+ QboneConstants::kQboneRouteTableId, _, _, _,
+ kIfindex))
.Times(num_matching_routes)
.WillRepeatedly(Return(true));
@@ -163,7 +161,7 @@
EXPECT_CALL(netlink_,
ChangeRoute(NetlinkInterface::Verb::kReplace,
QboneConstants::kQboneRouteTableId,
- IpRangeEq(link_local_range_), _, _, kIfindex, _))
+ IpRangeEq(link_local_range_), _, _, kIfindex))
.WillOnce(Return(true));
EXPECT_TRUE(controller_.UpdateRoutes(kIpRange, {}));
@@ -176,11 +174,9 @@
EXPECT_CALL(netlink_, GetRuleInfo(_)).WillOnce(Return(true));
- absl::SetFlag(&FLAGS_qbone_route_init_cwnd, 32);
EXPECT_CALL(netlink_, ChangeRoute(NetlinkInterface::Verb::kReplace,
QboneConstants::kQboneRouteTableId,
- IpRangeEq(kIpRange), _, _, kIfindex,
- absl::GetFlag(FLAGS_qbone_route_init_cwnd)))
+ IpRangeEq(kIpRange), _, _, kIfindex))
.Times(2)
.WillRepeatedly(Return(true))
.RetiresOnSaturation();
@@ -193,7 +189,7 @@
EXPECT_CALL(netlink_,
ChangeRoute(NetlinkInterface::Verb::kReplace,
QboneConstants::kQboneRouteTableId,
- IpRangeEq(link_local_range_), _, _, kIfindex, _))
+ IpRangeEq(link_local_range_), _, _, kIfindex))
.WillOnce(Return(true));
EXPECT_TRUE(controller_.UpdateRoutes(kIpRange, {kIpRange, kIpRange}));
@@ -214,7 +210,7 @@
EXPECT_CALL(netlink_,
ChangeRoute(NetlinkInterface::Verb::kReplace,
QboneConstants::kQboneRouteTableId,
- IpRangeEq(link_local_range_), _, _, kIfindex, _))
+ IpRangeEq(link_local_range_), _, _, kIfindex))
.WillOnce(Return(true));
EXPECT_TRUE(controller_.UpdateRoutes(kIpRange, {}));
@@ -228,7 +224,7 @@
EXPECT_CALL(netlink_, ChangeRoute(NetlinkInterface::Verb::kReplace,
QboneConstants::kQboneRouteTableId,
- IpRangeEq(kIpRange), _, _, kIfindex, _))
+ IpRangeEq(kIpRange), _, _, kIfindex))
.Times(2)
.WillRepeatedly(Return(true))
.RetiresOnSaturation();
@@ -236,7 +232,7 @@
EXPECT_CALL(netlink_,
ChangeRoute(NetlinkInterface::Verb::kReplace,
QboneConstants::kQboneRouteTableId,
- IpRangeEq(link_local_range_), _, _, kIfindex, _))
+ IpRangeEq(link_local_range_), _, _, kIfindex))
.WillOnce(Return(true));
EXPECT_TRUE(controller_.UpdateRoutes(kIpRange, {kIpRange, kIpRange}));
diff --git a/quiche/quic/qbone/platform/mock_netlink.h b/quiche/quic/qbone/platform/mock_netlink.h
index 72e3b66..6e33d9c 100644
--- a/quiche/quic/qbone/platform/mock_netlink.h
+++ b/quiche/quic/qbone/platform/mock_netlink.h
@@ -25,8 +25,7 @@
MOCK_METHOD(bool, GetRouteInfo, (std::vector<RoutingRule>*), (override));
MOCK_METHOD(bool, ChangeRoute,
- (Verb, uint32_t, const IpRange&, uint8_t, QuicIpAddress, int32_t,
- uint32_t),
+ (Verb, uint32_t, const IpRange&, uint8_t, QuicIpAddress, int32_t),
(override));
MOCK_METHOD(bool, GetRuleInfo, (std::vector<IpRule>*), (override));
diff --git a/quiche/quic/qbone/platform/netlink.cc b/quiche/quic/qbone/platform/netlink.cc
index 04567d9..6ebc669 100644
--- a/quiche/quic/qbone/platform/netlink.cc
+++ b/quiche/quic/qbone/platform/netlink.cc
@@ -425,7 +425,6 @@
Netlink::RoutingRule rule;
rule.scope = route->rtm_scope;
rule.table = route->rtm_table;
- rule.init_cwnd = Netlink::kUnspecifiedInitCwnd;
struct rtattr* rta;
for (rta = RTM_RTA(route); RTA_OK(rta, payload_length);
@@ -452,25 +451,6 @@
rule.out_interface = *reinterpret_cast<int*>(RTA_DATA(rta));
break;
}
- case RTA_METRICS: {
- struct rtattr* rtax;
- int rta_payload_length = RTA_PAYLOAD(rta);
- for (rtax = reinterpret_cast<struct rtattr*>(RTA_DATA(rta));
- RTA_OK(rtax, rta_payload_length);
- rtax = RTA_NEXT(rtax, rta_payload_length)) {
- switch (rtax->rta_type) {
- case RTAX_INITCWND: {
- rule.init_cwnd = *reinterpret_cast<uint32_t*>(RTA_DATA(rtax));
- break;
- }
- default: {
- QUIC_VLOG(2) << absl::StrCat(
- "Uninteresting RTA_METRICS attribute: ", rtax->rta_type);
- }
- }
- }
- break;
- }
default: {
QUIC_VLOG(2) << absl::StrCat("Uninteresting attribute: ",
rta->rta_type);
@@ -512,7 +492,7 @@
bool Netlink::ChangeRoute(Netlink::Verb verb, uint32_t table,
const IpRange& destination_subnet, uint8_t scope,
QuicIpAddress preferred_source,
- int32_t interface_index, uint32_t init_cwnd) {
+ int32_t interface_index) {
if (!destination_subnet.prefix().IsInitialized()) {
return false;
}
@@ -574,15 +554,6 @@
message.AppendAttribute(RTA_TABLE, &table, sizeof(table));
- if (init_cwnd != kUnspecifiedInitCwnd) {
- char data[RTA_LENGTH(sizeof(uint32_t))];
- struct rtattr* rta = reinterpret_cast<struct rtattr*>(data);
- rta->rta_type = RTAX_INITCWND;
- rta->rta_len = sizeof(data);
- *reinterpret_cast<uint32_t*>(RTA_DATA(rta)) = init_cwnd;
- message.AppendAttribute(RTA_METRICS, data, sizeof(data));
- }
-
// RTA_OIF is the target interface for this rule.
message.AppendAttribute(RTA_OIF, &interface_index, sizeof(interface_index));
// The actual destination subnet must be truncated of all the tailing zeros.
diff --git a/quiche/quic/qbone/platform/netlink.h b/quiche/quic/qbone/platform/netlink.h
index 857b8bf..27a341a 100644
--- a/quiche/quic/qbone/platform/netlink.h
+++ b/quiche/quic/qbone/platform/netlink.h
@@ -88,8 +88,8 @@
// matching rule is found, a new entry will be created.
bool ChangeRoute(Netlink::Verb verb, uint32_t table,
const IpRange& destination_subnet, uint8_t scope,
- QuicIpAddress preferred_source, int32_t interface_index,
- uint32_t init_cwnd) override;
+ QuicIpAddress preferred_source,
+ int32_t interface_index) override;
// Returns the set of all rules in the routing policy database.
bool GetRuleInfo(std::vector<Netlink::IpRule>* ip_rules) override;
diff --git a/quiche/quic/qbone/platform/netlink_interface.h b/quiche/quic/qbone/platform/netlink_interface.h
index c4fc42c..4bbde21 100644
--- a/quiche/quic/qbone/platform/netlink_interface.h
+++ b/quiche/quic/qbone/platform/netlink_interface.h
@@ -73,8 +73,6 @@
uint8_t prefix_length, uint8_t ifa_flags, uint8_t ifa_scope,
const std::vector<struct rtattr*>& additional_attributes) = 0;
- static constexpr uint32_t kUnspecifiedInitCwnd = 0;
-
// Routing rule reported back from GetRouteInfo.
struct RoutingRule {
uint32_t table;
@@ -82,7 +80,6 @@
QuicIpAddress preferred_source;
uint8_t scope;
int out_interface;
- uint32_t init_cwnd; // kUnspecifiedInitCwnd if unspecified
};
struct IpRule {
@@ -112,7 +109,7 @@
virtual bool ChangeRoute(Verb verb, uint32_t table,
const IpRange& destination_subnet, uint8_t scope,
QuicIpAddress preferred_source,
- int32_t interface_index, uint32_t init_cwnd) = 0;
+ int32_t interface_index) = 0;
// Returns the set of all rules in the routing policy database.
virtual bool GetRuleInfo(std::vector<IpRule>* ip_rules) = 0;
diff --git a/quiche/quic/qbone/platform/netlink_test.cc b/quiche/quic/qbone/platform/netlink_test.cc
index ad159c5..e1f57c5 100644
--- a/quiche/quic/qbone/platform/netlink_test.cc
+++ b/quiche/quic/qbone/platform/netlink_test.cc
@@ -208,8 +208,7 @@
unsigned char destination_length, unsigned char source_length,
unsigned char tos, unsigned char table, unsigned char protocol,
unsigned char scope, unsigned char type, unsigned int flags,
- QuicIpAddress destination, int interface_index,
- int init_cwnd) {
+ QuicIpAddress destination, int interface_index) {
auto* msg = reinterpret_cast<struct rtmsg*>(NLMSG_DATA(nlm));
msg->rtm_family = family;
msg->rtm_dst_len = destination_length;
@@ -228,16 +227,6 @@
// Add egress interface
AddRTA(nlm, RTA_OIF, &interface_index, sizeof(interface_index));
-
- // Add initcwnd
- if (init_cwnd > 0) {
- char data[RTA_LENGTH(sizeof(uint32_t))];
- struct rtattr* rta = reinterpret_cast<struct rtattr*>(data);
- rta->rta_len = sizeof(data);
- rta->rta_type = RTA_METRICS;
- *reinterpret_cast<uint32_t*>(RTA_DATA(rta)) = init_cwnd;
- AddRTA(nlm, RTA_METRICS, data, sizeof(data));
- }
}
TEST_F(NetlinkTest, GetLinkInfoWorks) {
@@ -489,7 +478,7 @@
buf, nullptr, RTM_NEWROUTE, seq);
CreateRtmsg(netlink_message, AF_INET6, 48, 0, 0,
RT_TABLE_MAIN, RTPROT_STATIC, RT_SCOPE_LINK,
- RTN_UNICAST, 0, destination, 7, 0);
+ RTN_UNICAST, 0, destination, 7);
ret += NLMSG_ALIGN(netlink_message->nlmsg_len);
netlink_message = CreateNetlinkMessage(
@@ -509,7 +498,6 @@
routing_rules[0].destination_subnet.ToString());
EXPECT_FALSE(routing_rules[0].preferred_source.IsInitialized());
EXPECT_EQ(7, routing_rules[0].out_interface);
- EXPECT_EQ(0, routing_rules[0].init_cwnd);
}
TEST_F(NetlinkTest, ChangeRouteAdd) {
@@ -520,7 +508,6 @@
IpRange subnet;
subnet.FromString("ff80:dead:beef::/48");
int egress_interface_index = 7;
- uint32_t init_cwnd = 32;
ExpectNetlinkPacket(
RTM_NEWROUTE, NLM_F_ACK | NLM_F_REQUEST | NLM_F_CREATE | NLM_F_EXCL,
[](void* buf, size_t len, int seq) {
@@ -533,8 +520,8 @@
netlink_message->nlmsg_len = NLMSG_LENGTH(sizeof(struct nlmsgerr));
return netlink_message->nlmsg_len;
},
- [preferred_ip, subnet, egress_interface_index, init_cwnd](const void* buf,
- size_t len) {
+ [preferred_ip, subnet, egress_interface_index](const void* buf,
+ size_t len) {
auto* netlink_message = reinterpret_cast<const struct nlmsghdr*>(buf);
auto* rtm =
reinterpret_cast<const struct rtmsg*>(NLMSG_DATA(netlink_message));
@@ -592,25 +579,16 @@
QboneConstants::kQboneRouteTableId);
break;
}
- case RTA_METRICS: {
- struct rtattr* rtax =
- reinterpret_cast<struct rtattr*>(RTA_DATA(rta));
- ASSERT_EQ(rtax->rta_type, RTAX_INITCWND);
- ASSERT_EQ(rtax->rta_len, RTA_LENGTH(sizeof(uint32_t)));
- ASSERT_EQ(*reinterpret_cast<uint32_t*>(RTA_DATA(rtax)),
- init_cwnd);
- break;
- }
default:
EXPECT_TRUE(false) << "Seeing rtattr that should not be sent";
}
++num_rta;
}
- EXPECT_EQ(6, num_rta);
+ EXPECT_EQ(5, num_rta);
});
EXPECT_TRUE(netlink->ChangeRoute(
Netlink::Verb::kAdd, QboneConstants::kQboneRouteTableId, subnet,
- RT_SCOPE_LINK, preferred_ip, egress_interface_index, init_cwnd));
+ RT_SCOPE_LINK, preferred_ip, egress_interface_index));
}
TEST_F(NetlinkTest, ChangeRouteRemove) {
@@ -692,8 +670,7 @@
});
EXPECT_TRUE(netlink->ChangeRoute(
Netlink::Verb::kRemove, QboneConstants::kQboneRouteTableId, subnet,
- RT_SCOPE_LINK, preferred_ip, egress_interface_index,
- Netlink::kUnspecifiedInitCwnd));
+ RT_SCOPE_LINK, preferred_ip, egress_interface_index));
}
TEST_F(NetlinkTest, ChangeRouteReplace) {
@@ -784,8 +761,7 @@
});
EXPECT_TRUE(netlink->ChangeRoute(
Netlink::Verb::kReplace, QboneConstants::kQboneRouteTableId, subnet,
- RT_SCOPE_LINK, preferred_ip, egress_interface_index,
- Netlink::kUnspecifiedInitCwnd));
+ RT_SCOPE_LINK, preferred_ip, egress_interface_index));
}
} // namespace