【问题标题】:SCTP Multihoming issueSCTP 多宿主问题
【发布时间】:2014-11-26 09:18:29
【问题描述】:

我们现在已经开发了多宿主应用程序,同时测试我的设置是:

Eth4 作为主要接口背靠背连接到另一台机器。 Eth5 作为辅助接口背靠背连接到另一台机器。

我现在在发送 INIT 时关闭我的初级接口 到达对等机器似乎使用辅助接口,但源 保留的 IP 地址仅属于主接口,因此当对等方时 机器尝试响应它尝试在主服务器上发送的 INIT_ACK 已关闭的接口 ip,由于 ICMP,它会丢弃数据包。

我的路由不太好,但是好像有些路由没有 已经配置好了,为什么总是使用主ip?

当我连接我的主 & 时,我测试了相同的部分 通过路由器的辅助接口,但同样的问题。

【问题讨论】:

    标签: sctp


    【解决方案1】:

    为了大家的利益,我刚刚谈到了几点,然后才进入重点。

    SCTP 端点可以有多个 IP 地址。也就是说,应用程序可以打开一个 SCTP 套接字并将选择性的一组地址或所有 IP 地址绑定到该套接字。 SCTP 中的关联是在一对端点之间。 SCTP 端点应交换 IP 地址列表,以便每个端点可以接收来自其他端点中任何地址的消息。 IP 地址列表的交换是在启动关联时完成的。但是,SCTP 应使用一个 IP 地址作为通信的主要地址,而其他 IP 地址应用于重传,以防连续发送数据或控制块失败。

    从 RFC4960(SCTP) 中,您会注意到“在启动关联期间,如果收到的 INIT 中存在主机名参数,端点应将该主机名解析为 IP 地址列表和通过将解析的 IP 地址与 SCTP 源端口相结合,得出此对等方的传输地址。"

    然而,RFC4960(SCTP) 的一个关键点是时间将主机名解析为 IP 地址的重要性。它指出“在名称转换涉及潜在长延迟的情况下,INIT 的接收者必须推迟名称解析,直到从对等方接收到 COOKIE ECHO 块。在这种情况下,INIT 的接收者应该构建状态 Cookie 使用接收到的主机名(而不是目标传输地址)并将 INIT ACK 发送到接收到 INIT 的源 IP 地址。”

    如果我们仅根据上述信息调查您的情况: 考虑到发送 INIT 块后主接口被关闭,并假设服务器将主机名解析为 IP 地址的时间太长,可以假设 INIT-ACK 已发送到源 IP接收 INIT 的地址(主接口)。

    但是,如果您仔细阅读 SCTP 的 RFC,在 RFC4960(SCTP) 中有一条关于 INIT-ACK 的明确说明,声称“必须将 INIT ACK 发送到 INIT 的源地址。”请参阅 RFC3286( SCTP)似乎将其传达为一种保护机制,因为它声称“由于 INIT ACK 总是返回到 INIT 的源地址,因此盲人攻击者将无法获得 Cookie。”

    现在,如果我们通过考虑上述信息来研究您的情况: 很明显,服务器将始终将响应 INIT ACK 块发送到 INIT 的 IP 标头中的源地址。

    【讨论】:

      猜你喜欢
      • 2011-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-15
      • 2011-07-07
      • 2019-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多