[Click] problem with StaticIPLookup

Victor vlyamtsev at mzeal.com
Thu Sep 3 11:18:58 EDT 2009


I am really confused with how "StaticIPLookup" is used for packet forwarding
in basic-router

 In my basic-router I (see below )  I have configuration for the forwarding
between 192.168.1.x and 192.168.10.x where (as far as  can see )
StaticIPLookup output 1 of 192.168.1.x is sent back to eth0, StaticIPLookup
output2 of 192.168.10.x is sent back to eth1, and both are sent to the local
stack (ToHost).

Can someone be so kind to explain the forwarding logic? I would expect to
see something like:

"take output of 192.168.1.x, if destination address belongs to 192.168.10.x
- send it to eth1".  

Or, is my basic-router.click not created correctly?

Thanks

Student of click

 

Basic-router.click

 

// eth0 192.168.1.176 00:00:C0:3B:71:EF

// eth1 192.168.10.1 00:00:C0:CA:68:EF

// Shared IP input path and routing table ip :: Strip(14)

    -> CheckIPHeader(INTERFACES 192.168.1.176/255.255.255.0

192.168.10.1/255.255.255.0)

    -> rt :: StaticIPLookup(

      192.168.1.176/32 0,

      192.168.1.255/32 0,

      192.168.1.0/32 0,

      192.168.10.1/32 0,

      192.168.10.255/32 0,

      192.168.10.0/32 0,

      192.168.1.0/255.255.255.0 1,

      192.168.10.0/255.255.255.0 2,

      255.255.255.255/32 0.0.0.0 0,

      0.0.0.0/32 0,

      0.0.0.0/0.0.0.0 18.26.4.1 1);

// Input and output paths for eth0

c0 :: Classifier(12/0806 20/0001, 12/0806 20/0002, 12/0800, -);

PollDevice(eth0) -> c0;

out0 :: Queue(200) -> todevice0 :: ToDevice(eth0);

c0[0] -> ar0 :: ARPResponder(192.168.1.176 00:00:C0:3B:71:EF) -> out0;

arpq0 :: ARPQuerier(192.168.1.176, 00:00:C0:3B:71:EF) -> out0;

c0[1] -> arpt;

arpt[0] -> [1]arpq0;

c0[2] -> Paint(1) -> ip;

c0[3] -> Print("eth0 non-IP") -> Discard;

 

// Input and output paths for eth1

c1 :: Classifier(12/0806 20/0001, 12/0806 20/0002, 12/0800, -);

PollDevice(eth1) -> c1;

out1 :: Queue(200) -> todevice1 :: ToDevice(eth1);

c1[0] -> ar1 :: ARPResponder(192.168.10.1 00:00:C0:CA:68:EF) -> out1;

arpq1 :: ARPQuerier(192.168.10.1, 00:00:C0:CA:68:EF) -> out1;

c1[1] -> arpt;

arpt[1] -> [1]arpq1;

c1[2] -> Paint(2) -> ip;

c1[3] -> Print("eth1 non-IP") -> Discard;

 

// Local delivery

toh :: ToHost;

arpt[2] -> toh;

rt[0] -> EtherEncap(0x0800, 1:1:1:1:1:1, 2:2:2:2:2:2) -> toh;

 

// Forwarding path for eth0

rt[1] -> DropBroadcasts

    -> cp0 :: PaintTee(1)

    -> gio0 :: IPGWOptions(192.168.1.176)

    -> FixIPSrc(192.168.1.176)

    -> dt0 :: DecIPTTL

    -> fr0 :: IPFragmenter(1500)

    -> [0]arpq0;

dt0[1] -> ICMPError(192.168.1.176, timeexceeded) -> rt;

fr0[1] -> ICMPError(192.168.1.176, unreachable, needfrag) -> rt;

gio0[1] -> ICMPError(192.168.1.176, parameterproblem) -> rt;

cp0[1] -> ICMPError(192.168.1.176, redirect, host) -> rt;

 

// Forwarding path for eth1

rt[2] -> DropBroadcasts

    -> cp1 :: PaintTee(2)

    -> gio1 :: IPGWOptions(192.168.10.1)

    -> FixIPSrc(192.168.10.1)

    -> dt1 :: DecIPTTL

    -> fr1 :: IPFragmenter(1500)

    -> [0]arpq1;

dt1[1] -> ICMPError(192.168.10.1, timeexceeded) -> rt;

fr1[1] -> ICMPError(192.168.10.1, unreachable, needfrag) -> rt;

gio1[1] -> ICMPError(192.168.10.1, parameterproblem) -> rt;

cp1[1] -> ICMPError(192.168.10.1, redirect, host) -> rt;

 



More information about the click mailing list