Subject: [BEHAVE] Questions on draft-ietf-behave-ftp64-00.txt

From: "Michael Lui (milui)" <[email-masked]>
Date: Mon, 8 Mar 2010 16:47:37 -0800

Hi,
 
I have a few questions on draft-ietf-behave-ftp64-00.txt.
 
1) In the following statement:
    "... Note that the translation of EPSV through all translators and
EPRT
    through a stateless translator is relatively simple and translation
    of EPRT through a stateful translator relatively difficult...."

    Why is translation of EPRT through a stateful translator more
difficult? Pls clarify.

2) > In "..
       negotiation attempts by either the client or the server, except
for
       those allowed by [RFC1123], should be rejected by the FTP ALG
       without relaying those attempts.  This avoids the situation where
the
       client and the server negotiate options unknown to the FTP
ALG..."

       Not sure what kind of "options" should be allowed? Can you
clarify this in the doc?
 
3) In 4.2 "EPSV to PASV translation", it mentions:
   "..    If the client issues EPSV ALL, the FTP ALG must not pass this
command
          to the server, but respond with:

          202 Command not implemented.
    "
 
    Is it a MUST to respond 202 to the client? Is it acceptable not
sending anything back to the client?
    In some ALG implementation, sending a response directly from ALG is
quite different from than modifying a packet and then sending it out. It
will have a lot of implications.
    I like to know if there is other alternative than sending a response
from ALG to the client in this scenario.
 
4) When an IPv6 client sends PASV to a IPv4 server, does FTP ALG needs
to do anything? Will the PASV command and response remain intact?
    Something like:
               ipv6 client                 ftp alg
ipv4 server
                                   PASV                     PASV
                                ----------->            -------------->
                                           
            229 Entering Passive Mode     227 Entering Passive Mode
                   (a,b,c,d,e,d)
(a,b,c,d,e,d)
                                 <-----------            <--------------
 
5) When IPv6 client sends an EPRT command to IPv4 server using stateless
1:1 translation,
 
               ipv6 client
ftp alg                                               ipv4 server
                               EPRT |2|1080::8:800:200c:417A|6275
PORT a,b,c,d,e,f
 
------------------------------------------------>
------------------->
       
    a,b,c,d is the translated ipaddr from NAT after FTP64 and e,f will
be the same number as in the EPRT command.
 
    Is this correct?
 
6) Same question as in (5) but this time EPRT will have an IPv4 address
like:
               ipv6 client
ftp alg                                               ipv4 server
                                         EPRT |1|132.235.1.2|6275
PORT a,b,c,d,e,f
 
------------------------------------------------>
------------------->
       
    a,b,c,d is the translated ipaddr from NAT after FTP64 and e,f will
be the same number as in the EPRT command.
 
    Is this correct?
 
7) When IPv6 client sends an EPRT command to IPv4 server using stateful
1:N translation,
 
               ipv6 client
ftp alg                                               ipv4 server
                               EPRT |2|1080::8:800:200c:417A|6275
PORT a,b,c,d,e,f
 
------------------------------------------------>
------------------>
       
    a,b,c,d is the translated ipaddr from NAT after FTP64 and e,f will
be the NEW translated port number from NAT after FTP64.
 
    Is this correct?
 
8) Same question as in (7) but this time EPRT will have an IPv4 address
in it.

Thanks,
- Michael