百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
返回工具页/返回 Issues 列表
#9409·grpc-go

取消零地址的终点

作者: easwars创建于 2026年9月10日更新于 2026年9月14日
标签Status: Help WantedP2Type: Bug

QQ 使用大小写 - 此特性会解决什么问题 ?

在调查#9259期间,随机潜入'在接到零地址的终点(len(endpoint. ),我们注意到,我们的密码库没有一致地验证、过滤或处理有零地址的端点:

  1. `resolver.Validate Endpoints'没有呼叫者,允许空端点**:
  • `resolver.Validate Endpoints'是按[gRFC A61](https://GitHub.com/grpc/ proposition/blob/master/A61-IPv4-IPv6-dualstack-backends.md)增加的,但目前整个存储处有零呼叫者。
  • 此外,"更难解决"。 验证 Endpoints ' 只检查 *entire list * 是否包含所有端点的至少一个地址;它不能验证单个端点至少有一个地址.
  1. Channel/解析器包件不进行验证:
  • " 解冻者 " ,通过 " 解冻者 " 。 端点直接指向平衡器,而不验证端点包含地址。
  1. ** 不平衡的平衡器处理**:
  • 随机潜入 ' 最近在9259号增加了明确的过滤,以避免在编制终点 ' 索引时出现出界恐慌。 地址[0]。
  • " 终结点 " 最初是 " 如果 " (终结点)。 地址:========================================================================================================================================================================================= 目前,一个空端点会产生一个有“解”的儿童平衡器。 状态{末点: [] solver. Endpoint{ 空端点}.
  • " 先挑先取 " 平地 " 终点。 地址...(仅跳过空端点),其他平衡器或自定义的 pieole 政策可能假定len(端点)。 地址 > 0 ' 。
  1. xDS EDS unmarshaling 生成假“":0”地址:
  • 在unmarshal eds.go'中,parseAddress(lbEndpoint.GetEndpoint (.GetAddress (.GetSocketAddress ()))'不能证实套接字地址是否存在。 如果缺少,parseAddress(nil)'产生':0',将一个端点与地址`':0'合成,而不是去掉终点。 (如果多个端点缺少地址,则由于重复地址相撞于"":0"上,它只能是NACK.
  • 检查C++和Java的执行,看看他们的行为是什么,然后决定我们的行为。

建议的解决办法

  1. ** 澄清合同**: " 解决办法 " 。 终点必须至少包含一个地址。
  • 更新`resolver.Validate Endpoints'(或通道/resolver包装),以验证每个端点至少有一个地址。
  • 拨起"解"。 验证小政策和/或`resolver-wrapper'中的终点。
  • 在xDS客户端EDS解析中,验证是否有套接字地址(或适当拒绝/NACK)。
  1. ** 更进一步**:探讨本评论所指明的备选办法。

++ 附加上下文

  • 由#9259触发.
  • 相关的gRFC:[A61: . . . . . . .

内容来源: grpc/grpc-go

查看 GitHub 原文在 GitHub 查看讨论