github.com/MetalBlockchain/metalgo@v1.11.9/utils/constants/networking.go (about)

     1  // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved.
     2  // See the file LICENSE for licensing terms.
     3  
     4  package constants
     5  
     6  import (
     7  	"time"
     8  
     9  	"github.com/MetalBlockchain/metalgo/utils/compression"
    10  	"github.com/MetalBlockchain/metalgo/utils/units"
    11  )
    12  
    13  const (
    14  	// The network must be "tcp", "tcp4", "tcp6", "unix" or "unixpacket".
    15  	NetworkType = "tcp"
    16  
    17  	DefaultMaxMessageSize  = 2 * units.MiB
    18  	DefaultPingPongTimeout = 30 * time.Second
    19  	DefaultPingFrequency   = 3 * DefaultPingPongTimeout / 4
    20  	DefaultByteSliceCap    = 128
    21  
    22  	MaxContainersLen = int(4 * DefaultMaxMessageSize / 5)
    23  
    24  	DefaultNetworkPeerListNumValidatorIPs        = 15
    25  	DefaultNetworkPeerListValidatorGossipSize    = 20
    26  	DefaultNetworkPeerListNonValidatorGossipSize = 0
    27  	DefaultNetworkPeerListPeersGossipSize        = 10
    28  	DefaultNetworkPeerListGossipFreq             = time.Minute
    29  	DefaultNetworkPeerListPullGossipFreq         = 2 * time.Second
    30  	DefaultNetworkPeerListBloomResetFreq         = time.Minute
    31  
    32  	// Inbound Connection Throttling
    33  	DefaultInboundConnUpgradeThrottlerCooldown = 10 * time.Second
    34  	DefaultInboundThrottlerMaxConnsPerSec      = 256
    35  
    36  	// Outbound Connection Throttling
    37  	DefaultOutboundConnectionThrottlingRps = 50
    38  	DefaultOutboundConnectionTimeout       = 30 * time.Second
    39  
    40  	// Timeouts
    41  	DefaultNetworkInitialTimeout        = 5 * time.Second
    42  	DefaultNetworkMinimumTimeout        = 2 * time.Second
    43  	DefaultNetworkMaximumTimeout        = 10 * time.Second
    44  	DefaultNetworkMaximumInboundTimeout = 10 * time.Second
    45  	DefaultNetworkTimeoutHalflife       = 5 * time.Minute
    46  	DefaultNetworkTimeoutCoefficient    = 2
    47  	DefaultNetworkReadHandshakeTimeout  = 15 * time.Second
    48  
    49  	DefaultNetworkCompressionType           = compression.TypeZstd
    50  	DefaultNetworkMaxClockDifference        = time.Minute
    51  	DefaultNetworkRequireValidatorToConnect = false
    52  	DefaultNetworkPeerReadBufferSize        = 8 * units.KiB
    53  	DefaultNetworkPeerWriteBufferSize       = 8 * units.KiB
    54  
    55  	DefaultNetworkTCPProxyEnabled = false
    56  
    57  	// The PROXY protocol specification recommends setting this value to be at
    58  	// least 3 seconds to cover a TCP retransmit.
    59  	// Ref: https://www.haproxy.org/download/2.3/doc/proxy-protocol.txt
    60  	// Specifying a timeout of 0 will actually result in a timeout of 200ms, but
    61  	// a timeout of 0 should generally not be provided.
    62  	DefaultNetworkTCPProxyReadTimeout = 3 * time.Second
    63  
    64  	// Benchlist
    65  	DefaultBenchlistFailThreshold      = 10
    66  	DefaultBenchlistDuration           = 15 * time.Minute
    67  	DefaultBenchlistMinFailingDuration = 2*time.Minute + 30*time.Second
    68  
    69  	// Router
    70  	DefaultConsensusAppConcurrency  = 2
    71  	DefaultConsensusShutdownTimeout = time.Minute
    72  	DefaultFrontierPollFrequency    = 100 * time.Millisecond
    73  
    74  	// Inbound Throttling
    75  	DefaultInboundThrottlerAtLargeAllocSize         = 6 * units.MiB
    76  	DefaultInboundThrottlerVdrAllocSize             = 32 * units.MiB
    77  	DefaultInboundThrottlerNodeMaxAtLargeBytes      = DefaultMaxMessageSize
    78  	DefaultInboundThrottlerMaxProcessingMsgsPerNode = 1024
    79  	DefaultInboundThrottlerBandwidthRefillRate      = 512 * units.KiB
    80  	DefaultInboundThrottlerBandwidthMaxBurstSize    = DefaultMaxMessageSize
    81  	DefaultInboundThrottlerCPUMaxRecheckDelay       = 5 * time.Second
    82  	DefaultInboundThrottlerDiskMaxRecheckDelay      = 5 * time.Second
    83  	MinInboundThrottlerMaxRecheckDelay              = time.Millisecond
    84  
    85  	// Outbound Throttling
    86  	DefaultOutboundThrottlerAtLargeAllocSize    = 32 * units.MiB
    87  	DefaultOutboundThrottlerVdrAllocSize        = 32 * units.MiB
    88  	DefaultOutboundThrottlerNodeMaxAtLargeBytes = DefaultMaxMessageSize
    89  
    90  	// Network Health
    91  	DefaultHealthCheckAveragerHalflife = 10 * time.Second
    92  
    93  	DefaultNetworkHealthMaxTimeSinceMsgSent     = time.Minute
    94  	DefaultNetworkHealthMaxTimeSinceMsgReceived = time.Minute
    95  	DefaultNetworkHealthMaxPortionSendQueueFill = 0.9
    96  	DefaultNetworkHealthMinPeers                = 1
    97  	DefaultNetworkHealthMaxSendFailRate         = .9
    98  
    99  	// Metrics
   100  	DefaultUptimeMetricFreq = 30 * time.Second
   101  
   102  	// Delays
   103  	DefaultNetworkInitialReconnectDelay = time.Second
   104  	DefaultNetworkMaxReconnectDelay     = time.Minute
   105  )