Documentation
¶
Index ¶
- Variables
- type ConnStats
- type DelayedPacketReceiver
- type FixedLatencyRouter
- type LinkSettings
- type NodeBiDiLinkSettings
- type Packet
- type PacketReceiver
- type PerfectRouter
- type Router
- type SimConn
- func (c *SimConn) Close() error
- func (c *SimConn) LocalAddr() net.Addr
- func (c *SimConn) ReadFrom(p []byte) (n int, addr net.Addr, err error)
- func (c *SimConn) RecvPacket(p Packet)
- func (c *SimConn) SetDeadline(t time.Time) error
- func (c *SimConn) SetReadBuffer(n int) error
- func (c *SimConn) SetReadDeadline(t time.Time) error
- func (c *SimConn) SetWriteBuffer(n int) error
- func (c *SimConn) SetWriteDeadline(t time.Time) error
- func (c *SimConn) Stats() ConnStats
- func (c *SimConn) UnicastAddr() net.Addr
- func (c *SimConn) WriteTo(p []byte, addr net.Addr) (n int, err error)
- type Simnet
- type SimulatedLink
Constants ¶
This section is empty.
Variables ¶
var ErrDeadlineExceeded = errors.New("deadline exceeded")
Functions ¶
This section is empty.
Types ¶
type DelayedPacketReceiver ¶
type DelayedPacketReceiver struct {
// contains filtered or unexported fields
}
func (*DelayedPacketReceiver) RecvPacket ¶
func (r *DelayedPacketReceiver) RecvPacket(p Packet)
type FixedLatencyRouter ¶
type FixedLatencyRouter struct {
PerfectRouter
// contains filtered or unexported fields
}
func (*FixedLatencyRouter) AddNode ¶
func (r *FixedLatencyRouter) AddNode(addr net.Addr, conn PacketReceiver)
func (*FixedLatencyRouter) SendPacket ¶
func (r *FixedLatencyRouter) SendPacket(p Packet) error
type LinkSettings ¶
type LinkSettings struct {
// MTU (Maximum Transmission Unit) specifies the maximum packet size in bytes
MTU int
}
LinkSettings defines the network characteristics for a simulated link direction
type NodeBiDiLinkSettings ¶
type NodeBiDiLinkSettings struct {
// Downlink configures the settings for incoming traffic to this node
Downlink LinkSettings
// Uplink configures the settings for outgoing traffic from this node
Uplink LinkSettings
// Latency specifies a fixed network delay for downlink packets only
// If both Latency and LatencyFunc are set, LatencyFunc takes precedence
Latency time.Duration
// LatencyFunc computes the network delay for each downlink packet
// This allows variable latency based on packet source/destination
// If nil, Latency field is used instead
LatencyFunc func(Packet) time.Duration
}
NodeBiDiLinkSettings defines the bidirectional link settings for a network node. It specifies separate configurations for downlink (incoming) and uplink (outgoing) traffic, allowing asymmetric network conditions to be simulated.
type PacketReceiver ¶
type PacketReceiver interface {
RecvPacket(p Packet)
}
type PerfectRouter ¶
type PerfectRouter struct {
// contains filtered or unexported fields
}
PerfectRouter is a router that has no latency or jitter and can route to every node
func (*PerfectRouter) AddNode ¶
func (r *PerfectRouter) AddNode(addr net.Addr, conn PacketReceiver)
func (*PerfectRouter) RemoveNode ¶
func (r *PerfectRouter) RemoveNode(addr net.Addr)
func (*PerfectRouter) SendPacket ¶
func (r *PerfectRouter) SendPacket(p Packet) error
SendPacket implements Router.
type Router ¶
type Router interface {
SendPacket(p Packet) error
AddNode(addr net.Addr, receiver PacketReceiver)
}
Router handles routing of packets between simulated connections. Implementations are responsible for delivering packets to their destinations.
type SimConn ¶
type SimConn struct {
// contains filtered or unexported fields
}
SimConn is a simulated network connection that implements net.PacketConn. It provides packet-based communication through a Router for testing and simulation purposes. All send/recv operations are handled through the Router's packet delivery mechanism.
func NewBlockingSimConn ¶
NewBlockingSimConn creates a new simulated connection that blocks if the receive buffer is full. Does not drop packets.
func NewSimConn ¶
NewSimConn creates a new simulated connection that drops packets if the receive buffer is full.
func (*SimConn) RecvPacket ¶
func (*SimConn) SetReadBuffer ¶
SetReadBuffer only exists to quell the warning message from quic-go
func (*SimConn) SetWriteBuffer ¶
SetWriteBuffer only exists to quell the warning message from quic-go
func (*SimConn) UnicastAddr ¶
type Simnet ¶
type Simnet struct {
Router Router
// contains filtered or unexported fields
}
Simnet is a simulated network that manages connections between nodes with configurable network conditions.
func (*Simnet) NewEndpoint ¶
func (n *Simnet) NewEndpoint(addr *net.UDPAddr, linkSettings NodeBiDiLinkSettings) *SimConn
type SimulatedLink ¶
type SimulatedLink struct {
// Configuration for link characteristics
UplinkSettings LinkSettings
DownlinkSettings LinkSettings
// Latency specifies a fixed network delay for downlink packets
// If both Latency and LatencyFunc are set, LatencyFunc takes precedence
Latency time.Duration
// LatencyFunc computes the network delay for each downlink packet
// This allows variable latency based on packet source/destination
// If nil, Latency field is used instead
LatencyFunc func(Packet) time.Duration
// Packet routing interfaces
UploadPacket Router
// contains filtered or unexported fields
}
SimulatedLink simulates a bidirectional network link with variable latency and MTU constraints
func (*SimulatedLink) AddNode ¶
func (l *SimulatedLink) AddNode(addr net.Addr, receiver PacketReceiver)
func (*SimulatedLink) Close ¶
func (l *SimulatedLink) Close() error
func (*SimulatedLink) RecvPacket ¶
func (l *SimulatedLink) RecvPacket(p Packet)
func (*SimulatedLink) SendPacket ¶
func (l *SimulatedLink) SendPacket(p Packet) error
func (*SimulatedLink) Start ¶
func (l *SimulatedLink) Start()