[Click] network load-balancer troubleshooting

Sunjeet Singh sstattla at gmail.com
Tue Dec 7 20:52:17 EST 2010


When I do a simple Click program-

FromDevice(eth4, PROMISC true) -> Print -> Discard;

it prints my regular traffic on eth4 but not the traffic that I am 
sending on eth4 using tcpreplay. Does FromDevice only capture packets 
that are destined to that interface and not packets that originate from 
that interface?


Thanks,
Sunjeet


On 10-12-07 5:36 PM, Roman Chertov wrote:
> On Tue, 07 Dec 2010 17:30:07 -0800 Sunjeet Singh<sstattla at gmail.com>  wrote
>
>>> You can do something like this.
>>>
>>> my_switch[0] ->   Print(1) ->   ...
>>> my_switch[1] ->   Print(2) ->   ...
>>> my_switch[2] ->   Print(3) ->   ...
>>>
>> This doesn't print the packets that I am sending to eth4. Are the
>> packets getting discarded before they are reaching Click? Or are they
>> returning a value that is not in the my_switch[0] to my_switch[2] range?
> You can put a Print element like this to see what is going on.
>
> FromDevice(eth4, PROMISC true) ->  Print ->  my_switch;
>
>>> Also, you need to strip the original Ethernet header first.  Otherwise, you
>>> are
>>> just encapsulating an Ethernet frame inside another Ethernet frame.  So you
>>> would want to place a Strip(14) after my_switch[x].
>> I need to modify the MAC address fields (only) of the existing packets
>> and send them. How should I go about doing that?
> http://read.cs.ucla.edu/click/elements/storeetheraddress
>
> Roman
>
>>> My favorite debugging method is using a Tee.
>>>
>>> path ->   t :: Tee ->   ...
>>>
>>> t[1] ->   ToHostSniffers(ethX);
>>>
>>> and then you can just run tcpdump/wireshark to see what packets are on the
>>> path
>>> (assuming you have Ethernet packets).
>> I will look into this, thank you.
>>
>>
>> Thanks for your help!
>> Sunjeet
>>
>>
>>> Roman
>>>
>>>
>>> On Tue, 07 Dec 2010 14:38:28 -0800 Sunjeet Singh<sstattla at gmail.com>   wrote
>>>
>>>> Can someone please help me troubleshoot?
>>>>
>>>> On Linux, I'm trying to configure a load-balancer that sits in front of
>>>> a cluster, receives all packets destined to that cluster, calculates a
>>>> hash of some fields of the packet using HashSwitch() to decide which
>>>> worker machine in the cluster to send that packet to, and finally then
>>>> forwards that packet to that worker machine by rewriting the MAC Address
>>>> field of that packet.
>>>>
>>>> Here's what my click script looks like (currently testing with one
>>>> frontend machine and one worker machine)-
>>>>
>>>> AddressInfo(mymac<IP add. of frontend/8>   <mac add of eth0>);
>>>> AddressInfo(worker1<IP add. of worker1/8>   <mac add of worker eth0>);
>>>> AddressInfo(worker2<IP add. of worker1/8>   <mac add of eth1>);
>>>> AddressInfo(worker3<IP add. of worker1/8>   <mac add of eth2>);
>>>>
>>>> my_switch :: HashSwitch(26, 8);
>>>>
>>>> FromDevice(eth4, PROMISC true) ->   my_switch;
>>>> todevice1 :: ToDevice(eth0);
>>>> todevice2 :: ToDevice(eth1);
>>>> todevice3 :: ToDevice(eth2);
>>>>
>>>> my_switch[0] ->   EtherEncap(0x0800, mymac, worker1) ->   Queue ->
>>>> todevice1;
>>>> my_switch[1] ->   EtherEncap(0x0800, mymac, worker2) ->   Queue ->
>>>> todevice2;
>>>> my_switch[2] ->   EtherEncap(0x0800, mymac, worker3) ->   Queue ->
>>>> todevice3;
>>>>
>>>>
>>>> When I run the script with the command "sudo click try.click", it starts
>>>> executing and gives no messages. To test it,
>>>> I used tcpdump to first see if any of the interfaces on worker1 is
>>>> receiving any traffic ->   No.
>>>> Then I checked if any traffic is going out of eth0, eth1 or eth2 on
>>>> frontend ->   No.
>>>> Checked if eth4 is receiving the packets I sent through tcpreplay ->   Yes.
>>>>
>>>> How can I go about debugging this? I will greatly appreciate any help in
>>>> this regard.
>>>>
>>>> Thank you,
>>>> Sunjeet Singh
>>>>
>>>>
>>>> _______________________________________________
>>>> click mailing list
>>>> click at amsterdam.lcs.mit.edu
>>>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>>> _______________________________________________
>>> click mailing list
>>> click at amsterdam.lcs.mit.edu
>>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>> _______________________________________________
>> click mailing list
>> click at amsterdam.lcs.mit.edu
>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>



More information about the click mailing list