A SOCKS-based IPv6/IPv4 Gateway Mechanism
RFC 3089

Document Type RFC - Informational (April 2001; No errata)
Last updated 2013-03-02
Stream IETF
Formats plain text html pdf htmlized bibtex
Stream WG state (None)
Document shepherd No shepherd assigned
IESG IESG state RFC 3089 (Informational)
Consensus Boilerplate Unknown
Telechat date
Responsible AD (None)
Send notices to (None)
Network Working Group                                        H. Kitamura
Request for Comments: 3089                               NEC Corporation
Category: Informational                                       April 2001

               A SOCKS-based IPv6/IPv4 Gateway Mechanism

Status of this Memo

   This memo provides information for the Internet community.  It does
   not specify an Internet standard of any kind.  Distribution of this
   memo is unlimited.

Copyright Notice

   Copyright (C) The Internet Society (2001).  All Rights Reserved.


   This document describes a SOCKS-based IPv6/IPv4 gateway mechanism
   that enables smooth heterogeneous communications between the IPv6
   nodes and IPv4 nodes.

   It is based on the SOCKS protocol [SOCKSv5].  By applying the SOCKS
   mechanism to the heterogeneous communications and relaying two
   "terminated" IPv4 and IPv6 connections at the "application layer"
   (the SOCKS server), the SOCKS-based IPv6/IPv4 gateway mechanism is

   Since it is accomplished without introducing new protocols, it
   provides the same communication environment that is provided by the
   SOCKS mechanism.  The same appearance is provided to the
   heterogeneous communications.  No conveniences or functionalities of
   current communications are sacrificed.

1. Introduction

   The SOCKS-based IPv6/IPv4 gateway mechanism is based on a mechanism
   that relays two "terminated" IPv4 and IPv6 connections at the
   "application layer" (the SOCKS server); its characteristics are
   inherited from those of the connection relay mechanism at the
   application layer and those of the native SOCKS mechanism.

Kitamura                     Informational                      [Page 1]
RFC 3089        SOCKS-based IPv6/IPv4 Gateway Mechanism       April 2001

2. Basic SOCKS-based Gateway Mechanism

   Figure 1 shows the basic SOCKS-based gateway mechanism.

                  Client C       Gateway G     Destination D
               +-----------+     (Server)
           +-->+===========+  +-------------+  +-----------+
      same-+   |*SOCKS Lib*|  |  *Gateway*  |  |Application|
       API +-->+===========+  +=====---=====+  +-----------+
               | Socket DNS|  | Socket  DNS |  | Socket DNS|
               +-----------+  +-------------+  +-----------+
               | [ IPv X ] |  |[IPvX]|(IPvY)|  | ( IPv Y ) |
               +-----------+  +-------------+  +-----------+
               |Network I/F|  | Network I/F |  |Network I/F|
               +-----+-----+  +---+-----+---+  +-----+-----+
                     |            |     |            |
                     +============+     +------------+
                       socksified           normal
                       connection         connection
                      (ctrl)+data          data only

                Fig. 1 Basic SOCKS-based Gateway Mechanism

   In this figure, the Client C initiates the communication to the
   Destination D.  Two new functional blocks are introduced and they
   compose the mechanism.

   One, *Socks Lib*, is introduced into the client side (Client C) (this
   procedure is called "socksifying").  The *Socks Lib* is located
   between the application layer and the socket layer, and can replace
   applications' socket APIs and DNS name resolving APIs (e.g.,
   gethostbyname(), getaddrinfo() etc.).  There is a mapping table in it
   for a "DNS name resolving delegation" feature (described below).
   Each socksified application has its own *Socks Lib*.

   The other, *Gateway*, is installed on the IPv6 and IPv4 dual stack
   node (Gateway G).  It is an enhanced SOCKS server that enables any
   types of protocol combination relays between Client C (IPvX) and
   Destination D (IPvY).  When the *Socks Lib* invokes a relay, one
   corresponding *Gateway* process (thread) is spawned from the parent
   *Gateway* to take charge of the relay connection.

   The following four types of combinations of IPvX and IPvY are
   possible in the mechanism.

Kitamura                     Informational                      [Page 2]
RFC 3089        SOCKS-based IPv6/IPv4 Gateway Mechanism       April 2001

    type C ------ G ------ D
           [IPvX]   (IPvY)
     A      IPv4     IPv4       homogeneous (normal SOCKS)
     B      IPv4     IPv6     * heterogeneous *
     C      IPv6     IPv4     * heterogeneous *
     D      IPv6     IPv6       homogeneous

   Type A is supported by the normal SOCKS mechanism.  Type B and C are
   the main targets for the SOCKS-based IPv6/IPv4 gateway mechanism.
   They provide heterogeneous communications.  Type D can be supported
   by the natural extension of the SOCKS mechanism, because it is a
   homogeneous communication.

   Since the *Socks Lib* communicates with the *Gateway* by using SOCKS
   protocol [SOCKSv5], the connection between them (the Client C and the
   Gateway G) is a special connection and is called a "socksified
Show full document text