a0bbd28ed1
section. |
||
---|---|---|
.. | ||
greconfig.8 | ||
greconfig.c | ||
Makefile | ||
README.gre |
$Id: README.gre,v 1.4 1999/01/26 21:32:39 hwr Exp $ --------------------------------------------------------------------------- A GRE Tunnel for NetBSD Heiko W.Rupp <hwr@pilhuhn.de> This is a very alpha implementation of GRE packet encapsulation. Generic Route Encapsulation (GRE) is described in RFC 1701 and 1702. The interface also supports MOBILE (protocol 55) as of RFC 2004 but default is GRE mode. Basically GRE allows to tunnel not only IP over IP, but also provides for other protocols like Appletalk etc. Cisco routers do their multicast tunnels over GRE (1). The hope is, that with GRE encapsulation, a method is found to encapsulate all other protocols with one mechanism and reduce the need for own tunneling in ip_mroute etc. This implementation is (as said) still alpha, but works for me. Successful testing has been done for GRE encapsulation with Cisco routers and NetBSD boxes as remote. The files: net/if_gre.[ch] : output interface, encapsulates packets. netinet/ip_gre.[ch]: input part, deencapsulates packets. Is IP only at the moment and only supports GRE without options. netinet/in.h : Addition of IPPROTO_GRE netinet/in_proto.c : Addition of protocol switch for GRE conf/files : mention new files for GRE greconfig.c : Utility to set/display tunnel endpoints / mode. greconfig.8 : Manpage for greconfig. gre.4 : Documentation of driver plus example. Installation: On NetBSD: add "pseudo-device gre <n>" to your kernel config file with <n> being the number of tunnel interfaces you want. Then recompile and install the new kernel. Also compile greconfig.c: cc -o greconfig greconfig.c Grectl is used to set/display tunnel endpoints. In case when IP is encapsulated, this is not needed, but e.g. in the AppleTalk over IP case. Todos/Bugs: Support other protocols for encapsulation The compute_route() code in if_gre.c toggles the last bit of the IP-address to provoke the search for a less specific route than the one directly over the tunnel to prevent loops. This is possibly not the best solution. GRE RFC not yet fully implemented (no GRE options), no other protocols yet than IP over IP. Code quality is surely not best and possibly not near anything like KNF Traceroute does not work yet over the tunnel :( BPF does probably not yet work (it might, but last time I looked, it bombed, so I #if 0'd it out). And also only in outgoing direction. --------------------------------------------------------------------------- (1) tunnels that end on a mrouted have tunnel mode DVMRP set