transfertrace

package
v0.18.2 Latest Latest
Warning

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

Go to latest
Published: Aug 16, 2026 License: BSD-3-Clause Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Header = append([]string(nil), header[:]...)
View Source
var HeaderLine = strings.Join(header[:], ",")

Functions

This section is empty.

Types

type DiagnosticsSummary added in v0.15.0

type DiagnosticsSummary struct {
	MaxRateTargetMbps              int
	MinRateTargetMbps              int
	FinalRateTargetMbps            int
	ControllerDecreases            int
	FinalRepairBytes               int64
	LocalENOBUFSRetries            int64
	LocalENOBUFSWaitUS             int64
	LocalENOBUFSMaxConsecutive     int64
	MaxReplayBytes                 uint64
	MaxRetransmits                 int64
	MaxPeerRecvQueueDepth          int
	MaxStripedSendBlockedMS        int64
	MaxStripedReceivePendingChunks int
	MaxStripedReceivePendingBytes  int64
	DirectTransport                string
	ReceiverCommittedMbpsMin       float64
	ReceiverCommittedMbpsMax       float64
	ReceiverCommittedMbpsObserved  bool
	ReceiverRateP10Mbps            float64
	ReceiverRateP50Mbps            float64
	ReceiverRateP90Mbps            float64
	ReceiverRateCV                 float64
	ReceiverWindowsBelow500Mbps    int
	ReceiverRateObserved           bool
	MissingScanChecks              uint64
	PendingMissing                 uint32
	PendingMissingPeak             uint32
	RepairRequestedPackets         uint64
	RepairRequestBatches           uint64
	ReorderTrailPackets            uint32
	ReceivePacketRatePPS           uint32
	ReceiverRepairObserved         bool
	SenderHealthObserved           bool
}

type FilePayloadEngine added in v0.17.0

type FilePayloadEngine string
const (
	FilePayloadEngineBulk FilePayloadEngine = "bulk-packets-v1"
	FilePayloadEngineQUIC FilePayloadEngine = "quic-blocks-v1"
)

func ParseFilePayloadEngine added in v0.17.0

func ParseFilePayloadEngine(value string) (FilePayloadEngine, error)

func (FilePayloadEngine) Valid added in v0.17.0

func (e FilePayloadEngine) Valid() bool

type Options

type Options struct {
	Role                       Role
	StallWindow                time.Duration
	ExpectedBytes              int64
	ExpectedBytesSet           bool
	ExpectedPayloadBytes       int64
	ExpectedPayloadBytesSet    bool
	RequireDirectTransport     string
	RequireFilePayloadEngine   FilePayloadEngine
	RequireEngineTelemetry     bool
	ExpectedSelectedPublicIPv4 string
	ForbidRelayPayload         bool
}

type PairOptions added in v0.14.0

type PairOptions struct {
	Role                       Role
	PeerRole                   Role
	RateTolerance              float64
	ProgressLeadToleranceBytes int64
}

type PairResult added in v0.14.0

type PairResult struct {
	PrimaryRows          int
	PeerRows             int
	ProgressDeltaBytes   int64
	MaxProgressLeadBytes int64
	SenderRateMbps       float64
	ReceiverRateMbps     float64
}

func CheckPair added in v0.14.0

func CheckPair(primary io.Reader, peer io.Reader, opts PairOptions) (PairResult, error)

type Phase

type Phase string
const (
	PhaseClaim         Phase = "claim"
	PhaseRelay         Phase = "relay"
	PhaseDirectPrepare Phase = "direct_prepare"
	PhaseDirectProbe   Phase = "direct_probe"
	PhaseDirectExecute Phase = "direct_execute"
	PhaseOverlap       Phase = "overlap"
	PhaseComplete      Phase = "complete"
	PhaseError         Phase = "error"
)

type Recorder

type Recorder struct {
	// contains filtered or unexported fields
}

func NewRecorder

func NewRecorder(out io.Writer, role Role, start time.Time) (*Recorder, error)

func (*Recorder) Close

func (r *Recorder) Close() error

func (*Recorder) Complete

func (r *Recorder) Complete(at time.Time)

func (*Recorder) Error

func (r *Recorder) Error(at time.Time, message string)

func (*Recorder) Observe

func (r *Recorder) Observe(snap Snapshot)

func (*Recorder) Run

func (r *Recorder) Run(ctxDone <-chan struct{}, interval time.Duration, now func() time.Time)

Run records ticks until ctxDone is closed. Close flushes and prevents future writes, but it does not stop a running Run loop.

func (*Recorder) Tick

func (r *Recorder) Tick(at time.Time)

func (*Recorder) Update

func (r *Recorder) Update(update func(*Snapshot))

Update copies the current snapshot, calls update while holding Recorder.mu, and stores the mutated snapshot without recording a CSV row. The callback must be fast, non-blocking, and must not call Recorder methods.

type Result

type Result struct {
	Rows                          int
	FinalAppBytes                 int64
	FinalFilePayloadBytes         int64
	FinalFilePayloadEngine        FilePayloadEngine
	FinalFilePayloadBytesBulk     int64
	FinalFilePayloadBytesQUIC     int64
	FinalFilePayloadLaneAddresses []string
	FinalPhase                    Phase
	MaxFlatline                   time.Duration
	Diagnostics                   DiagnosticsSummary
}

func Check

func Check(r io.Reader, opts Options) (Result, error)

type Role

type Role string
const (
	RoleSend    Role = "send"
	RoleReceive Role = "receive"
)

type Snapshot

type Snapshot struct {
	At                         time.Time
	Phase                      Phase
	RelayBytes                 int64
	DirectBytes                int64
	AppBytes                   int64
	LocalSentBytes             int64
	PeerReceivedBytes          int64
	SetupElapsedMS             int64
	TransferElapsedMS          int64
	DirectValidated            bool
	FallbackReason             string
	DirectRateSelectedMbps     int
	DirectRateActiveMbps       int
	DirectLanesActive          int
	DirectLanesAvailable       int
	RateTargetMbps             int
	RateCeilingMbps            int
	RateExplorationCeilingMbps int
	LaneMin                    int
	LaneCap                    int
	ControllerDecision         string
	ControllerReason           string
	DirectProbeState           string
	DirectProbeSummary         string
	ReplayWindowBytes          uint64
	ReplayBytes                uint64
	RepairQueueBytes           uint64
	RetransmitCount            int64
	RepairRequests             int64
	RepairBytes                int64
	LocalENOBUFSRetries        int64
	LocalENOBUFSWaitUS         int64
	LocalENOBUFSMaxConsecutive int64
	OutOfOrderBytes            uint64
	PeerRecvQueueDepth         int
	PeerRecvQueueDepthMax      int

	StripedSendBlockedMS           int64
	StripedReceivePendingChunks    int
	StripedReceivePendingChunksMax int
	StripedReceivePendingBytes     int64
	StripedReceivePendingBytesMax  int64

	DirectPacketBytes              int64
	DirectCommittedBytes           int64
	DirectTransport                string
	QUICTelemetryPresent           bool
	QUICConnections                uint32
	QUICStreams                    uint32
	QUICVersion                    string
	QUICRawSocketBackend           string
	QUICNativeSendBackend          string
	QUICNativeReceiveBackend       string
	QUICHandshakeMS                int64
	QUICFirstByteMS                int64
	QUICSmoothedRTTMS              string
	QUICPacketsSent                uint64
	QUICPacketsReceived            uint64
	QUICPacketsLost                uint64
	QUICWireBytesSent              uint64
	QUICRecoveryWireBytes          uint64
	QUICRecoveryRatio              string
	QUICStreamBytesSent            int64
	QUICStreamBytesReceived        int64
	QUICStreamGoodputMbps          string
	QUICCloseReason                string
	QUICNativeGSO                  string
	QUICNativeReceiveBatch         string
	FileSourceReadCalls            uint64
	FileSourceReadBytes            uint64
	MissingScanChecks              uint64
	PendingMissing                 uint32
	PendingMissingPeak             uint32
	RepairRequestedPackets         uint64
	RepairRequestBatches           uint64
	ReorderTrailPackets            uint32
	ReceivePacketRatePPS           uint32
	FilePayloadEngine              FilePayloadEngine
	FilePayloadBytesCommitted      int64
	FilePayloadBytesBulk           int64
	FilePayloadBytesQUIC           int64
	FilePayloadLaneAddresses       string
	BulkBatchPresent               bool
	BulkCandidateID                string
	BulkNativeSendAttempts         uint64
	BulkNativeSendSyscalls         uint64
	BulkNativeGSOMessages          uint64
	BulkLogicalDatagrams           uint64
	BulkNativeAcceptedPayloadBytes uint64
	BulkGSOSegmentsPerMessage      uint32
	BulkBatchBackend               string
	BulkGSOAttempted               bool
	BulkGSOActive                  bool
	BulkGSOSegments                uint64
	BulkSendCalls                  uint64
	BulkSendDatagrams              uint64
	BulkReceiveCalls               uint64
	BulkReceiveDatagrams           uint64
	BulkMaxSendBatch               uint32
	BulkMaxReceiveBatch            uint32
	BulkCryptoQueuePeak            uint32
	BulkWriterQueuePeak            uint32
	BulkLaneQueuePeak              uint32
	BulkReceiveQueuePeak           uint32
	BulkDecryptBatches             uint64
	BulkDecryptDatagrams           uint64
	BulkProbeSelectedMbps          int
	BulkProbeDurationMS            int64
	BulkProbeTrains                uint32
	BulkProbeSentDatagrams         uint64
	BulkProbeReceivedDatagrams     uint64
	BulkProbeLossPPM               uint64
	BulkProbePressure              bool
	BulkProbeStopReason            string
	BulkDecisionMode               string
	BulkDecisionReason             string
	BulkDecisionRunID              uint64
	BulkProbeRejectStage           string
	BulkHandoffDrainedDatagrams    uint64
	BulkHandoffDrainDurationMS     int64
	LastState                      string
	LastError                      string
}

Jump to

Keyboard shortcuts

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