Help us shape the future of Go! Take the 2026 Go Developer Survey

sendsidebwe

package
v1.13.11 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 25, 2026 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	DefaultSendSideBWEConfig = SendSideBWEConfig{
		CongestionDetector: defaultCongestionDetectorConfig,
	}
)

Functions

This section is empty.

Types

type CongestionDetectorConfig

type CongestionDetectorConfig struct {
	PacketGroup       PacketGroupConfig `yaml:"packet_group,omitempty"`
	PacketGroupMaxAge time.Duration     `yaml:"packet_group_max_age,omitempty"`

	ProbePacketGroup ProbePacketGroupConfig       `yaml:"probe_packet_group,omitempty"`
	ProbeRegulator   ccutils.ProbeRegulatorConfig `yaml:"probe_regulator,omitempty"`
	ProbeSignal      ProbeSignalConfig            `yaml:"probe_signal,omitempty"`

	JQRMinDelay            time.Duration `yaml:"jqr_min_delay,omitempty"`
	JQRMinTrendCoefficient float64       `yaml:"jqr_min_trend_coefficient,omitempty"`
	DQRMaxDelay            time.Duration `yaml:"dqr_max_delay,omitempty"`

	WeightedLoss       WeightedLossConfig `yaml:"weighted_loss,omitempty"`
	JQRMinWeightedLoss float64            `yaml:"jqr_min_weighted_loss,omitempty"`
	DQRMaxWeightedLoss float64            `yaml:"dqr_max_weighted_loss,omitempty"`

	QueuingDelayEarlyWarningJQR CongestionSignalConfig `yaml:"queuing_delay_early_warning_jqr,omitempty"`
	QueuingDelayEarlyWarningDQR CongestionSignalConfig `yaml:"queuing_delay_early_warning_dqr,omitempty"`
	LossEarlyWarningJQR         CongestionSignalConfig `yaml:"loss_early_warning_jqr,omitempty"`
	LossEarlyWarningDQR         CongestionSignalConfig `yaml:"loss_early_warning_dqr,omitempty"`

	QueuingDelayCongestedJQR CongestionSignalConfig `yaml:"queuing_delay_congested_jqr,omitempty"`
	QueuingDelayCongestedDQR CongestionSignalConfig `yaml:"queuing_delay_congested_dqr,omitempty"`
	LossCongestedJQR         CongestionSignalConfig `yaml:"loss_congested_jqr,omitempty"`
	LossCongestedDQR         CongestionSignalConfig `yaml:"loss_congested_dqr,omitempty"`

	CongestedCTRTrend    ccutils.TrendDetectorConfig `yaml:"congested_ctr_trend,omitempty"`
	CongestedCTREpsilon  float64                     `yaml:"congested_ctr_epsilon,omitempty"`
	CongestedPacketGroup PacketGroupConfig           `yaml:"congested_packet_group,omitempty"`

	EstimationWindowDuration time.Duration `yaml:"estimaton_window_duration,omitempty"`
}

type CongestionSignalConfig

type CongestionSignalConfig struct {
	MinNumberOfGroups int           `yaml:"min_number_of_groups,omitempty"`
	MinDuration       time.Duration `yaml:"min_duration,omitempty"`
}

func (CongestionSignalConfig) IsTriggered

func (c CongestionSignalConfig) IsTriggered(numGroups int, duration int64) bool

type PacketGroupConfig

type PacketGroupConfig struct {
	MinPackets        int           `yaml:"min_packets,omitempty"`
	MaxWindowDuration time.Duration `yaml:"max_window_duration,omitempty"`
}

type ProbePacketGroupConfig

type ProbePacketGroupConfig struct {
	PacketGroup PacketGroupConfig `yaml:"packet_group,omitempty"`

	SettleWaitNumRTT uint32        `yaml:"settle_wait_num_rtt,omitempty"`
	SettleWaitMin    time.Duration `yaml:"settle_wait_min,omitempty"`
	SettleWaitMax    time.Duration `yaml:"settle_wait_max,omitempty"`
}

type ProbeSignalConfig

type ProbeSignalConfig struct {
	MinBytesRatio    float64 `yaml:"min_bytes_ratio,omitempty"`
	MinDurationRatio float64 `yaml:"min_duration_ratio,omitempty"`

	JQRMinDelay time.Duration `yaml:"jqr_min_delay,omitempty"`
	DQRMaxDelay time.Duration `yaml:"dqr_max_delay,omitempty"`

	WeightedLoss       WeightedLossConfig `yaml:"weighted_loss,omitempty"`
	JQRMinWeightedLoss float64            `yaml:"jqr_min_weighted_loss,omitempty"`
	DQRMaxWeightedLoss float64            `yaml:"dqr_max_weighted_loss,omitempty"`
}

func (ProbeSignalConfig) IsValid

func (ProbeSignalConfig) ProbeSignal

func (p ProbeSignalConfig) ProbeSignal(ppg *probePacketGroup) (ccutils.ProbeSignal, int64)

type SendSideBWE

type SendSideBWE struct {
	bwe.NullBWE
	// contains filtered or unexported fields
}

func NewSendSideBWE

func NewSendSideBWE(params SendSideBWEParams) *SendSideBWE

func (*SendSideBWE) CanProbe

func (s *SendSideBWE) CanProbe() bool

func (*SendSideBWE) CongestionState

func (s *SendSideBWE) CongestionState() bwe.CongestionState

func (*SendSideBWE) HandleTWCCFeedback

func (s *SendSideBWE) HandleTWCCFeedback(report *rtcp.TransportLayerCC)

func (*SendSideBWE) ProbeClusterDone

func (s *SendSideBWE) ProbeClusterDone(pci ccutils.ProbeClusterInfo)

func (*SendSideBWE) ProbeClusterFinalize

func (s *SendSideBWE) ProbeClusterFinalize() (ccutils.ProbeSignal, int64, bool)

func (*SendSideBWE) ProbeClusterIsGoalReached

func (s *SendSideBWE) ProbeClusterIsGoalReached() bool

func (*SendSideBWE) ProbeClusterStarting

func (s *SendSideBWE) ProbeClusterStarting(pci ccutils.ProbeClusterInfo)

func (*SendSideBWE) ProbeDuration

func (s *SendSideBWE) ProbeDuration() time.Duration

func (*SendSideBWE) RecordPacketSendAndGetSequenceNumber

func (s *SendSideBWE) RecordPacketSendAndGetSequenceNumber(
	atMicro int64,
	size int,
	isRTX bool,
	probeClusterId ccutils.ProbeClusterId,
	isProbe bool,
) uint16

func (*SendSideBWE) Reset

func (s *SendSideBWE) Reset()

func (*SendSideBWE) SetBWEListener

func (s *SendSideBWE) SetBWEListener(bweListener bwe.BWEListener)

func (*SendSideBWE) Type added in v1.9.1

func (s *SendSideBWE) Type() bwe.BWEType

func (*SendSideBWE) UpdateRTT

func (s *SendSideBWE) UpdateRTT(rtt float64)

type SendSideBWEConfig

type SendSideBWEConfig struct {
	CongestionDetector CongestionDetectorConfig `yaml:"congestion_detector,omitempty"`
}

type SendSideBWEParams

type SendSideBWEParams struct {
	Config SendSideBWEConfig
	Logger logger.Logger
}

type WeightedLossConfig

type WeightedLossConfig struct {
	MinDurationForLossValidity time.Duration `yaml:"min_duration_for_loss_validity,omitempty"`
	BaseDuration               time.Duration `yaml:"base_duration,omitempty"`
	BasePPS                    int           `yaml:"base_pps,omitempty"`
	LossPenaltyFactor          float64       `yaml:"loss_penalty_factor,omitempty"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL