Switch routing from dest endpoint id to dest ip in network emulation layer
Bug: webrtc:10138
Change-Id: I8659777820ec7244c1435d71504b0c01fb438192
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/130103
Reviewed-by: Yves Gerey <yvesg@google.com>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27386}
diff --git a/test/scenario/call_client.cc b/test/scenario/call_client.cc
index 47da762..a98c3e0 100644
--- a/test/scenario/call_client.cc
+++ b/test/scenario/call_client.cc
@@ -195,10 +195,10 @@
void CallClient::OnPacketReceived(EmulatedIpPacket packet) {
// Removes added overhead before delivering packet to sender.
- RTC_DCHECK_GE(packet.data.size(),
- route_overhead_.at(packet.dest_endpoint_id).bytes());
- packet.data.SetSize(packet.data.size() -
- route_overhead_.at(packet.dest_endpoint_id).bytes());
+ size_t size =
+ packet.data.size() - route_overhead_.at(packet.to.ipaddr()).bytes();
+ RTC_DCHECK_GE(size, 0);
+ packet.data.SetSize(size);
MediaType media_type = MediaType::ANY;
if (!RtpHeaderParser::IsRtcp(packet.cdata(), packet.data.size())) {
diff --git a/test/scenario/call_client.h b/test/scenario/call_client.h
index 14c283d..c7ef65e 100644
--- a/test/scenario/call_client.h
+++ b/test/scenario/call_client.h
@@ -112,7 +112,7 @@
std::unique_ptr<FecControllerFactoryInterface> fec_controller_factory_;
// Stores the configured overhead per known destination endpoint. This is used
// to subtract the overhead before processing.
- std::map<uint64_t, DataSize> route_overhead_;
+ std::map<rtc::IPAddress, DataSize> route_overhead_;
int next_video_ssrc_index_ = 0;
int next_video_local_ssrc_index_ = 0;
int next_rtx_ssrc_index_ = 0;
diff --git a/test/scenario/network/network_emulation.cc b/test/scenario/network/network_emulation.cc
index 2021248..03e2bf4 100644
--- a/test/scenario/network/network_emulation.cc
+++ b/test/scenario/network/network_emulation.cc
@@ -21,12 +21,10 @@
EmulatedIpPacket::EmulatedIpPacket(const rtc::SocketAddress& from,
const rtc::SocketAddress& to,
- uint64_t dest_endpoint_id,
rtc::CopyOnWriteBuffer data,
Timestamp arrival_time)
: from(from),
to(to),
- dest_endpoint_id(dest_endpoint_id),
data(data),
arrival_time(arrival_time) {}
EmulatedIpPacket::~EmulatedIpPacket() = default;
@@ -34,19 +32,19 @@
EmulatedIpPacket& EmulatedIpPacket::operator=(EmulatedIpPacket&&) = default;
void EmulatedNetworkNode::CreateRoute(
- uint64_t receiver_id,
+ rtc::IPAddress receiver_ip,
std::vector<EmulatedNetworkNode*> nodes,
EmulatedNetworkReceiverInterface* receiver) {
RTC_CHECK(!nodes.empty());
for (size_t i = 0; i + 1 < nodes.size(); ++i)
- nodes[i]->SetReceiver(receiver_id, nodes[i + 1]);
- nodes.back()->SetReceiver(receiver_id, receiver);
+ nodes[i]->SetReceiver(receiver_ip, nodes[i + 1]);
+ nodes.back()->SetReceiver(receiver_ip, receiver);
}
-void EmulatedNetworkNode::ClearRoute(uint64_t receiver_id,
+void EmulatedNetworkNode::ClearRoute(rtc::IPAddress receiver_ip,
std::vector<EmulatedNetworkNode*> nodes) {
for (EmulatedNetworkNode* node : nodes)
- node->RemoveReceiver(receiver_id);
+ node->RemoveReceiver(receiver_ip);
}
EmulatedNetworkNode::EmulatedNetworkNode(
@@ -57,7 +55,7 @@
void EmulatedNetworkNode::OnPacketReceived(EmulatedIpPacket packet) {
rtc::CritScope crit(&lock_);
- if (routing_.find(packet.dest_endpoint_id) == routing_.end()) {
+ if (routing_.find(packet.to.ipaddr()) == routing_.end()) {
return;
}
uint64_t packet_id = next_packet_id_++;
@@ -92,7 +90,7 @@
}
RTC_CHECK(packet);
RTC_DCHECK(!packet->removed);
- receiver = routing_[packet->packet.dest_endpoint_id];
+ receiver = routing_[packet->packet.to.ipaddr()];
packet->removed = true;
}
RTC_CHECK(receiver);
@@ -113,19 +111,18 @@
}
void EmulatedNetworkNode::SetReceiver(
- uint64_t dest_endpoint_id,
+ rtc::IPAddress dest_ip,
EmulatedNetworkReceiverInterface* receiver) {
rtc::CritScope crit(&lock_);
- RTC_CHECK(routing_
- .insert(std::pair<uint64_t, EmulatedNetworkReceiverInterface*>(
- dest_endpoint_id, receiver))
- .second)
- << "Routing for endpoint " << dest_endpoint_id << " already exists";
+ EmulatedNetworkReceiverInterface* cur_receiver = routing_[dest_ip];
+ RTC_CHECK(cur_receiver == nullptr || cur_receiver == receiver)
+ << "Routing for dest_ip=" << dest_ip.ToString() << " already exists";
+ routing_[dest_ip] = receiver;
}
-void EmulatedNetworkNode::RemoveReceiver(uint64_t dest_endpoint_id) {
+void EmulatedNetworkNode::RemoveReceiver(rtc::IPAddress dest_ip) {
rtc::CritScope crit(&lock_);
- routing_.erase(dest_endpoint_id);
+ routing_.erase(dest_ip);
}
EmulatedEndpoint::EmulatedEndpoint(uint64_t id,
@@ -137,8 +134,7 @@
is_enabled_(is_enabled),
send_node_(nullptr),
clock_(clock),
- next_port_(kFirstEphemeralPort),
- connected_endpoint_id_(absl::nullopt) {
+ next_port_(kFirstEphemeralPort) {
constexpr int kIPv4NetworkPrefixLength = 24;
constexpr int kIPv6NetworkPrefixLength = 64;
@@ -170,11 +166,10 @@
const rtc::SocketAddress& to,
rtc::CopyOnWriteBuffer packet) {
RTC_CHECK(from.ipaddr() == peer_local_addr_);
- RTC_CHECK(connected_endpoint_id_);
RTC_CHECK(send_node_);
- send_node_->OnPacketReceived(EmulatedIpPacket(
- from, to, connected_endpoint_id_.value(), std::move(packet),
- Timestamp::us(clock_->TimeInMicroseconds())));
+ send_node_->OnPacketReceived(
+ EmulatedIpPacket(from, to, std::move(packet),
+ Timestamp::us(clock_->TimeInMicroseconds())));
}
absl::optional<uint16_t> EmulatedEndpoint::BindReceiver(
@@ -228,9 +223,10 @@
}
void EmulatedEndpoint::OnPacketReceived(EmulatedIpPacket packet) {
- RTC_CHECK(packet.dest_endpoint_id == id_)
- << "Routing error: wrong destination endpoint. Destination id: "
- << packet.dest_endpoint_id << "; Receiver id: " << id_;
+ RTC_CHECK(packet.to.ipaddr() == peer_local_addr_)
+ << "Routing error: wrong destination endpoint. Packet.to.ipaddr()=: "
+ << packet.to.ipaddr().ToString()
+ << "; Receiver peer_local_addr_=" << peer_local_addr_.ToString();
rtc::CritScope crit(&receiver_lock_);
auto it = port_to_receiver_.find(packet.to.port());
if (it == port_to_receiver_.end()) {
@@ -268,10 +264,6 @@
return send_node_;
}
-void EmulatedEndpoint::SetConnectedEndpointId(uint64_t endpoint_id) {
- connected_endpoint_id_ = endpoint_id;
-}
-
EndpointsContainer::EndpointsContainer(
const std::vector<EmulatedEndpoint*>& endpoints)
: endpoints_(endpoints) {}
@@ -279,8 +271,8 @@
EmulatedEndpoint* EndpointsContainer::LookupByLocalAddress(
const rtc::IPAddress& local_ip) const {
for (auto* endpoint : endpoints_) {
- rtc::IPAddress peerLocalAddress = endpoint->GetPeerLocalAddress();
- if (peerLocalAddress == local_ip) {
+ rtc::IPAddress peer_local_address = endpoint->GetPeerLocalAddress();
+ if (peer_local_address == local_ip) {
return endpoint;
}
}
diff --git a/test/scenario/network/network_emulation.h b/test/scenario/network/network_emulation.h
index 309d511..ec39dfe 100644
--- a/test/scenario/network/network_emulation.h
+++ b/test/scenario/network/network_emulation.h
@@ -43,7 +43,6 @@
public:
EmulatedIpPacket(const rtc::SocketAddress& from,
const rtc::SocketAddress& to,
- uint64_t dest_endpoint_id,
rtc::CopyOnWriteBuffer data,
Timestamp arrival_time);
~EmulatedIpPacket();
@@ -59,7 +58,6 @@
rtc::SocketAddress from;
rtc::SocketAddress to;
- uint64_t dest_endpoint_id;
rtc::CopyOnWriteBuffer data;
Timestamp arrival_time;
};
@@ -87,16 +85,16 @@
void OnPacketReceived(EmulatedIpPacket packet) override;
void Process(Timestamp at_time);
- void SetReceiver(uint64_t dest_endpoint_id,
+ void SetReceiver(rtc::IPAddress dest_ip,
EmulatedNetworkReceiverInterface* receiver);
- void RemoveReceiver(uint64_t dest_endpoint_id);
+ void RemoveReceiver(rtc::IPAddress dest_ip);
- // Creates a route for the given receiver_id over all the given nodes to the
+ // Creates a route for the given receiver_ip over all the given nodes to the
// given receiver.
- static void CreateRoute(uint64_t receiver_id,
+ static void CreateRoute(rtc::IPAddress receiver_ip,
std::vector<EmulatedNetworkNode*> nodes,
EmulatedNetworkReceiverInterface* receiver);
- static void ClearRoute(uint64_t receiver_id,
+ static void ClearRoute(rtc::IPAddress receiver_ip,
std::vector<EmulatedNetworkNode*> nodes);
private:
@@ -107,7 +105,7 @@
};
rtc::CriticalSection lock_;
- std::map<uint64_t, EmulatedNetworkReceiverInterface*> routing_
+ std::map<rtc::IPAddress, EmulatedNetworkReceiverInterface*> routing_
RTC_GUARDED_BY(lock_);
const std::unique_ptr<NetworkBehaviorInterface> network_behavior_
RTC_GUARDED_BY(lock_);
@@ -170,7 +168,6 @@
friend class test::NetworkEmulationManagerImpl;
EmulatedNetworkNode* GetSendNode() const;
- void SetConnectedEndpointId(uint64_t endpoint_id);
private:
static constexpr uint16_t kFirstEphemeralPort = 49152;
@@ -190,8 +187,6 @@
uint16_t next_port_ RTC_GUARDED_BY(receiver_lock_);
std::map<uint16_t, EmulatedNetworkReceiverInterface*> port_to_receiver_
RTC_GUARDED_BY(receiver_lock_);
-
- absl::optional<uint64_t> connected_endpoint_id_;
};
class EmulatedRoute {
diff --git a/test/scenario/network/network_emulation_manager.cc b/test/scenario/network/network_emulation_manager.cc
index 9c634ea..94b5373 100644
--- a/test/scenario/network/network_emulation_manager.cc
+++ b/test/scenario/network/network_emulation_manager.cc
@@ -112,11 +112,10 @@
from->SetSendNode(via_nodes[0]);
EmulatedNetworkNode* cur_node = via_nodes[0];
for (size_t i = 1; i < via_nodes.size(); ++i) {
- cur_node->SetReceiver(to->GetId(), via_nodes[i]);
+ cur_node->SetReceiver(to->GetPeerLocalAddress(), via_nodes[i]);
cur_node = via_nodes[i];
}
- cur_node->SetReceiver(to->GetId(), to);
- from->SetConnectedEndpointId(to->GetId());
+ cur_node->SetReceiver(to->GetPeerLocalAddress(), to);
std::unique_ptr<EmulatedRoute> route =
absl::make_unique<EmulatedRoute>(from, std::move(via_nodes), to);
@@ -130,11 +129,12 @@
// Remove receiver from intermediate nodes.
for (auto* node : route->via_nodes) {
- node->RemoveReceiver(route->to->GetId());
+ node->RemoveReceiver(route->to->GetPeerLocalAddress());
}
// Detach endpoint from current send node.
if (route->from->GetSendNode()) {
- route->from->GetSendNode()->RemoveReceiver(route->to->GetId());
+ route->from->GetSendNode()->RemoveReceiver(
+ route->to->GetPeerLocalAddress());
route->from->SetSendNode(nullptr);
}
@@ -149,10 +149,10 @@
// Setup a route via specified nodes.
EmulatedNetworkNode* cur_node = via_nodes[0];
for (size_t i = 1; i < via_nodes.size(); ++i) {
- cur_node->SetReceiver(endpoint->GetId(), via_nodes[i]);
+ cur_node->SetReceiver(endpoint->GetPeerLocalAddress(), via_nodes[i]);
cur_node = via_nodes[i];
}
- cur_node->SetReceiver(endpoint->GetId(), endpoint);
+ cur_node->SetReceiver(endpoint->GetPeerLocalAddress(), endpoint);
std::unique_ptr<TrafficRoute> traffic_route =
absl::make_unique<TrafficRoute>(clock_, via_nodes[0], endpoint);
diff --git a/test/scenario/network/traffic_route.cc b/test/scenario/network/traffic_route.cc
index 8af7673..6727a24 100644
--- a/test/scenario/network/traffic_route.cc
+++ b/test/scenario/network/traffic_route.cc
@@ -89,7 +89,7 @@
receiver_->OnPacketReceived(EmulatedIpPacket(
/*from=*/rtc::SocketAddress(),
rtc::SocketAddress(endpoint_->GetPeerLocalAddress(), dest_port),
- endpoint_->GetId(), rtc::CopyOnWriteBuffer(packet_size),
+ rtc::CopyOnWriteBuffer(packet_size),
Timestamp::us(clock_->TimeInMicroseconds())));
}
diff --git a/test/scenario/network_node.cc b/test/scenario/network_node.cc
index a206a5f..e0f8f8e 100644
--- a/test/scenario/network_node.cc
+++ b/test/scenario/network_node.cc
@@ -106,9 +106,8 @@
rtc::CopyOnWriteBuffer buffer(packet, length,
length + packet_overhead_.bytes());
buffer.SetSize(length + packet_overhead_.bytes());
- send_net_->OnPacketReceived(EmulatedIpPacket(
- rtc::SocketAddress() /*from*/, rtc::SocketAddress() /*to*/, receiver_id_,
- buffer, send_time));
+ send_net_->OnPacketReceived(
+ EmulatedIpPacket(local_address_, receiver_address_, buffer, send_time));
return true;
}
@@ -119,34 +118,41 @@
buffer.SetSize(length + packet_overhead_.bytes());
if (!send_net_)
return false;
- send_net_->OnPacketReceived(EmulatedIpPacket(
- rtc::SocketAddress() /*from*/, rtc::SocketAddress() /*to*/, receiver_id_,
- buffer, send_time));
+ send_net_->OnPacketReceived(
+ EmulatedIpPacket(local_address_, receiver_address_, buffer, send_time));
return true;
}
void NetworkNodeTransport::Connect(EmulatedNetworkNode* send_node,
- uint64_t receiver_id,
+ rtc::IPAddress receiver_ip,
DataSize packet_overhead) {
+ // Only IPv4 address is supported. We don't use full range of IPs in scenario
+ // framework and also we need a simple way to convert IP into network_id
+ // to signal network route.
+ RTC_CHECK_EQ(receiver_ip.family(), AF_INET);
+ RTC_CHECK_LE(receiver_ip.v4AddressAsHostOrderInteger(),
+ std::numeric_limits<uint16_t>::max());
rtc::CritScope crit(&crit_sect_);
send_net_ = send_node;
- receiver_id_ = receiver_id;
+ receiver_address_ = rtc::SocketAddress(receiver_ip, 0);
packet_overhead_ = packet_overhead;
rtc::NetworkRoute route;
route.connected = true;
- route.local_network_id = receiver_id;
- route.remote_network_id = receiver_id;
+ route.local_network_id =
+ static_cast<uint16_t>(receiver_ip.v4AddressAsHostOrderInteger());
+ route.remote_network_id =
+ static_cast<uint16_t>(receiver_ip.v4AddressAsHostOrderInteger());
std::string transport_name = "dummy";
sender_call_->GetTransportControllerSend()->OnNetworkRouteChanged(
transport_name, route);
}
CrossTrafficSource::CrossTrafficSource(EmulatedNetworkReceiverInterface* target,
- uint64_t receiver_id,
+ rtc::IPAddress receiver_ip,
CrossTrafficConfig config)
: target_(target),
- receiver_id_(receiver_id),
+ receiver_address_(receiver_ip, 0),
config_(config),
random_(config.random_seed) {}
@@ -179,8 +185,8 @@
pending_size_ += TrafficRate() * delta;
if (pending_size_ > config_.min_packet_size) {
target_->OnPacketReceived(EmulatedIpPacket(
- rtc::SocketAddress() /*from*/, rtc::SocketAddress() /*to*/,
- receiver_id_, rtc::CopyOnWriteBuffer(pending_size_.bytes()), at_time));
+ rtc::SocketAddress() /*from*/, receiver_address_,
+ rtc::CopyOnWriteBuffer(pending_size_.bytes()), at_time));
pending_size_ = DataSize::Zero();
}
}
diff --git a/test/scenario/network_node.h b/test/scenario/network_node.h
index bdaf2fe..71b7de9 100644
--- a/test/scenario/network_node.h
+++ b/test/scenario/network_node.h
@@ -75,7 +75,7 @@
bool SendRtcp(const uint8_t* packet, size_t length) override;
void Connect(EmulatedNetworkNode* send_node,
- uint64_t receiver_id,
+ rtc::IPAddress receiver_ip,
DataSize packet_overhead);
DataSize packet_overhead() {
@@ -87,8 +87,10 @@
rtc::CriticalSection crit_sect_;
Clock* const sender_clock_;
Call* const sender_call_;
+ // Store local address here for consistency with receiver address.
+ const rtc::SocketAddress local_address_;
EmulatedNetworkNode* send_net_ RTC_GUARDED_BY(crit_sect_) = nullptr;
- uint64_t receiver_id_ RTC_GUARDED_BY(crit_sect_) = 0;
+ rtc::SocketAddress receiver_address_ RTC_GUARDED_BY(crit_sect_);
DataSize packet_overhead_ RTC_GUARDED_BY(crit_sect_) = DataSize::Zero();
};
@@ -103,12 +105,12 @@
private:
friend class Scenario;
CrossTrafficSource(EmulatedNetworkReceiverInterface* target,
- uint64_t receiver_id,
+ rtc::IPAddress receiver_ip,
CrossTrafficConfig config);
void Process(Timestamp at_time, TimeDelta delta);
EmulatedNetworkReceiverInterface* const target_;
- const uint64_t receiver_id_;
+ const rtc::SocketAddress receiver_address_;
CrossTrafficConfig config_;
webrtc::Random random_;
diff --git a/test/scenario/scenario.cc b/test/scenario/scenario.cc
index 09e70f0..3e9fd40 100644
--- a/test/scenario/scenario.cc
+++ b/test/scenario/scenario.cc
@@ -155,10 +155,10 @@
void Scenario::ChangeRoute(std::pair<CallClient*, CallClient*> clients,
std::vector<EmulatedNetworkNode*> over_nodes,
DataSize overhead) {
- uint64_t route_id = next_route_id_++;
- clients.second->route_overhead_.insert({route_id, overhead});
- EmulatedNetworkNode::CreateRoute(route_id, over_nodes, clients.second);
- clients.first->transport_->Connect(over_nodes.front(), route_id, overhead);
+ rtc::IPAddress route_ip(next_route_id_++);
+ clients.second->route_overhead_.insert({route_ip, overhead});
+ EmulatedNetworkNode::CreateRoute(route_ip, over_nodes, clients.second);
+ clients.first->transport_->Connect(over_nodes.front(), route_ip, overhead);
}
SimulatedTimeClient* Scenario::CreateSimulatedTimeClient(
@@ -167,11 +167,11 @@
std::vector<PacketStreamConfig> stream_configs,
std::vector<EmulatedNetworkNode*> send_link,
std::vector<EmulatedNetworkNode*> return_link) {
- uint64_t send_id = next_route_id_++;
- uint64_t return_id = next_route_id_++;
+ rtc::IPAddress send_ip(next_route_id_++);
+ rtc::IPAddress return_ip(next_route_id_++);
SimulatedTimeClient* client = new SimulatedTimeClient(
time_controller_.get(), GetLogWriterFactory(name), config, stream_configs,
- send_link, return_link, send_id, return_id, Now());
+ send_link, return_link, send_ip, return_ip, Now());
if (log_writer_factory_ && !name.empty() &&
config.transport.state_log_interval.IsFinite()) {
Every(config.transport.state_log_interval, [this, client]() {
@@ -219,24 +219,24 @@
void Scenario::TriggerPacketBurst(std::vector<EmulatedNetworkNode*> over_nodes,
size_t num_packets,
size_t packet_size) {
- uint64_t route_id = next_route_id_++;
- EmulatedNetworkNode::CreateRoute(route_id, over_nodes, &null_receiver_);
+ rtc::IPAddress route_ip(next_route_id_++);
+ EmulatedNetworkNode::CreateRoute(route_ip, over_nodes, &null_receiver_);
for (size_t i = 0; i < num_packets; ++i)
over_nodes[0]->OnPacketReceived(EmulatedIpPacket(
- rtc::SocketAddress() /*from*/, rtc::SocketAddress(), /*to*/
- route_id, rtc::CopyOnWriteBuffer(packet_size), Now()));
+ rtc::SocketAddress() /*from*/, rtc::SocketAddress(route_ip, 0) /*to*/,
+ rtc::CopyOnWriteBuffer(packet_size), Now()));
}
void Scenario::NetworkDelayedAction(
std::vector<EmulatedNetworkNode*> over_nodes,
size_t packet_size,
std::function<void()> action) {
- uint64_t route_id = next_route_id_++;
+ rtc::IPAddress route_ip(next_route_id_++);
action_receivers_.emplace_back(new ActionReceiver(action));
- EmulatedNetworkNode::CreateRoute(route_id, over_nodes,
+ EmulatedNetworkNode::CreateRoute(route_ip, over_nodes,
action_receivers_.back().get());
over_nodes[0]->OnPacketReceived(EmulatedIpPacket(
- rtc::SocketAddress() /*from*/, rtc::SocketAddress() /*to*/, route_id,
+ rtc::SocketAddress() /*from*/, rtc::SocketAddress(route_ip, 0) /*to*/,
rtc::CopyOnWriteBuffer(packet_size), Now()));
}
@@ -251,11 +251,11 @@
CrossTrafficSource* Scenario::CreateCrossTraffic(
std::vector<EmulatedNetworkNode*> over_nodes,
CrossTrafficConfig config) {
- uint64_t route_id = next_route_id_++;
+ rtc::IPAddress route_ip(next_route_id_++);
cross_traffic_sources_.emplace_back(
- new CrossTrafficSource(over_nodes.front(), route_id, config));
+ new CrossTrafficSource(over_nodes.front(), route_ip, config));
CrossTrafficSource* node = cross_traffic_sources_.back().get();
- EmulatedNetworkNode::CreateRoute(route_id, over_nodes, &null_receiver_);
+ EmulatedNetworkNode::CreateRoute(route_ip, over_nodes, &null_receiver_);
Every(config.min_packet_interval,
[this, node](TimeDelta delta) { node->Process(Now(), delta); });
return node;
diff --git a/test/scenario/simulated_time.cc b/test/scenario/simulated_time.cc
index efc0b72..f808c3a 100644
--- a/test/scenario/simulated_time.cc
+++ b/test/scenario/simulated_time.cc
@@ -112,8 +112,8 @@
}
SimulatedSender::SimulatedSender(EmulatedNetworkNode* send_node,
- uint64_t send_receiver_id)
- : send_node_(send_node), send_receiver_id_(send_receiver_id) {}
+ rtc::IPAddress send_receiver_ip)
+ : send_node_(send_node), send_receiver_address_(send_receiver_ip, 0) {}
SimulatedSender::~SimulatedSender() {}
@@ -203,10 +203,10 @@
}
SimulatedFeedback::SimulatedFeedback(SimulatedTimeClientConfig config,
- uint64_t return_receiver_id,
+ rtc::IPAddress return_receiver_ip,
EmulatedNetworkNode* return_node)
: config_(config),
- return_receiver_id_(return_receiver_id),
+ return_receiver_address_(return_receiver_ip, 0),
return_node_(return_node) {}
// Polls receiver side for a feedback report and sends it to the stream sender
@@ -231,14 +231,14 @@
if (report.receive_times.size() >=
RawFeedbackReportPacket::MAX_FEEDBACKS) {
return_node_->OnPacketReceived(
- EmulatedIpPacket(packet.to, packet.from, return_receiver_id_,
+ EmulatedIpPacket(packet.to, return_receiver_address_,
FeedbackToBuffer(report), packet.arrival_time));
report = SimpleFeedbackReportPacket();
}
}
if (!report.receive_times.empty())
return_node_->OnPacketReceived(
- EmulatedIpPacket(packet.to, packet.from, return_receiver_id_,
+ EmulatedIpPacket(packet.to, return_receiver_address_,
FeedbackToBuffer(report), packet.arrival_time));
last_feedback_time_ = packet.arrival_time;
}
@@ -251,8 +251,8 @@
std::vector<PacketStreamConfig> stream_configs,
std::vector<EmulatedNetworkNode*> send_link,
std::vector<EmulatedNetworkNode*> return_link,
- uint64_t send_receiver_id,
- uint64_t return_receiver_id,
+ rtc::IPAddress send_receiver_ip,
+ rtc::IPAddress return_receiver_ip,
Timestamp at_time)
: log_writer_factory_(std::move(log_writer_factory)),
network_controller_factory_(time_controller,
@@ -260,8 +260,8 @@
config.transport),
send_link_(send_link),
return_link_(return_link),
- sender_(send_link.front(), send_receiver_id),
- feedback_(config, return_receiver_id, return_link.front()) {
+ sender_(send_link.front(), send_receiver_ip),
+ feedback_(config, return_receiver_ip, return_link.front()) {
current_contraints_.at_time = at_time;
current_contraints_.starting_rate = config.transport.rates.start_rate;
current_contraints_.min_data_rate = config.transport.rates.min_rate;
@@ -273,8 +273,8 @@
congestion_controller_ = network_controller_factory_.Create(initial_config);
for (auto& stream_config : stream_configs)
packet_streams_.emplace_back(new PacketStream(stream_config));
- EmulatedNetworkNode::CreateRoute(send_receiver_id, send_link, &feedback_);
- EmulatedNetworkNode::CreateRoute(return_receiver_id, return_link, this);
+ EmulatedNetworkNode::CreateRoute(send_receiver_ip, send_link, &feedback_);
+ EmulatedNetworkNode::CreateRoute(return_receiver_ip, return_link, this);
CongestionProcess(at_time);
network_controller_factory_.LogCongestionControllerStats(at_time);
@@ -331,8 +331,8 @@
ProcessFrames(at_time);
for (const auto& to_send : sender_.PaceAndPullSendPackets(at_time)) {
sender_.send_node_->OnPacketReceived(EmulatedIpPacket(
- rtc::SocketAddress() /*from*/, rtc::SocketAddress() /*to*/,
- sender_.send_receiver_id_, to_send.data, at_time));
+ rtc::SocketAddress() /*from*/, sender_.send_receiver_address_,
+ to_send.data, at_time));
Update(congestion_controller_->OnSentPacket(to_send.send_info));
}
}
diff --git a/test/scenario/simulated_time.h b/test/scenario/simulated_time.h
index 9214a8d..05ff887 100644
--- a/test/scenario/simulated_time.h
+++ b/test/scenario/simulated_time.h
@@ -50,7 +50,7 @@
class SimulatedFeedback : EmulatedNetworkReceiverInterface {
public:
SimulatedFeedback(SimulatedTimeClientConfig config,
- uint64_t return_receiver_id,
+ rtc::IPAddress return_receiver_ip,
EmulatedNetworkNode* return_node);
void OnPacketReceived(EmulatedIpPacket packet) override;
@@ -58,7 +58,7 @@
private:
friend class SimulatedTimeClient;
const SimulatedTimeClientConfig config_;
- const uint64_t return_receiver_id_;
+ const rtc::SocketAddress return_receiver_address_;
EmulatedNetworkNode* return_node_;
Timestamp last_feedback_time_ = Timestamp::MinusInfinity();
int32_t next_feedback_seq_num_ = 1;
@@ -88,7 +88,8 @@
int64_t size;
};
- SimulatedSender(EmulatedNetworkNode* send_node, uint64_t send_receiver_id);
+ SimulatedSender(EmulatedNetworkNode* send_node,
+ rtc::IPAddress send_receiver_ip);
SimulatedSender(const SimulatedSender&) = delete;
~SimulatedSender();
TransportPacketsFeedback PullFeedbackReport(SimpleFeedbackReportPacket report,
@@ -99,7 +100,7 @@
private:
friend class SimulatedTimeClient;
EmulatedNetworkNode* send_node_;
- uint64_t send_receiver_id_;
+ const rtc::SocketAddress send_receiver_address_;
PacerConfig pacer_config_;
DataSize max_in_flight_ = DataSize::Infinity();
@@ -127,8 +128,8 @@
std::vector<PacketStreamConfig> stream_configs,
std::vector<EmulatedNetworkNode*> send_link,
std::vector<EmulatedNetworkNode*> return_link,
- uint64_t send_receiver_id,
- uint64_t return_receiver_id,
+ rtc::IPAddress send_receiver_ip,
+ rtc::IPAddress return_receiver_ip,
Timestamp at_time);
SimulatedTimeClient(const SimulatedTimeClient&) = delete;
~SimulatedTimeClient();