net

package
v2.0.38 Latest Latest
Warning

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

Go to latest
Published: Mar 13, 2025 License: MIT Imports: 18 Imported by: 0

Documentation

Overview

Package defs 提供了DeFS去中心化存储系统的网络握手协议实现

Package net 提供了网络相关的功能实现

Index

Constants

View Source
const (

	// DefaultConnMgrHighWater 定义了连接管理器的高水位线
	// 当连接数超过此值时,将触发连接修剪
	//DefaultConnMgrHighWater = 200
	DefaultConnMgrHighWater = 96
	// DefaultConnMgrLowWater 定义了连接管理器的低水位线
	// 连接修剪时会保留此数量的连接
	//DefaultConnMgrLowWater = 100
	DefaultConnMgrLowWater = 32
	// DefaultConnMgrGracePeriod 定义了新建连接的宽限期
	// 在此期间内新连接不会被修剪
	DefaultConnMgrGracePeriod = time.Second * 20
)
View Source
const DefaultConnMgrType = "basic"

DefaultConnMgrType 定义了连接管理器的默认类型 当前设置为 "basic" 基础类型

View Source
const DefaultResourceMgrMinInboundConns = 800 // 从800增加到1600

DefaultResourceMgrMinInboundConns 定义了作为良好网络公民的最小入站连接数 这是一个经验值,通常足以保证网络的正常运行 const DefaultResourceMgrMinInboundConns = 800 3. 增加最小入站连接数

View Source
const (
	HandshakeProtocol = "/defs/handshake/1.0.0" // 握手协议标识符

)

常量定义

Variables

This section is empty.

Functions

func CreateDefaultLimitConfig added in v2.0.23

func CreateDefaultLimitConfig() (limitConfig rcmgr.ConcreteLimitConfig, err error)

createDefaultLimitConfig 创建并返回一个默认的资源限制配置

此函数根据系统资源情况自动计算和设置各种限制,包括内存、文件描述符、 连接数和流量等。它遵循 docs/libp2p-resource-management.md 中的文档规范。

返回值:

  • rcmgr.ConcreteLimitConfig: 包含所有具体限制配置的结构体
  • error: 如果在创建过程中发生错误则返回错误信息

func Handshake

func Handshake(ctx context.Context, h host.Host, pi peer.AddrInfo) ([]peer.AddrInfo, error)

Handshake 执行与目标节点的握手过程 参数:

  • ctx: 上下文对象,用于控制握手过程的生命周期
  • h: libp2p主机实例,提供网络通信功能
  • pi: 目标节点的地址信息,包含节点ID和多地址

返回值:

  • []peer.AddrInfo: 从目标节点获取的其他节点的地址信息列表
  • error: 如果握手过程中发生错误则返回错误信息

注意: 1. 连接池中累积了大量失效连接 2. 旧连接没有及时释放导致资源耗尽 3. 连接状态不一致导致新连接建立失败

建议: 1. 定期清理空闲连接 2. 实现心跳机制检测连接活性 3. 添加连接池大小限制 4. 监控并记录连接状态变化

func RegisterHandshakeProtocol

func RegisterHandshakeProtocol(h host.Host)

RegisterHandshakeProtocol 注册握手协议的处理函数 参数:

  • h: libp2p主机实例,用于注册协议处理器

func WriteHandshakeMessage

func WriteHandshakeMessage(s network.Stream, msg HandshakeMessage) error

WriteHandshakeMessage 将握手消息写入网络流 参数:

  • s: 网络流,用于发送数据
  • msg: 要发送的握手消息

返回值:

  • error: 如果写入过程中发生错误则返回错误信息

Types

type HandshakeMessage

type HandshakeMessage struct {
	Version    string          // 协议版本号,用于版本兼容性检查
	NodeID     peer.ID         // 发送消息节点的唯一标识符
	KnownPeers []peer.AddrInfo // 发送节点已知的其他节点的地址信息列表
}

HandshakeMessage 定义握手消息的格式

func ReadHandshakeMessage

func ReadHandshakeMessage(s network.Stream) (HandshakeMessage, error)

ReadHandshakeMessage 从网络流中读取握手消息 参数:

  • s: 网络流,用于接收数据

返回值:

  • HandshakeMessage: 读取到的握手消息
  • error: 如果读取过程中发生错误则返回错误信息

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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