RFC 3620:The TUNNEL Profile
RFC-Ref

tunnel


Click on the red underlined text to get to the source

... The TUNNEL profile provides a mechanism for cooperating BEEP peers to form an application-layer ...
... BEEP peers to form an application-layer tunnel. The peers exchange "tunnel" elements ...
... form an application-layer tunnel. The peers exchange "tunnel" elements that specify a source route ...
... being stripped off and used to decide the next hop. The innermost, empty "tunnel" element tells the final destination that it is, ...
... In one use of this profile, a BEEP peer implementing the TUNNEL profile is co-resident with a firewall. An initiating machine inside the firewall ...
... SASL, then instruct the proxy to tunnel to an information service restricted to managers. Since each proxy ...
... identity of the next proxy being requested, it can refuse to tunnel connections if inadequate levels of authorization ...
... inadequate levels of authorization have been established. It is also possible to use the TUNNEL profile to anonymize the true source of a BEEP connection, in much the way a NAT ...


... <------- greeting --------> --- start TUNNEL [1] ----> ----- xport connect ------> <-------- greeting --------> ...
... <-------- greeting --------> ---- start TUNNEL [2] ----> <---------- ok ------------ <------- ok -------------- [3] ...
... Notes: [1] The TUNNEL element looks like this: <tunnel ...
... TUNNEL element looks like this: <tunnel fqdn='final.example.com' port='604'> <tunnel ...
... tunnel fqdn='final.example.com' port='604'> <tunnel/> </tunnel> ...
... <tunnel/> </tunnel> [2] The TUNNEL ...
... tunnel> [2] The TUNNEL element looks like this: <tunnel ...
... TUNNEL element looks like this: <tunnel/> [3] At this point, immediately after sending the <ok/> element ...
... <---- greeting ------> --start TUNNEL [1]--> -- xport connect ---> <----- greeting -----> ...
... <----- greeting -----> --start TUNNEL [2]--> --- xport connect ---> <------- greeting -----> ...
... <------- greeting -----> ---start TUNNEL [3]---> <-------- ok ---------- <------- ok --------- [4] ...
... Notes: [1] The TUNNEL element looks like this: <tunnel ...
... TUNNEL element looks like this: <tunnel fqdn='proxy2.example.com' port='604'> <tunnel ...
... tunnel fqdn='proxy2.example.com' port='604'> <tunnel fqdn='final.example.com' port='10290'> <tunnel ...
... tunnel fqdn='final.example.com' port='10290'> <tunnel/> </tunnel> ...
... <tunnel/> </tunnel> </tunnel> ...
... </tunnel> </tunnel> [2] The TUNNEL ...
... tunnel> [2] The TUNNEL element looks like this: <tunnel ...
... TUNNEL element looks like this: <tunnel fqdn='final.example.com' port='10290'> <tunnel ...
... tunnel fqdn='final.example.com' port='10290'> <tunnel/> </tunnel> ...
... <tunnel/> </tunnel> [3] The TUNNEL ...
... tunnel> [3] The TUNNEL element looks like this: <tunnel ...
... TUNNEL element looks like this: <tunnel/> [4] Proxy2 starts ...
... service can be expected to lead to this error.) The same would result if the destination did not support the TUNNEL profile. initial proxy1 proxy2 final ...
... <---- greeting ------> --start TUNNEL [1]--> --- xport connect --> <----- greeting -----> ...
... <----- greeting -----> --start TUNNEL [2]--> ---- xport connect ---> <------- login ...
... Notes: [1] The TUNNEL element looks like this: <tunnel ...
... TUNNEL element looks like this: <tunnel fqdn='proxy2.example.com' port='604'> <tunnel ...
... tunnel fqdn='proxy2.example.com' port='604'> <tunnel fqdn='final.example.com' srv='_telnet._tcp'> <tunnel ...
... tunnel fqdn='final.example.com' srv='_telnet._tcp'> <tunnel/> </tunnel> ...
... <tunnel/> </tunnel> </tunnel> ...
... </tunnel> </tunnel> [2] The TUNNEL ...
... tunnel> [2] The TUNNEL element looks like this: <tunnel ...
... TUNNEL element looks like this: <tunnel fqdn='final.example.com' srv='_telnet._tcp'> <tunnel ...
... tunnel fqdn='final.example.com' srv='_telnet._tcp'> <tunnel/> </tunnel> ...
... <tunnel/> </tunnel> [3] This close is optional. "Initial" may also send another <tunnel ...
... tunnel> [3] This close is optional. "Initial" may also send another <tunnel> element, attempting to contact a different server, for example. ...
... BEEP server. The difference at the protocol level is two-fold: The "initial" machine does not include the innermost "tunnel" element, and the final proxy ...
... <---- greeting ------> --start TUNNEL [1]--> --- xport connect --> <----- greeting -----> ...
... <----- greeting -----> --start TUNNEL [2]--> ---- xport connect ---> <------- login ...
... Notes: [1] The TUNNEL element looks like this: <tunnel ...
... TUNNEL element looks like this: <tunnel fqdn='proxy2.example.com' port='604'> <tunnel ...
... tunnel fqdn='proxy2.example.com' port='604'> <tunnel fqdn='final.example.com' svc='_telnet._tcp'> </tunnel ...
... tunnel fqdn='final.example.com' svc='_telnet._tcp'> </tunnel> </tunnel> ...
... </tunnel> </tunnel> Note the lack of an innermost no-attribute <tunnel> element ...
... </tunnel> Note the lack of an innermost no-attribute <tunnel> element. ...
... element. [2] The TUNNEL element looks like this: <tunnel ...
... TUNNEL element looks like this: <tunnel fqdn='final.example.com' srv='_telnet._tcp'> </tunnel ...
... tunnel fqdn='final.example.com' srv='_telnet._tcp'> </tunnel> Note the lack of an innermost no-attribute <tunnel> element ...
... </tunnel> Note the lack of an innermost no-attribute <tunnel> element. ...
... <---- greeting ------> --start TUNNEL [1]--> -- xport connect ---> <----- greeting -----> ...
... <----- greeting -----> --start TUNNEL [2]--> --- xport connect ---> <------- greeting -----> ...
... <------- greeting -----> ---start TUNNEL [3]---> <-------- ok ---------- <------- ok --------- [4] ...
... Notes: [1] The TUNNEL element looks like this: <tunnel profile ...
... TUNNEL element looks like this: <tunnel profile="http://xml.resource/org/profiles/SEP2"/> Note the lack of an innermost no-attribute <tunnel ...
... tunnel profile="http://xml.resource/org/profiles/SEP2"/> Note the lack of an innermost no-attribute <tunnel> element. ...
... [2] Proxy1 maps this to <tunnel fqdn="proxy2.example.com" port="604"> <tunnel profile ...
... tunnel fqdn="proxy2.example.com" port="604"> <tunnel profile="http://xml.resource/org/profiles/SEP2"/> </tunnel ...
... tunnel profile="http://xml.resource/org/profiles/SEP2"/> </tunnel> based on local configuration, then processes the new element ...
... element and routing <tunnel profile="http://xml.resource/org/profiles/SEP2"/> to proxy2. ...
... to proxy2. [3] Proxy2 receives the TUNNEL element with simply the SEP2 URI ...
... URI specified. Local provisioning maps this to <tunnel fqdn='final.example.com' srv='_beep._tcp'> <tunnel/> ...
... <tunnel fqdn='final.example.com' srv='_beep._tcp'> <tunnel/> </tunnel> ...
... <tunnel/> </tunnel> Note the presence of an innermost no-attribute <tunnel> element ...
... </tunnel> Note the presence of an innermost no-attribute <tunnel> element. Proxy2 then strips the outermost element ...
... element, looking up the appropriate address and port, and forwards the <tunnel/> element to the final machine. ...
... <---- greeting ------> --start TUNNEL [1]--> -- xport connect ---> <----- greeting -----> ...
... <----- greeting -----> --start TUNNEL [2]--> --- xport connect ---> <------- greeting -----> ...
... <------- greeting -----> ---start TUNNEL [3]---> <-------- ok ---------- <------- ok --------- [4] ...
... Notes: [1] The TUNNEL element looks like this: <tunnel endpoint ...
... TUNNEL element looks like this: <tunnel endpoint="operator console"> </tunnel> ...
... <tunnel endpoint="operator console"> </tunnel> Note the lack of an innermost no-attribute <tunnel> element ...
... </tunnel> Note the lack of an innermost no-attribute <tunnel> element. ...
... [2] Proxy1 maps this to <tunnel fqdn="proxy2.example.com" port="604"> <tunnel endpoint ...
... tunnel fqdn="proxy2.example.com" port="604"> <tunnel endpoint="operator console"> </tunnel> ...
... <tunnel endpoint="operator console"> </tunnel> </tunnel> ...
... </tunnel> </tunnel> based on local configuration, then processes the new element ...
... element and routing <tunnel endpoint="operator console"> </tunnel> ...
... <tunnel endpoint="operator console"> </tunnel> to proxy2. ...
... to proxy2. [3] Proxy2 receives the TUNNEL element with simply the endpoint ...
... endpoint specified. Local provisioning maps this to <tunnel fqdn='final.example.com' srv='_beep._tcp'> <tunnel/> ...
... <tunnel fqdn='final.example.com' srv='_beep._tcp'> <tunnel/> </tunnel> ...
... <tunnel/> </tunnel> Note the presence of an innermost no-attribute <tunnel> element ...
... </tunnel> Note the presence of an innermost no-attribute <tunnel> element. Proxy2 then strips the outermost element ...
... element, looking up the appropriate address and port, and forwards the <tunnel/> element to the final machine. ...


... The only element defined in this profile is the "tunnel" element. It is described in the following DTD ...
... <!-- DTD for the TUNNEL Profile, as of 2001-02-03 Refer to this DTD ...
... <!ENTITY % TUNNEL PUBLIC "-//IETF//DTD TUNNEL ...
... TUNNEL PUBLIC "-//IETF//DTD TUNNEL//EN" ""> %TUNNEL ...
... TUNNEL//EN" ""> %TUNNEL; --> ...
... <!-- TUNNEL messages role ...
... RPY ====== === === I or L TUNNEL +: ok -: error --> ...
... <!ELEMENT tunnel (tunnel?)> <!ATTLIST tunnel ...
... <!ELEMENT tunnel (tunnel?)> <!ATTLIST tunnel ...
... tunnel (tunnel?)> <!ATTLIST tunnel fqdn CDATA #IMPLIED ip4 CDATA #IMPLIED ...


... When a TUNNEL channel is started, the listener expects a "tunnel ...
... TUNNEL channel is started, the listener expects a "tunnel" element from the initiator ...
... channel zero, it is processed before the reply is returned. In either case, the outermost "tunnel" element is examined. If it has no attributes, then this peer is hosting ...
... connection established as an initiator is closed. If there is a nested "tunnel" element, and the server that has been contacted does not offer a BEEP ...
... BEEP greeting, or the BEEP greeting offered does not include the TUNNEL profile, then this too is treated as an error: the initiating transport connection ...
... is closed, and an error is returned. If there is a nested "tunnel" element, and the identified server is contacted and offers a BEEP ...
... element, and the identified server is contacted and offers a BEEP greeting including the TUNNEL profile, then the outermost element from the "tunnel ...
... TUNNEL profile, then the outermost element from the "tunnel" element received is stripped off, a new TUNNEL ...
... tunnel" element received is stripped off, a new TUNNEL channel is started on the initiating session ...
... Once the proxy has passed the "tunnel" element on the TUNNEL channel ...
... proxy has passed the "tunnel" element on the TUNNEL channel, it awaits an "error" or an "ok" element ...


... 3] of BEEP. The attributes on the "tunnel" element may need to be extended to handle other transport layers. ...
... the session, the semantics for the TUNNEL profile are ill-defined. The TUNNEL profile MUST NOT be advertised in any greetings after ...
... semantics for the TUNNEL profile are ill-defined. The TUNNEL profile MUST NOT be advertised in any greetings after transport security has been negotiated. ...
... An SRV identifier of "_tunnel" is reserved by IANA for use with this profile ...
... IANA for use with this profile. Hence, the "srv" attribute "_tunnel._tcp" MAY be used as a default for finding the appropriate address for tunneling ...
... System port number 604 has been allocated by the IANA for TUNNEL. ...


... This section lists the three-digit error codes the TUNNEL profile may generate. ...
... (E.g., next hop could be contacted, but malformed greeting or no TUNNEL profile advertised.) 553 Parameter invalid ...


... The TUNNEL profile is a profile of BEEP. In BEEP ...
... discussion of this. However, the intent of the TUNNEL profile is to allow bidirectional contact between two machines normally separated by a firewall ...
... contact between two machines normally separated by a firewall. Since TUNNEL allows this connection between BEEP peers, and BEEP ...
... offer a range of services with appropriate greetings, the TUNNEL profile should be configured with care. It is reasonable to strictly limit the hosts and services ...
... services that a proxy is allowed to contact. It is also reasonable to limit the use of the TUNNEL profile to authorized users, as identified by a SASL profile ...
... TLS profile in an end-to-end manner after a TUNNEL has been established will prevent intermediate proxies from observing ...
... attack can also be thwarted by requiring a SASL identification before allowing a TUNNEL channel to be started, but this can have higher overhead ...


... http://iana.org/beep/TUNNEL ...
... http://iana.org/beep/TUNNEL ...
... Message exchanged during channel creation: "tunnel" Messages starting ...
... Messages starting one-to-one exchanges: "tunnel" Messages in positive replies: "ok" ...
... Registration: The System (Well-Known) TCP port number for TUNNEL ...
... A single well-known port, 604, is allocated by the IANA to the TUNNEL profile. Protocol Number ...
... Multicast: none Proposed Name: TUNNEL Profile Short name: tunnel ...
... TUNNEL Profile Short name: tunnel Contact Information: See the "Authors' Addresses ...



Google
Web
RFC-Ref