Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
1台带有两个网卡的Linux PC无法为测试系统生成网络流量_Linux_Networking_Network Programming - Fatal编程技术网

1台带有两个网卡的Linux PC无法为测试系统生成网络流量

1台带有两个网卡的Linux PC无法为测试系统生成网络流量,linux,networking,network-programming,Linux,Networking,Network Programming,这些问题与网络的基础有关,但我还没有找到答案 问题1: 100Mbps交换机能否同时处理2个以100Mbps速度运行的TCP流?为了说明这一点,如果您在一个交换机上有4台PC(100Mbps,没有其他连接),并且您有两个独立的数据流,它们将达到什么速度?一个流是否会影响其他流的速度,或者一个交换机的内部速度是否足以处理多个流 问题2: 我在专用网络交换机上安装了1台PC(Linux),这台PC有2个网络接口卡(NIC)。两个NIC都有不同的IP地址,工作正常。如果我从一个NIC向另一个NIC

这些问题与网络的基础有关,但我还没有找到答案

问题1: 100Mbps交换机能否同时处理2个以100Mbps速度运行的TCP流?为了说明这一点,如果您在一个交换机上有4台PC(100Mbps,没有其他连接),并且您有两个独立的数据流,它们将达到什么速度?一个流是否会影响其他流的速度,或者一个交换机的内部速度是否足以处理多个流


问题2: 我在专用网络交换机上安装了1台PC(Linux),这台PC有2个网络接口卡(NIC)。两个NIC都有不同的IP地址,工作正常。如果我从一个NIC向另一个NIC发送任何数据,网络交换机上绝对不会发送任何通信量。它的内核是智能的,并且不需要在网络上发送任何东西,因为IP在同一台PC上。我如何关闭它


由于我无法使用4台电脑,我无法在现实世界中测试问题1。这些问题很简单,但同时也很难回答


谢谢

问题1:是的,任何100Mb/s交换机都应该能够处理两个独立的100Mb/s流,因为每个端口都是100Mb/s,而不是交换机本身。除非CPU绝对需要,否则流量不会到达CPU,此时交换机可能会出现瓶颈并减慢速度。不过,正常的交通应该可以

问题2:您需要编写一个程序来手动执行,或者在线查找。我建议您看看Libnet

问题是内核知道它拥有这两张卡,所以它不需要在网络上发送数据。使用Libnet,您可以手动构造数据包并将其从特定接口发送出去


不过,主要的诀窍是,您需要在两个方向发送流量(不需要太多;您不应该在一个方向上每分钟需要超过1个数据包,而其他所有数据包都需要在另一个方向上发送)。问题是,交换机不知道数据包应该去哪里,并且会将数据包大量发送到所有端口,从而减慢速度。

问题1的答案取决于交换机的背板带宽-这是它可以在内部处理的总流量。如果它有至少200Mbps的背板带宽,它可以支持两个独立的100Mbps流

与更昂贵的“大铁”交换机相比,更便宜的交换机往往具有更少的背板带宽


至于问题2,您可以尝试将手动路由添加到您自己的IP地址,明确指定外部设备(如果您选中
route-C
,您将看到路由缓存通过环回设备为您自己的IP地址提供路由)。

我希望交换机能够处理与其端口数量相同的数据,但我觉得没那么简单。我认为“背板带宽”符合我需要了解的内容。虽然对于更便宜的交换机,这个数字不可用(很好)。我已经尝试了绑定到接口的网络流量生成器。它被称为D-ITG,但流量仍然没有到达网络交换机。从技术上讲,您需要担心的是背板带宽,但如果您只讨论两个流,那么应该不会有任何问题。我不熟悉任何流量生成器;上次我需要这样做时,我用Libnet写了自己的。我创建了两个线程:一个是绑定到一个接口的libnet实例,另一个是绑定到另一个接口的原始套接字。发送方生成带有自定义协议ID和几个报头字段的原始以太网数据包,用随机数据填充剩余空间。接收器监听数据包,解码报头以查看接收到的内容,将数据包标记为已接收,然后将其丢弃。这是一个极好的回答:)我希望有办法找到交换机的背板带宽。我刚刚尝试了“路由”,但它不喜欢将IP绑定到接口(无效参数)。有什么想法吗?@ross:我想你需要像Jonathan建议的那样,使用原始套接字编写一个程序。你是否将测试套接字绑定到一个特定网卡的IP地址?是的-我实际上使用的是D-ITG流量生成器,并将服务器和客户端绑定到不同的网络接口(必须使用root用户完成)。每个网络接口都有不同的IP地址。有什么想法吗?