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 ¶
NewFilter 创建一个用于对等节点多样性的过滤器 参数:
- pgm: 实现了 PeerIPGroupFilter 接口的对象
- logKey: 日志键
- cplFnc: 获取对等节点共同前缀长度的函数
返回:
- *Filter: 创建的过滤器实例
- error: 创建过程中的错误信息
func (*Filter) GetDiversityStats ¶
func (f *Filter) GetDiversityStats() []CplDiversityStats
GetDiversityStats 返回每个 CPL 的多样性统计信息,并按 CPL 进行排序 返回:
- []CplDiversityStats: CPL 多样性统计信息的切片
func (*Filter) TryAdd ¶
TryAdd 尝试将对等节点添加到过滤器状态中 参数:
- p: 要添加的对等节点的标识符
返回:
- bool: true 表示添加成功,false 表示添加失败
func (*Filter) WhitelistPeers ¶
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。因此,如果对等节点有多个地址,它可以属于多个组。 目前,给定一个对等节点地址,我们的分组机制如下:
- 对于 IPv6 地址,我们按照 IP 地址的 ASN 进行分组。
- 对于 IPv4 地址,所有属于同一个传统(Class A)/8 分配的地址 或者共享相同 /16 前缀的地址属于同一组。
Click to show internal directories.
Click to hide internal directories.