[Click] how can i measure MLFFR

Paine, Thomas Asa PAINETA at uwec.edu
Thu Jun 29 08:50:44 EDT 2006


    When using the FromDevice, you are not going to get the great packet rates.  30Kpps is about the max you'll squeeze out of it otherwise.  You need to use the polling mode, PollDevice, and a polling driver for the nic.  This will remove all interrupt processing and move things right along.  Just with the UDP packet generation, I've produces in upwards of 500Kpps with the e1000 cards (supplied polling driver in the Click source), loaded kernel module, and a newer Intel P4 CPU (not recalling the speed, but was > 2Ghz).

Thanks, 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
   Thomas Paine (paineta at uwec.edu) 
   University of Wisconsin - Eau Claire 
   garbage foo(garbage g){return(g);} 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 

</email>

-----Original Message-----
From: click-bounces at pdos.csail.mit.edu [mailto:click-bounces at pdos.csail.mit.edu] On Behalf Of ? ?
Sent: Thursday, June 29, 2006 6:25 AM
To: click at pdos.csail.mit.edu
Subject: [Click] how can i measure MLFFR

Hi everyone,
I am experimenting in measuring the maximum loss-free forwarding rate(MLFFR).MLFFR measured in the paper "The Click Modular Router,ACM Transactions on Computer Systems, Vol. 18, No. 3,pp.263-297" is 330,000 packets/s.
My experiement environment is like this:the computer 2 acts as a router.
 computer 1<->computer 2<->computer 3
computer 1 eth0:ip  192.168.18.11 ethernet Address:00:10:5c:cd:7b:88 computer 2 eth0:ip  192.168.18.1  ethernet Address:00:02:2a:dc:44:d6
    eth1:ip  192.168.0.1   ethernet Address:00:10:5c:cd:7b:f5
computer 3 eth0:ip  192.168.0.11  ethernet Address:00:10:5c:cd:7b:9d and the configuration of computer 1 :
/***********************************************/
FastUDPSource(100000,1000000,64,00:10:5c:cd:7b:88,192.168.18.11,50,
  00:10:5c:cd:7b:9d,192.168.0.11,50)
 ->ctr::Counter
 ->ToDevice(eth0);
  s::Script(
  label begin_loop,
  wait 1,
  read ctr.rate,
  goto begin_loop $(lt 1 2),
  stop);
/***************************************/
and the configuration of computer2 is:
/***************************************************/
// eth0, 00:02:2a:dc:44:d6, 192.168.18.1 // eth1, 00:10:5c:cd:7b:f5, 192.168.0.1 c0 :: Classifier(12/0806 20/0001,
                  12/0806 20/0002,
                  12/0800,
                  -);
c1 :: Classifier(12/0806 20/0001,
                  12/0806 20/0002,
                  12/0800,
                  -);
  FromDevice(eth0)->str1::Counter->c0;
FromDevice(eth1)->c1;
  q0::Queue(10000)-> ToDevice(eth0);
q1::Queue(10000)->str2::Counter-> ToDevice(eth1);
  arpr0 ::ARPResponder(192.168.0.1/24 00:10:5c:cd:7b:f5,
       192.168.18.1/24 00:02:2a:dc:44:d6,
       192.168.0.11/24 00:10:5c:cd:7b:9d,
       192.168.18.11/24 00:10:5c:cd:7b:88)->q0;
arpr1 ::ARPResponder(192.168.0.1/24 00:10:5c:cd:7b:f5,
       192.168.18.1/24 00:02:2a:dc:44:d6,
       192.168.0.11/24 00:10:5c:cd:7b:9d,
       192.168.18.11/24 00:10:5c:cd:7b:88)->q1;
  arpq0 ::ARPQuerier(192.168.18.1, 00:02:2a:dc:44:d6);
arpq1 ::ARPQuerier(192.168.0.1, 00:10:5c:cd:7b:f5);
  rt::StaticIPLookup(192.168.18.1/32 0,
     192.168.18.255/32 0,
     192.168.18.0/32 0,
     192.168.0.1/32 0,
     192.168.0.255/32 0,
     192.168.0.0/32 0,
     192.168.18.11/24 1,
     192.168.0.11/24 2,
     0.0.0.0/0 192.168.18.1 1);
  strip0::Strip(14);
strip1::Strip(14);
  // Deliver ARP responses to ARP queriers as well as Linux.
c0[0] -> arpr0;
c1[0] -> arpr1;
t::Tee(2);
c0[1] -> t;
c1[1] -> t;
t[0] -> [1]arpq0[0]->q0;
t[1] -> [1]arpq1[0]->q1;
c0[2] -> strip0;
c1[2] -> strip1;
  strip0->CheckIPHeader->GetIPAddress(16)->rt;
strip1->CheckIPHeader->GetIPAddress(16)->rt;
  rt[0]->Discard;
  rt[1] -> DropBroadcasts
      -> gio1 :: IPGWOptions(192.168.18.1)
      -> dt1 :: DecIPTTL
      -> [0]arpq0;
rt[2] -> DropBroadcasts
      -> gio2 :: IPGWOptions(192.168.0.1)
      -> dt2 :: DecIPTTL
      -> [0]arpq1;
  
dt1[1] -> ICMPError(192.168.18.1, timeexceeded) -> [0]rt; dt2[1] -> ICMPError(192.168.0.1, timeexceeded) -> [0]rt;
  
gio1[1] -> ICMPError(192.168.18.1, parameterproblem) -> [0]rt; gio2[1] -> ICMPError(192.168.0.1, parameterproblem) -> [0]rt;
  
c0[3] -> Discard;
c1[3] -> Discard;
   
  s::Script( label begin_loop,
  wait 1,
  read str1.rate,
  read str2.rate,
  read str1.count,
  read str2.count,
  goto begin_loop $(lt 1 2),
  stop);
/****************************************************************/
  my experiment result is that the maximum of the input rate of computer 2 is 70,000 packets/s. How can I deal with it?


 __________________________________________________
赶快注册雅虎超大容量免费邮箱?
http://cn.mail.yahoo.com
 __________________________________________________
赶快注册雅虎超大容量免费邮箱?
http://cn.mail.yahoo.com
_______________________________________________
click mailing list
click at amsterdam.lcs.mit.edu
https://amsterdam.lcs.mit.edu/mailman/listinfo/click



More information about the click mailing list