我正在创建一个脚本,将来自 Tap0 的所有流量发送到 Eth0,并将来自 Eth0 的所有流量发送到 Tap0。在网上找到了很多例子后,我设法让它发挥作用。我遇到的问题是性能非常低。
在不使用脚本的情况下在 2 个虚拟机之间执行 Ping 操作所需时间不到 1 毫秒。使用脚本大约需要 15 毫秒。
当我使用 scp 将 10 MB 文件从虚拟机发送到另一个虚拟机时,平均。没有脚本时传输速率为 12 Mbps。使用该脚本,速度可降至不到 1 Mbps。
我知道Python实际上并不是处理网络流量最快的语言,但它有那么慢吗?
有没有办法优化这段代码?
我的虚拟机是 Ubuntu 10.04 32 位。
这是代码:
import os,sys,getopt,struct,re,string,logging
from socket import *
from fcntl import ioctl
from select import select
from scapy.all import *
TUNSETIFF = 0x400454ca
IFF_TAP = 0x0002
TUNMODE = IFF_TAP
ETH_IFACE = "eth0"
TAP_IFACE = "tap0"
conf.iface = ETH_IFACE
# Here we capture frames on ETH0
s = conf.L2listen(iface …Run Code Online (Sandbox Code Playgroud)