You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by ma...@apache.org on 2018/01/10 03:32:21 UTC
[trafficserver] branch quic-latest updated: Retransmit all lost
packets without congestion control
This is an automated email from the ASF dual-hosted git repository.
maskit pushed a commit to branch quic-latest
in repository https://gitbox.apache.org/repos/asf/trafficserver.git
The following commit(s) were added to refs/heads/quic-latest by this push:
new 56b8ac2 Retransmit all lost packets without congestion control
56b8ac2 is described below
commit 56b8ac248f8c45cf63154db896041794a224c67a
Author: Masakazu Kitajo <ma...@apache.org>
AuthorDate: Wed Jan 10 12:31:35 2018 +0900
Retransmit all lost packets without congestion control
---
iocore/net/QUICNetVConnection.cc | 1 +
iocore/net/quic/QUICLossDetector.cc | 15 +++++++++++++++
iocore/net/quic/QUICLossDetector.h | 1 +
3 files changed, 17 insertions(+)
diff --git a/iocore/net/QUICNetVConnection.cc b/iocore/net/QUICNetVConnection.cc
index 770ebc6..8744bff 100644
--- a/iocore/net/QUICNetVConnection.cc
+++ b/iocore/net/QUICNetVConnection.cc
@@ -786,6 +786,7 @@ QUICNetVConnection::_packetize_frames()
QUICFrameUPtr frame(nullptr, nullptr);
bool retransmittable = false;
+ SCOPED_MUTEX_LOCK(packet_transmitter_lock, this->_packet_transmitter_mutex, this_ethread());
SCOPED_MUTEX_LOCK(frame_transmitter_lock, this->_frame_transmitter_mutex, this_ethread());
QUICFrameUPtr ack_frame = QUICFrameFactory::create_null_ack_frame();
diff --git a/iocore/net/quic/QUICLossDetector.cc b/iocore/net/quic/QUICLossDetector.cc
index 3b793ba..8b55569 100644
--- a/iocore/net/quic/QUICLossDetector.cc
+++ b/iocore/net/quic/QUICLossDetector.cc
@@ -325,6 +325,7 @@ QUICLossDetector::_on_loss_detection_alarm()
void
QUICLossDetector::_detect_lost_packets(QUICPacketNumber largest_acked_packet_number)
{
+ SCOPED_MUTEX_LOCK(transmitter_lock, this->_transmitter->get_packet_transmitter_mutex().get(), this_ethread());
SCOPED_MUTEX_LOCK(lock, this->mutex, this_ethread());
this->_loss_time = 0;
std::map<QUICPacketNumber, PacketInfo &> lost_packets;
@@ -357,6 +358,12 @@ QUICLossDetector::_detect_lost_packets(QUICPacketNumber largest_acked_packet_num
if (!lost_packets.empty()) {
this->_cc->on_packets_lost(lost_packets);
for (auto lost_packet : lost_packets) {
+ // ADDITIONAL CODE
+ // Not sure how we can get feedback from congestion control and when we should retransmit the lost packets but we need to send
+ // them somewhere.
+ // I couldn't find the place so just send them here for now.
+ this->_retransmit_lost_packet(*lost_packet.second.packet);
+ // END OF ADDITIONAL CODE
this->_remove_from_sent_packet_list(lost_packet.first);
}
}
@@ -416,6 +423,14 @@ QUICLossDetector::_send_two_packets()
// ===== Functions below are helper functions =====
+void
+QUICLossDetector::_retransmit_lost_packet(const QUICPacket &packet)
+{
+ SCOPED_MUTEX_LOCK(transmitter_lock, this->_transmitter->get_packet_transmitter_mutex().get(), this_ethread());
+ SCOPED_MUTEX_LOCK(lock, this->mutex, this_ethread());
+ this->_transmitter->retransmit_packet(packet);
+}
+
std::set<QUICPacketNumber>
QUICLossDetector::_determine_newly_acked_packets(const QUICAckFrame &ack_frame)
{
diff --git a/iocore/net/quic/QUICLossDetector.h b/iocore/net/quic/QUICLossDetector.h
index 94b707d..6b253c9 100644
--- a/iocore/net/quic/QUICLossDetector.h
+++ b/iocore/net/quic/QUICLossDetector.h
@@ -125,6 +125,7 @@ private:
void _detect_lost_packets(QUICPacketNumber largest_acked);
void _set_loss_detection_alarm();
void _on_loss_detection_alarm();
+ void _retransmit_lost_packet(const QUICPacket &packet);
std::set<QUICPacketNumber> _determine_newly_acked_packets(const QUICAckFrame &ack_frame);
--
To stop receiving notification emails like this one, please contact
['"commits@trafficserver.apache.org" <co...@trafficserver.apache.org>'].