如何配置网络路由器以转发(重新广播)wcf 发现

如何配置网络路由器以转发(重新广播)wcf 发现

我无法通过网络路由器执行 wcf 发现。

我有一个客户端和服务器应用程序。当将这两个应用程序部署到同一局域网上的任意两台计算机时,它运行完美。客户端应用程序找到服务器应用程序并开始通信。当我将客户端移至由路由器隔开的另一个网络时,它找不到服务器。

路由器是 Cisco Catalyst 3750。我有完全的权限来更改设置,但我不确定哪些设置适用于 wcf 发现数据包。

我的目标是改变路由器配置,以便在客户端的局域网上广播的 wcf 发现数据包通过路由器重新广播到服务器的局域网。

您能给出通过路由器执行 wcf 发现的示例吗?您知道我应该寻找哪些路由器设置吗?

答案1

经过大量研究,我决定这是不可能的,或者至少是完全不切实际的。根据网络定义,通过路由器广播 UDP 的行为不会返回任何有意义的结果。

例如,假设我可以让路由器将消息重新广播到所有其他子网。我可以想象得到一个子网(我们称之为 PC1)上的 10.0.1.5 和另一个子网(PC2)上的 10.0.1.5 的结果。TCP/IP 技术无法区分它们。此外,尝试打开一个到 10.0.1.5 的通道和另一个到 10.0.1.5 的通道是愚蠢的。因此,即使我知道根据我的网络拓扑我会得到唯一的结果,路由器也无法证明这一点。

更糟糕的是,路由器实际上向我隐藏了 PC1 和 PC2 的 IP。这是通过 NAT(网络地址转换)技术实现的。我可能必须寻址 10.3.3.64 才能到达 PC1,而寻址 10.3.4.64 才能到达 PC2。同样,我的拓扑不会导致这些模糊的数字,它们非常独特且可预测,但系统无法证明这一点。

结论:我决定建立一个“跟踪器”。这就是 P2P 网络的工作方式。所有计算机都会向已知跟踪器报告,客户端会向跟踪器询问其所需服务器的地址。

答案2

我们能够让 WCF 发现跨网络工作。基本上,我们必须将 WCF 中的 TimeToLive 增加到大于默认值 1。以下是我们网络顾问的更详细解释:

WCF 的 WS-Discovery 数据包的标准 TTL 为 1。通过将其增加到更大的数字,并在配置为 RP 的第 3 层交换机上的正确 SVI 上启用稀疏-密集 PIM,多播路由允许 WS-Discovery 协议在更大的企业级别上遍历多个子网。这不会通过 NAT、防火墙等工作 - 它只会在实际路由子网之间工作(尽管它应该通过正确配置 IP 和多播路由协议的 IPsec 加密 VTI 工作)。

相关内容