[Click] [Help!!!] SMP click problem

Beyers Cronje bcronje at gmail.com
Mon Oct 24 09:32:41 EDT 2005


Hi Kim,

If memory serves me correctly someone picked up a SMP bug in click's sk_buff
recycle routines for Click 1.4.3. So I suggest you check out latest CVS
click. Unfortunately I havent used latest cvs version, so I cant comment on
how stable it is yet.

Regards

Beyers

On 10/19/05, 김병철 <protobird at chollian.net> wrote:
>
> Hi,
> I am a newbie of Click and appreciate you for good router software.
>
> While non-SMP click does not occur any problem,
> it seems SMP click can not guaranttee mutual exclusion during sk_buff
> operation.
>
> Which versoins of kernel and click can you make sure SMP click runs
> correctly?
>
> I am working on vanilla Linux Kernel 2.4.20, Dual Zeon-HT 2.0 GHz,
> 2 Intel Pro/1000 gigabit ethernet,
> Click-1.4.3 configured with options '--enable-multithread=4'
> launched with module parameter '--thread=4'
>
> Click configuration is as below;
>
>
> ==================================================================================
> // Generated by make-ip-conf.pl
> // eth0 192.168.3.94 <http://192.168.3.94> 00:02:B3:F3:18:50
> // eth1 10.10.1.94 <http://10.10.1.94> 00:02:B3:F3:18:51
> // eth1 192.168.2.94 <http://192.168.2.94> 00:02:B3:F3:18:51
>
> // Shared IP input path and routing table
> ip :: Strip(14)
> -> CheckIPHeader(INTERFACES 192.168.3.94/255.255.255.0<http://192.168.3.94/255.255.255.0>
> 10.10.1.94/255.255.255.0 <http://10.10.1.94/255.255.255.0>
> 192.168.2.94/255.255.255.0 <http://192.168.2.94/255.255.255.0>)
> -> rt :: StaticIPLookup(
> 192.168.3.94/32 <http://192.168.3.94/32> 0,
> 192.168.3.255/32 <http://192.168.3.255/32> 0,
> 192.168.3.0/32 <http://192.168.3.0/32> 0,
> 10.10.1.94/32 <http://10.10.1.94/32> 0,
> 10.10.1.255/32 <http://10.10.1.255/32> 0,
> 10.10.1.0/32 <http://10.10.1.0/32> 0,
> 192.168.2.94/32 <http://192.168.2.94/32> 0,
> 192.168.2.255/32 <http://192.168.2.255/32> 0,
> 192.168.2.0/32 <http://192.168.2.0/32> 0,
> 192.168.3.0/255.255.255.0 <http://192.168.3.0/255.255.255.0> 1,
> 10.10.1.0/255.255.255.0 <http://10.10.1.0/255.255.255.0> 2,
> 192.168.2.0/255.255.255.0 <http://192.168.2.0/255.255.255.0> 3,
> 255.255.255.255/32 <http://255.255.255.255/32> 0.0.0.0 <http://0.0.0.0> 0,
> 0.0.0.0/32 <http://0.0.0.0/32> 0,
> 0.0.0.0/0 <http://0.0.0.0/0> 4);
>
> // ARP responses are copied to each ARPQuerier and the host.
> arpt :: Tee(4);
>
> // Input and output paths for eth0
> c0 :: Classifier(12/0806 20/0001, 12/0806 20/0002, 12/0800, -);
> //in0 :: PollDevice(eth0) -> c0;
> in0 :: FromDevice(eth0) -> c0;
> out0 :: Queue(10240) -> todevice0 :: ToDevice(eth0);
> c0[0] -> ar0 :: ARPResponder(192.168.3.94 <http://192.168.3.94>00:02:B3:F3:18:50) -> out0;
> arpq0 :: ARPQuerier(192.168.3.94 <http://192.168.3.94>, 00:02:B3:F3:18:50)
> -> out0;
> c0[1] -> arpt;
> arpt[0] -> [1]arpq0;
> //c0[2] -> Paint(1) -> ip;
> //c0[2] -> Paint(1) -> srchash :: HashSwitch (6, 6);
> c0[2] -> Paint(1) -> srchash :: RoundRobinSwitch;
> c0[3] -> Discard
> // load balancing with Ethernet source address
> srchash [0] -> Queue (10240) -> thread0 :: Unqueue -> ip;
> srchash [1] -> Queue (10240) -> thread1 :: Unqueue -> ip;
>
>
> // Input and output paths for eth1
> c1 :: Classifier(12/0806 20/0001, 12/0806 20/0002, 12/0800, -);
> //in1 :: PollDevice(eth1) -> c1;
> in1 :: FromDevice(eth1) -> c1;
> out1 :: Queue(10240) -> todevice1 :: ToDevice(eth1);
> c1[0] -> ar1 :: ARPResponder(10.10.1.94 <http://10.10.1.94> 192.168.2.94<http://192.168.2.94>00:02:B3:F3:18:51) -> out1;
> arpq1 :: ARPQuerier(10.10.1.94 <http://10.10.1.94>, 00:02:B3:F3:18:51) ->
> out1;
> arpq2 :: ARPQuerier(192.168.2.94 <http://192.168.2.94>, 00:02:B3:F3:18:51)
> -> out1;
> c1[1] -> arpt;
> arpt[1] -> [1]arpq1;
> arpt[2] -> [1]arpq2;
> c1[2] -> Paint(2) -> ip;
> c1[3] -> Discard
>
> // Local delivery
> toh :: ToHost;
> arpt[3] -> 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.3.94 <http://192.168.3.94>)
> -> FixIPSrc(192.168.3.94 <http://192.168.3.94>)
> -> dt0 :: DecIPTTL
> -> fr0 :: IPFragmenter(1500)
> -> [0]arpq0;
> dt0[1] -> ICMPError(192.168.3.94 <http://192.168.3.94>, timeexceeded) ->
> rt;
> fr0[1] -> ICMPError(192.168.3.94 <http://192.168.3.94>, unreachable,
> needfrag) -> rt;
> gio0[1] -> ICMPError(192.168.3.94 <http://192.168.3.94>, parameterproblem)
> -> rt;
> cp0[1] -> ICMPError(192.168.3.94 <http://192.168.3.94>, redirect, host) ->
> rt;
>
> // Forwarding path for eth1
> rt[2] -> DropBroadcasts
> -> cp1 :: PaintTee(2)
> -> gio1 :: IPGWOptions(10.10.1.94 <http://10.10.1.94>)
> -> FixIPSrc(10.10.1.94 <http://10.10.1.94>)
> -> dt1 :: DecIPTTL
> -> fr1 :: IPFragmenter(1500)
> -> [0]arpq1;
> dt1[1] -> ICMPError(10.10.1.94 <http://10.10.1.94>, timeexceeded) -> rt;
> fr1[1] -> ICMPError(10.10.1.94 <http://10.10.1.94>, unreachable, needfrag)
> -> rt;
> gio1[1] -> ICMPError(10.10.1.94 <http://10.10.1.94>, parameterproblem) ->
> rt;
> cp1[1] -> ICMPError(10.10.1.94 <http://10.10.1.94>, redirect, host) -> rt;
>
> // Forwarding path for eth1
> rt[3] -> DropBroadcasts
> -> cp2 :: PaintTee(3)
> -> gio2 :: IPGWOptions(192.168.2.94 <http://192.168.2.94>)
> -> FixIPSrc(192.168.2.94 <http://192.168.2.94>)
> -> dt2 :: DecIPTTL
> -> fr2 :: IPFragmenter(1500)
> -> [0]arpq2;
> dt2[1] -> ICMPError(192.168.2.94 <http://192.168.2.94>, timeexceeded) ->
> rt;
> fr2[1] -> ICMPError(192.168.2.94 <http://192.168.2.94>, unreachable,
> needfrag) -> rt;
> gio2[1] -> ICMPError(192.168.2.94 <http://192.168.2.94>, parameterproblem)
> -> rt;
> cp2[1] -> ICMPError(192.168.2.94 <http://192.168.2.94>, redirect, host) ->
> rt;
>
> rt[4] -> Discard;
>
> //StaticThreadSched (in0 0);
> //StaticThreadSched (out1 0);
> //StaticThreadSched (in1 1);
> //StaticThreadSched (out0 1);
> //StaticThreadSched (thread0 2);
> //StaticThreadSched (thread1 3);
>
> //ThreadMonitor ();
>
> ==================================================================================
>
> Thansks in advance
>
> Kim, Byungchul
>
>
>
>
> _______________________________________________
> click mailing list
> click at amsterdam.lcs.mit.edu
> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>


More information about the click mailing list