如何通过 BGP Anycast 建立源服务器和节点服务器之间的 TCP 连接?

网络工程 ip tcp BGP 互联网 任播
2022-02-07 08:47:32

服务器 A 和 B 具有与任播相同的 IP 地址。服务器B连接到离服务器A很近而离服务器B很远的源服务器,由于服务器A更近,响应将被路由回服务器A,是不是总是可以路由这种类型的请求回到服务器 B,因为服务器 B 发起了与源服务器的连接?

这个问题有一个答案:

https://networkengineering.stackexchange.com/a/33827/54705

您不会启动从任播地址到 Internet 上任何旧地址的连接。任播地址是目标地址。如果具有任播地址的主机需要联系 Internet 上的不同主机,则它使用非任播地址,或者在接口上具有辅助地址,或者更有可能使用不同的接口。

我在问是否有除 TCP 之外的协议可以自己发送一些标志或静态路由,以便源服务器知道返回哪个路由来回答任播地址?

您总是必须从不同的 IP 地址发送?

2个回答

数据包按目标 IP 地址单独路由,与之前的任何数据包无关。路由器不维护状态(IP 被专门设计为无状态),并且路由器根据目标地址路由数据包,不知道它是为了响应另一个方向的其他数据包。

TCP 和其他传输协议在数据包的路由中没有任何作用。传输协议是 IP 数据包的有效负载,但路由器只查看 IP 数据包头来路由数据包。路由器不会在网络堆栈中达到传输协议的更高层。这会减慢路由,并且需要大量软件来理解各种传输协议以及新传输协议的更新。IP 既不知道也不关心它在其有效负载中携带的内容。

服务器 B 连接到离服务器 A 很近而离服务器 B 很远的源服务器,由于服务器 A 更近,响应将被路由回服务器 A

这不是它的工作方式。

Anycast 用于缩短到全球服务的路由:同一个 IP 地址在多个位置终止并通过 BGP 进行通告。现在,全球访问该 IP 的客户端将通过最短路径路由到他们最近的位置。这样,任播仅适用于任播服务发起的连接。

最有可能的是,终止任播 IP 的服务器使用正常的单播 IP 地址进行出站连接(数据交换、管理等)。