peerdiversity

package
v2.0.15 Latest Latest
Warning

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

Go to latest
Published: Jan 11, 2025 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CplDiversityStats

type CplDiversityStats struct {
	Cpl   int                          // 表示最短路径长度
	Peers map[peer.ID][]PeerIPGroupKey // 将对等节点的 ID 与对等节点的 IP 组键列表关联起来的映射
}

CplDiversityStats 包含了一个 Cpl 的对等节点多样性统计信息

type Filter

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

Filter 是一个多样性过滤器,根据配置的白名单规则和传递给它的 PeerIPGroupFilter 接口的多样性策略来接受或拒绝对等节点

func NewFilter

func NewFilter(pgm PeerIPGroupFilter, logKey string, cplFnc func(peer.ID) int) (*Filter, error)

NewFilter 创建一个用于对等节点多样性的过滤器 参数:

  • pgm: 实现了 PeerIPGroupFilter 接口的对象
  • logKey: 日志键
  • cplFnc: 获取对等节点共同前缀长度的函数

返回:

  • *Filter: 创建的过滤器实例
  • error: 创建过程中的错误信息

func (*Filter) GetDiversityStats

func (f *Filter) GetDiversityStats() []CplDiversityStats

GetDiversityStats 返回每个 CPL 的多样性统计信息,并按 CPL 进行排序 返回:

  • []CplDiversityStats: CPL 多样性统计信息的切片

func (*Filter) Remove

func (f *Filter) Remove(p peer.ID)

Remove 从过滤器中移除指定的对等节点 参数:

  • p: 要移除的对等节点的标识符

func (*Filter) TryAdd

func (f *Filter) TryAdd(p peer.ID) bool

TryAdd 尝试将对等节点添加到过滤器状态中 参数:

  • p: 要添加的对等节点的标识符

返回:

  • bool: true 表示添加成功,false 表示添加失败

func (*Filter) WhitelistPeers

func (f *Filter) WhitelistPeers(peers ...peer.ID)

WhitelistPeers 将给定的对等节点添加到白名单中,这些对等节点将始终被允许 参数:

  • peers: 要添加到白名单的对等节点列表

type PeerGroupInfo

type PeerGroupInfo struct {
	Id         peer.ID        // 对等节点的唯一标识符
	Cpl        int            // 共同前缀长度(Common Prefix Length)
	IPGroupKey PeerIPGroupKey // 对等节点所属的 IP 组键
}

PeerGroupInfo 表示对等节点的分组信息

type PeerIPGroupFilter

type PeerIPGroupFilter interface {
	// Allow 测试具有给定分组信息的对等节点是否应该被 Filter 允许/拒绝
	// 参数:
	//   - PeerGroupInfo: 对等节点的分组信息
	// 返回:
	//   - bool: true 表示允许,false 表示拒绝
	Allow(PeerGroupInfo) (allow bool)

	// Increment 在将具有给定分组信息的对等节点添加到 Filter 状态时调用
	// 参数:
	//   - PeerGroupInfo: 对等节点的分组信息
	Increment(PeerGroupInfo)

	// Decrement 在将具有给定分组信息的对等节点从 Filter 中移除时调用
	// 参数:
	//   - PeerGroupInfo: 对等节点的分组信息
	Decrement(PeerGroupInfo)

	// PeerAddresses 用于获取给定对等节点的所有地址
	// 参数:
	//   - peer.ID: 对等节点的标识符
	// 返回:
	//   - []ma.Multiaddr: 对等节点的多地址列表
	PeerAddresses(peer.ID) []ma.Multiaddr
}

PeerIPGroupFilter 是由调用方实现的接口,用于实例化 `peerdiversity.Filter`。 此接口提供了被 `peerdiversity.Filter` 使用/调用的函数钩子。

type PeerIPGroupKey

type PeerIPGroupKey string

PeerIPGroupKey 是一个唯一键,表示对等节点所属的 IP 组中的一个组。 一个对等节点每个地址都有一个 PeerIPGroupKey。因此,如果对等节点有多个地址,它可以属于多个组。 目前,给定一个对等节点地址,我们的分组机制如下:

  1. 对于 IPv6 地址,我们按照 IP 地址的 ASN 进行分组。
  2. 对于 IPv4 地址,所有属于同一个传统(Class A)/8 分配的地址 或者共享相同 /16 前缀的地址属于同一组。

Jump to

Keyboard shortcuts

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