ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/gvpe/doc/gvpe.protocol.7.pod
(Generate patch)

Comparing gvpe/doc/gvpe.protocol.7.pod (file contents):
Revision 1.2 by pcg, Tue Mar 15 19:23:33 2005 UTC vs.
Revision 1.3 by pcg, Thu Mar 17 22:24:31 2005 UTC

10The first part of this document describes the transport protocols which 10The first part of this document describes the transport protocols which
11are used by GVPE to send it's data packets over the network. 11are used by GVPE to send it's data packets over the network.
12 12
13=head1 PART 1: Tansport protocols 13=head1 PART 1: Tansport protocols
14 14
15GVPE offers a range of transport protocols that can be used to interchange
16data between nodes. Protocols differ in their overhead, speed,
17reliability, and robustness.
18
19The following sections describe each transport protocol in more
20detail. They are sorted by overhead/efficiency, the most efficient
21transprot is listed first:
22
15=head2 RAW IP 23=head2 RAW IP
16 24
25This protocol is the best choice, performance-wise, as the minimum
26overhead per packet is only 38 bytes.
27
28It works by sending the VPN payload using raw ip frames (using the
29protocol set by C<ip-proto>).
30
31Using raw ip frames has the drawback that many firewalls block "unknown"
32protocols, so this transport only works if you have full IP connectivity
33between nodes.
34
17=head2 ICMP 35=head2 ICMP
18 36
37This protocol offers very low overhead (minimum 42 bytes), and can
38sometimes tunnel through firewalls when other protocols cannot.
39
40It works by prepending a ICMP header with type C<icmp-type> and a code
41of C<255>. The default C<icmp-type> is C<echo-reply>, so the resulting
42packets look like echo replies, which looks rather strange to network
43admins.
44
45This transport should only be used if other transports (i.e. raw ip) are
46not available or undesirable (due to their overhead).
47
19=head2 UDP 48=head2 UDP
20 49
50This is a good general choice for the transport protocol as UDP packets
51tunnel well through most firewalls and routers, and the overhead per
52packet is moderate (minimum 58 bytes).
53
54It should be used if RAW IP is not available.
55
21=head2 TCP 56=head2 TCP
22 57
58This protocol is a very bad choice, as it not only has high overhead (more
59than 60 bytes), but the transport also retries on it's own, which leads
60to congestion when the link has moderate packet loss (as both the TCP
61transport and the tunneled traffic will retry, increasing congestion more
62and more). It also has high latency and is quite inefficient.
63
64It's only useful when tunneling through firewalls that block better
65protocols. If a node doesn't have direct internet access but a HTTP proxy
66that supports the CONNECT method it can be used to tunnel through a web
67proxy. For this to work, the C<tcp-port> should be C<443> (C<https>), as
68most proxies do not allow connections to other ports.
69
70It is an abuse of the usage a proxy was designed for, so make sure you are
71allowed to use it for GVPE.
72
73This protocol also has server and client sides. If the C<tcp-port> is set
74to zero, other nodes cannot connect to this node directly (and C<tcp-port>
75zero cannot be used). If the C<tcp-port> is non-zero, the node can act
76both as a client as well as a server.
77
23=head2 DNS 78=head2 DNS
79
80B<WARNING:> Parsing and generating DNS packets is rather tricky. The code
81almost certainly contains buffer overflows and other, likely exploitable,
82bugs. You have been warned.
83
84This is the worst choice of transport protocol with respect to overhead
85(overhead can be 2-3 times higher than the transferred data), and latency
86(which can be many seconds). Some DNS servers might not be prepared to
87handle the traffic and drop or corrupt packets. The client also has to
88constantly poll the server for data, so the client will constantly create
89traffic even if it doesn't need to transport packets.
90
91In addition, the same problems as the TCP transport also plague this
92protocol.
93
94Most configuration needs to be done by editing C<src/vpn_dns.C> directly.
95
96It's only use is to tunnel through firewalls that do not allow direct
97internet access. Similar to using a HTTP proxy (as the TCP transport
98does), it uses a local DNS server/forwarder (given by the C<dns-forw-host>
99configuration value) as a proxy to send and receive data as a client,
100and a C<NS> record pointing to the GVPE server (as given by the
101C<dns-hostname> directive).
102
103The only good side of this protocol is that it can tunnel through most
104firewalls undetected, iff the local DNS server/forwarder is sane (which is
105true for most routers, wlan gateways and nameservers).
24 106
25=head1 PART 2: The GNU VPE protocol 107=head1 PART 2: The GNU VPE protocol
26 108
27This section, unfortunately, is not yet finished, although the protocol 109This section, unfortunately, is not yet finished, although the protocol
28is stable (until bugs in the cryptography are found, which will likely 110is stable (until bugs in the cryptography are found, which will likely

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines