sendsidebwe

package
v1.8.2 Latest Latest
Warning

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

Go to latest
Published: Jan 6, 2025 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"`
	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) 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