Python 模拟以不同mac地址作为源的1K web客户端
我有以下需要:Python 模拟以不同mac地址作为源的1K web客户端,python,linux,simulation,eventlet,Python,Linux,Simulation,Eventlet,我有以下需要: 将1K(或更多)web客户端(即http请求)模拟为ip地址 每个客户端都必须使用不同的mac作为源 解决方案必须是现实的,也就是说,我希望(在基本限制下)从这个客户端获得最大的同时请求 所有这些都在同一台机器里 使用linux 我的问题是:如何使每秒的用户和请求数量最大化 我很肯定(99%:)我在做什么。我真的需要用不同的mac地址作为源发送这些请求,因为这是一个基于OpenFlow交换机的特殊用例。但将这一情景扩展到这个问题上是无关紧要的 附言。 我目前使用的是pytho
- 将1K(或更多)web客户端(即http请求)模拟为ip地址李>
- 每个客户端都必须使用不同的mac作为源李>
- 解决方案必须是现实的,也就是说,我希望(在基本限制下)从这个客户端获得最大的同时请求
- 所有这些都在同一台机器里
- 使用linux
libevent
,就很难为eventlet.connect提供特定的接口。但是您可以很容易地提供本地地址(IP、端口)。获取一个bind
参数,该参数获取一个本地地址并绑定到该地址
所以,如果您只需为每个虚拟接口提供不同的IP地址,并通过真实接口将它们桥接起来,那么您就只需要这些了
我不完全确定这会起多大作用,但它应该起作用。试试看
有一个明显的缺点:您需要1000个可路由的IP地址。但是假设你在一个你控制的NAT后面,这很简单,例如10.0.xy.1zw
如果你不在你控制的NAT后面,就扔一个吧。您甚至可以在同一台机器上,在真实的接口上运行它,只需将它作为虚拟接口的路由器而不是网桥
但是,一旦您这样做了……您可能就不需要1000个虚拟接口,或者根本不需要在eventlet
代码中执行任何操作。如果您只是将NAT配置为随机化MAC地址,则可以完成此操作。我对此并不乐观;它可能会尝试智能化,并在短时间内将多个到同一个(主机、端口)的连接视为路由的同一连接,这将在这里阻碍您。不过,还是试试看吧
当然,无论哪种方式,服务器都会将它们视为来自同一NAT路由器的1000个客户端。除了欺骗之外,这是没有办法的(除非你在互联网的不同部分有1000个地址)。但是,除非你真的试图愚弄服务器中的一些逻辑,而不是仅仅模拟一些行为,否则这不会有任何区别
同时,请记住,在现实生活中,web服务器的主机只会看到它连接到internet的路由器的MAC地址,而web服务器软件根本看不到任何内容,因此…我不得不对您可能要测试的内容做出一些假设,我很可能走错了方向。如果是这样,您可能希望更好地描述您的用例。您在这里到底想测试什么?MAC地址通常对web服务器不可见(或没有意义!),因此我不确定您想要实现什么。@Daskwuff:我假设他正在测试一种类似于大型IP负载平衡器的东西,它根据请求到达的本地路由器进行区分。但现在我想起来了,这是一个基于实际问题的相当大的假设……我正在openflow控制器上测试负载平衡器和设备管理器应用程序。我非常确定我需要有不同的mac地址(并且ip地址实际上是不相关的)。我不想把问题过分复杂化。