why tun/tap but instead ordinary ethernet device (eg. fxp)
snort_sam at yahoo.com
Sat Jul 30 03:20:21 GMT 2005
--- Maksim Yevmenkin <maksim.yevmenkin at savvis.net>
> >>>As I want to learn how to use /dev/tap in
> >>I m
> >>>looking for a simple application that written for
> >>>/dev/tap. OpenVPN is a bit too complicated for a
> >>>newbie to get start. Can anyone tell me a link or
> >>>reference for some of these examples?
> >>There are examples that come with the distribution
> > Is this only for tun device?
> > How much difference between tun and tap in terms
> > programming when using the device?
> >>(and this question would be better suited for
> >>if for any FreBSD=specific list at all)
> > Sorry, I currently don't have access to the
> > frebsd.misc newsgroup, so I need to post the
> > here.
> this type of question comes up quite often. its
> really simple: a single
> read(2) call on /dev/tapX will return entire
> ethernet frame (if any)
> received by tap interface (minus ethernet crc). a
> single write(2) call
> on /dev/tapX will put entire ethernet frame (w/out
> ethernet crc) onto
> tap interface outgoing queue.
> so, the "buf" parameter to the write(2) call on
> /dev/tapX device should
> point to a buffer with *complete* ethernet frame,
> including ethernet
> header and payload. payload could be IP packet, but
> it does not have to
> be. any protocol that uses ethernet as transport can
> be tunneled with
> tap(4) (i.e. ipx).
> the above is true for tun(4) with exception that
> tun(4) operates on IP
> packets. so you have to write/read complete IP
> packets to/from /dev/tun.
Thanks for the detail explaination. As "man tap"
pointed out, one can use tap drive as if using a pty
device. I m not aware the obvious advantage of using
tap over ordinarlly ethernet device for tunnelling
programming (another example is ipsec). It may be
because programming on tun/tap is alot of efficient
and simpler. Can anyone pleaese explain?
With vtun or openvpn, why they don't just simply use
ordinary ethernet device driver but prefer tun or tap
for tunneling or bridging network remote connection?
Is it because applicaiton use tap or tun can send
interrupt (with ioctl) to the remote client more
efficiently? if so, can anyone please tell me what
kind of efficiency does tun/tap over an ordianry
ethernet device in terms of network programming?
Start your day with Yahoo! - make it your home page
More information about the freebsd-stable