我们现在已经开发了多主页应用程序,同时测试我的设置是:
Eth4作为主要接口,背靠背连接到另一台机器。Eth5作为二次接口,背靠背连接到另一台机器。
当INIT被发送时,我现在关闭了我的主界面到达对等机器似乎使用辅助接口,但源保留的ip地址仅为主接口,因此当对等时计算机尝试响应它尝试在主计算机上发送的INIT_ACK接口ip已关闭,由于ICMP,它会丢弃数据包。
我不太擅长路由,但似乎有些路由没有如果配置正确,为什么总是使用主ip?
当我连接我的主&二次接口通过路由器,但facrd的问题相同。
为了大家的利益,在谈到要点之前,我只谈到了几点。
SCTP终结点可以有多个IP地址。也就是说,应用程序可以打开SCTP套接字,并将选择性的地址集或所有IP地址绑定到该套接字。SCTP中的关联是在一对端点之间。SCTP端点应交换IP地址列表,以便每个端点都可以从其他端点中的任何地址接收消息。IP地址列表的交换是在发起关联时完成的。但是,SCTP应使用一个IP地址作为通信的主要地址,并且在连续无法发送数据或控制块的情况下,应使用其他IP地址进行重新传输。
根据RFC4960(SCTP),您会注意到"在关联启动期间,如果接收到的INIT中存在主机名参数,则端点应将该主机名解析为IP地址列表,并通过将解析的IP地址与SCTP源端口相结合来导出该对等端的传输地址。"
然而,RFC4960(SCTP)的一个关键点是将主机名解析为IP地址的时间的重要性。它指出,"在名称转换涉及潜在的长延迟的情况下,INIT的接收器必须将名称解析推迟到从对等端接收到COOKIE ECHO块。在这种情况下,NIT的接收器应该使用接收到的主机名(而不是目的地传输地址)建立状态COOKIE。"并将INIT ACK发送到接收到INIT的源IP地址。"
如果我们仅从上述信息来研究您的情况:考虑到主接口在发送INIT块之后被关闭,并且假设将主机名解析为IP地址的时间在服务器中花费了太多时间,可以假设INIT-ACK已经被发送到接收INIT的源IP地址(主接口)。
然而,如果你仔细阅读SCTP的RFC,在RFC4960(SCTP)中有一条关于INIT-ACK的明确注释,声称"INIT ACK必须发送到INIT的源地址。"请参阅RFC3286(SCTP。"
现在,如果我们也考虑上述信息来研究您的场景:很明显,服务器将始终向INIT的IP标头中的源地址发送响应INIT ACK块。