【问题标题】:Load Testing TCP with IP spoofing使用 IP 欺骗对 TCP 进行负载测试
【发布时间】:2013-04-03 20:09:16
【问题描述】:

我正在尝试想出一种方法来对以下架构进行负载测试:

我们有一个应用服务器,它从多个服务器上接收数据,这些服务器上有数据收集代理。

但是,我们的测试环境只有一个带有代理的服务器,我们希望模拟从同一服务器到应用程序服务器的多个 (100) 连接。

我已经为代理机器上的 NIS 卡分配了广泛的 IP 范围,但我无法找到一种方法来使从机器到应用服务器的每个传出连接都使用不同的 IP,并且因此打开一个新连接。

我知道在遇到此问题时,对 HTTP 协议的 Web 测试可以轻松使用虚拟用户和 IP 欺骗工具,但由于代理服务器连接使用 TCP - 我找不到任何能够实现此功能的工具。

我还考虑过可能通过代码编辑每个数据包,并每次用不同的 IP 替换它的标头 - 但这种方法似乎太复杂且不切实际,因为它会使每个请求延迟太久而无法进行负载测试。

欢迎任何想法和解决方案!

提前感谢:)

【问题讨论】:

  • 我在研究中遇到的一个有趣的可能解决方案是使用 NAT。但是,NAT通常用于一对一或一对多的解决方案,因此它只能将单个IP或多个不同的本地IP转换为一个全局IP。我们在这里寻找的是一种将单个本地 IP 转换为多个全球 IP 的方法。这里有人熟悉一对多 NAT 格式吗?谷歌并没有提供帮助,'恐怕。

标签: c# tcp ip load-testing


【解决方案1】:

您可以在连接服务器之前使用Socket.Bind设置IP地址。

这里有描述:http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.localendpoint(v=vs.100).aspx

【讨论】:

  • 由于某些特殊原因它不会接受此方法为有效(他在 system.net.sockets 文件夹中找不到它)
  • 这是Socket类中的一个方法
【解决方案2】:

您可以使用 winpcap 或其 .net 包装器 pcap.Net (http://pcapdotnet.codeplex.com/) 来完全控制发送的 IP/TCP 数据包。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 2010-10-29
    • 2015-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多