2006-06-23

tap interface

tap interfaceThis entry was originally published at 抓~ 抓到一隻瞌睡蟲

剛剛發現一件事情, 根據linux kernel的documentation/networking/tuntap的部份

2. What is TUN/TAP driver used for?
As mentioned above, main purpose of TUN/TAP driver is tunneling.
It is used by VTun (http://vtun.sourceforge.net).

Another interesting application using TUN/TAP is pipsecd
(http://perso.enst.fr/~beyssac/pipsec/), an userspace IPSec
implementation that can use complete kernel routing (unlike FreeS/WAN).

3. How does Virtual network device actually work ?
Virtual network device can be viewed as a simple Point-to-Point or
Ethernet device, which instead of receiving packets from a physical
media, receives them from user space program and instead of sending
packets via physical media sends them to the user space program.

Let’s say that you configured IPX on the tap0, then whenever
the kernel sends an IPX packet to tap0, it is passed to the application
(VTun for example). The application encrypts, compresses and sends it to
the other side over TCP or UDP. The application on the other side decompresses
and decrypts the data received and writes the packet to the TAP device,
the kernel handles the packet like it came from real physical device.

4. What is the difference between TUN driver and TAP driver?
TUN works with IP frames. TAP works with Ethernet frames.

This means that you have to read/write IP packets when you are using tun and
ethernet frames when using tap.

5. What is the difference between BPF and TUN/TAP driver?
BFP is an advanced packet filter. It can be attached to existing
network interface. It does not provide a virtual network interface.
A TUN/TAP driver does provide a virtual network interface and it is possible
to attach BPF to this interface.

第四點對我而言比較有用, 而且我另外發現的是, 之前說的惡搞raw socket的部份, 在tap interface上面是沒辦法搞定的, 要再找資料了.

我瞎了, 跑錯測試的程式… 其實可以work啊, 只是我沒有弄對interface的index而已. 有沒有比較聰明的方法拿到interface的index呢? 現在我是從/proc讀出來的.

沒有留言: