关于tun设备的多包读——基于mmap的实现
虚拟网络设备tun多用于网络数据的转发,常在vpn等软件中使用,是vpn软件中的关键部分,其对数据包的读写速度将会直接影响vpn软件的网络速度和流量。在linux内核3.0以前,tun设备的读写都是一次一包的方式来读取tun设备数据,数据量巨大的时候就会导致频繁tun设备的读操作,同时还需要大量系统信号来提示上层有数据需要读,这就使得tun的读操作将会占用大量的系统消耗,拖慢软件速度。好在这样的弊端在linux内核升级到3.0被解决了,其采用mmap的读写方式可以一次性将大量的数据包从tun设备层读到应用层





