Help with element design...

Juan Luis Baptiste juancho at metallica.com
Wed Nov 14 18:46:03 EST 2001


Hi,

As I said before, I'm going to do some elements to complement the IPv6/IPv4
translator elements of

Click's GT64, they are two ALG's, one for handling FTP packages and the other
one for DNS requests.

I have in this moment two approaches for this, but I don't know wich of them
would be better to do in
click.

First of all, let me explain a little how GT64 works:

(IPv4)
(IPv6)

          ---------                    -------------------
------>| pt46 | ----------->  |                        | ------------->
          ---------                    |                        | 
                                          |                        |
          ---------                    |         APT       |  
<------| pt64 | <-----------  |                        | <------------- 
          ---------                    |                        |
                                          --------------------

APT is the Address and Port Translator, it receives ipv6 packages and changes
it addresses based

in some mappings defined in the configuration (static or dynamic), like a NAT.
pt46 is the protocol translator from ipv4 to ipv6, it translates the
ipv4/tcp/udp headers to ipv6
equivalents.
pt64 does the same thing but in the opposite direction.

The two approaches for the alg's are as follows:

(IPv4)
(IPv6)

          ---------                    -------------------
------>| pt46 | ----------->  |                        |------------------->
---------                    |                        |

/\
|                        |

|
---------                    |         APT       |
|
<------| pt64 | <-----------  |                        | <----------  | ------
---------        /\          |                        |

|
|          --------------------
|
|                 |        |

|
|                v        v

|
|            -------------

|
                               ----------|   ALG    |--------------------
                                            ------------- 

With this approach, I would have to modify APT elements to distinguish for
FTP/DNS (based in the
source/destination
port), and distinguish if a packet is heading to a IPv6 or IPv4 network so it
can send the packet thru
the
right output, so when the alg gets it it can know to wich routing elements push
it. What I don't like from

this one is that I got to modify APT element, and I think that is not the best
way, as the idea is to
leave
the elements unchanged.

The other approach is this:

(IPv4)
(IPv6)

---------                    -------------------

---------______>
------>| pt46 | ----------->  |                        |
------------->| ALG |______>

---------                    |
|                     ---------

|

|
<__ ---------            ---------                  |         APT       |  
<__ | ALG | <------| pt64 | <----------  |                        |
<-------------

---------           ---------                   |

|

--------------------

Here, the alg's are connected after the packet translation has been done. In
the same way the ALG element has

two push inputs and outputs that work in the same way as in the other case. I
like this one
more,
but what I don't like is that every packet has to be checked by the ALG
independently if it is a
FTP/DNS
packet or not, so I don't know if the performance would be dramatically
affected.

Well, what do you guys think?

P.D.: I hope the drawings don't get messed up :-P

Juan Luis
http://www.merlinux.org

________________________________________________________
Get your Private, Free E-mail from Metallica at http://mail.metallica.com/
powered by
XingMail.

Check out the Metallica Official Web Site at http://www.metallica.com




More information about the click mailing list