Skip to content
This repository has been archived by the owner on Sep 3, 2024. It is now read-only.

Commit

Permalink
Merge pull request #150 from Quicr/tievens-0603
Browse files Browse the repository at this point in the history
Update picoquic to latest and add transport config for priority bypass
  • Loading branch information
TimEvens authored Jun 3, 2024
2 parents 1d13a36 + a2d477a commit f6c5a47
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 2 deletions.
1 change: 1 addition & 0 deletions include/transport/transport.h
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ struct TransportConfig
const bool use_reset_wait_strategy { true }; /// Use Reset and wait strategy for congestion control
const bool use_bbr { true }; /// Use BBR if true, NewReno if false
const char* quic_qlog_path; /// QUIC LOG file location path, trivially copyable null terminated string
const uint8_t quic_priority_limit { 0 }; /// Lowest priority that will not be bypassed from pacing/CC in picoquic
};

using time_stamp_us = std::chrono::time_point<std::chrono::steady_clock, std::chrono::microseconds>;
Expand Down
13 changes: 12 additions & 1 deletion src/transport_picoquic.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -486,7 +486,6 @@ PicoQuicTransport::start(std::shared_ptr<safe_queue<MetricsConnSample>> metrics_
picoquic_set_default_priority(quic_ctx, 2);
picoquic_set_default_datagram_priority(quic_ctx, 1);


logger->info << "Setting idle timeout to " << tconfig.idle_timeout_ms << "ms" << std::flush;
//picoquic_set_default_wifi_shadow_rtt(quic_ctx, tconfig.quic_wifi_shadow_rtt_us);
//logger->info << "Setting wifi shadow RTT to " << tconfig.quic_wifi_shadow_rtt_us << "us" << std::flush;
Expand Down Expand Up @@ -1265,6 +1264,11 @@ PicoQuicTransport::on_new_connection(const TransportConnId conn_id)
picoquic_enable_keep_alive(conn_ctx->pq_cnx, tconfig.idle_timeout_ms * 500);
picoquic_set_feedback_loss_notification(conn_ctx->pq_cnx, 1);

if (tconfig.quic_priority_limit > 0) {
logger->info << "Setting priority bypass limit to " << static_cast<int>(tconfig.quic_priority_limit) << std::flush;
picoquic_set_priority_limit_for_bypass(conn_ctx->pq_cnx, tconfig.quic_priority_limit);
}

cbNotifyQueue.push([=, this]() { delegate.on_new_connection(conn_id, remote); });
}

Expand Down Expand Up @@ -1613,6 +1617,13 @@ TransportConnId PicoQuicTransport::createClient()
picoquic_set_transport_parameters(cnx, &local_tp_options);
picoquic_set_feedback_loss_notification(cnx, 1);

if (tconfig.quic_priority_limit > 0) {
logger->info << "Setting priority bypass limit to " << static_cast<int>(tconfig.quic_priority_limit) << std::flush;
picoquic_set_priority_limit_for_bypass(cnx, tconfig.quic_priority_limit);
} else {
logger->info << "No priority bypass" << std::endl;
}

// picoquic_subscribe_pacing_rate_updates(cnx, tconfig.pacing_decrease_threshold_Bps,
// tconfig.pacing_increase_threshold_Bps);

Expand Down

0 comments on commit f6c5a47

Please sign in to comment.