基于WinTAP和NPcap实现的一个小型虚拟交换机/虚拟路由器,在Windows系统上将本机流量重新路由至多个出口网卡进行多网络的链路聚合,最后实现多网络多线程下载的加速
程序在用户空间可以通过WinTAP提供的接口从内核中获取本机数据链路层发出的流量,解析出地址、端口等信息后,根据出口网卡的实际物理信息重新封包(若为TCP流量则再记录下连接状态和出口网卡),再调用NPcap的NPF驱动接口直接驱动底层网卡转发数据包。
使用某个公共WiFi + 100M有线宽带 + 手机5G网络共享 三网卡叠加链路聚合测试:
在tap_driver
目录下运行install.bat
创建一个tap虚拟网卡,转到控制面板网络连接页面,将新创建出来的某个TAP-Windows Adapter V9网卡重命名为mix-tap
https://npcap.com/dist/npcap-1.80.exe
安装成功后可以看到网络适配器多了个NPCAP的驱动
命令行窗口中传入-s参数调用程序扫描可用的出口网卡:
编辑config.ini
配置文件,该配置文件和程序本体放一起:
[outbound]字段中填写出口网卡的ID,自行按自己要使用的出口网卡的个数往后扩展dev数量。
[inbound]字段中ip为虚拟tap网卡的ip,gateway为虚拟路由器的ip,若这两个ip和现有物理网络上的ip发生冲突,需要自行修改。
一个config.ini
例子如下
[inbound]
ip=192.168.57.123
gateway=192.168.57.0
mask=255.255.255.0
[outbound]
dev0={6DAF227D-8AF7-4F2D-B45C-AE1382CC8A35}
dev1={0A035B6A-A5E8-427A-A3F4-22292CDBA7E1}
dev2={4C15831D-D0B2-4F8D-ABEA-AD0F7F04254D}
程序正常运行后会显示虚拟网卡和出口网卡的流量信息: