Besides, since the topology is connected by the switches. I checked portstats, it shows no drop at the switch.
Also, I tried to increase/decrease the burst size at the poll devices, with no luck. On Thu, Jan 19, 2012 at 01:48:24PM -0500, Yu Chen wrote: > A correction: User 1 and User 2 are sending to each other, User 3 and User 4 > are sending to each other. > > Besides, I also tried to use one flow, given the default txqueuelen=1000. > There are also random losses. > > The Click version is 1.8.0 on Linux 2.6.24.7. > On Thu, Jan 19, 2012 at 01:45:00PM -0500, Yu Chen wrote: > > Hi all, > > > > I am having an experiment with the following topology running on Deterlab. > > I > > am having a 4-core Xeon and modified e1000 driver running ore Xeon and > > modified > > e1000 driver running. The memory is 4GB. > > > > User1 > > | > > User3-----Router------User4 > > | > > User2 > > > > User 1 is sending packet to User 2; User 3 is sending packets to User 4. > > The router only routes stuff with best effort. However, what I observed is > > very few losses, distributed on a small random set of rounds. What is > > surprising is that there are losses on one particular netcard when the > > sending > > rate is only 125,000 packets/second. The loss happens at the receiving > > phase. > > > > Below is what I have tried: > > 1' I am using 4 threads, each corresponding to one pair of PollDevice and > > ToDevice. > > 2' I have changed the queue length at the interface cards. I set > > txqueuelen=1 > > for the senders to decrease the possible burstiness. By increasing the > > receiving queue length from 64 to 4096 > > (the maximum queue length), the loss rate decreases. > > 3' I tried to discard the packets on their arrival at the router. In this > > case, > > there is no observed loss. > > > > I am kind of lost at the point. Any suggestions on what can be the possible > > reason and what I can try next? > > > > Attached is my code. > > > > Best Regards, > > Yu > > > > Router: > > ----------------------------------------------------------------------- > > ddressInfo(router1-w1 10.0.1.1 00:15:17:5d:16:4a, //eth2 > > user1-w1 10.0.1.2 00:15:17:5d:29:28, //eth0 > > router1-w2 10.0.2.1 00:15:17:5d:16:48, //eth0 > > user2-w2 10.0.2.2 00:15:17:57:ce:14, //eth0 > > router1-w3 10.0.3.1 00:15:17:5d:16:4b, //eth3 > > user3-w3 10.0.3.2 00:15:17:5d:27:e8, //eth0 > > router1-w4 10.0.4.1 00:15:17:5d:16:49, //eth1 > > user4-w4 10.0.4.2 00:15:17:5d:2a:3c, //eth0 > > ); > > > > c1 :: Classifier(12/0806 20/0001, > > 12/0806 20/0002, > > 12/0800, > > -); > > c2 :: Classifier(12/0806 20/0001, > > 12/0806 20/0002, > > 12/0800, > > -); > > c3 :: Classifier(12/0806 20/0001, > > 12/0806 20/0002, > > 12/0800, > > -); > > c4 :: Classifier(12/0806 20/0001, > > 12/0806 20/0002, > > 12/0800, > > -); > > > > q0 :: Discard; > > // Idle -> ToDevice(eth1); > > // Idle -> ToDevice(eth3); > > // Idle -> ToDevice(eth2); > > // Idle -> ToDevice(eth0); > > q1 :: CPUQueue(1000000) -> EtherEncap(0x0800, router1-w1, user1-w1) -> td1 > > :: ToDevice(eth2); > > q2 :: CPUQueue(1000000) -> EtherEncap(0x0800, router1-w2, user2-w2) -> td3 > > :: ToDevice(eth0); > > q3 :: CPUQueue(1000000) -> EtherEncap(0x0800, router1-w3, user3-w3) -> td2 > > :: ToDevice(eth3); > > q4 :: CPUQueue(1000000) -> EtherEncap(0x0800, router1-w4, user4-w4) -> td0 > > :: ToDevice(eth1); > > > > rt :: LookupIPRouteMP(10.0.1.0/32 0, 10.0.1.1/32 0, 10.0.1.255/32 0, > > 10.0.2.0/32 0, 10.0.2.1/32 0, 10.0.2.255/32 0, > > 10.0.3.0/32 0, 10.0.3.1/32 0, 10.0.3.255/32 0, > > 10.0.4.0/32 0, 10.0.4.1/32 0, 10.0.4.255/32 0, > > 10.0.1.0/24 1, 10.0.2.0/24 2, 10.0.3.0/24 3, > > 10.0.4.0/24 4, 0.0.0.0/0 0); > > rt[0] -> Discard; > > rt[1] -> q1; > > rt[2] -> q2; > > rt[3] -> q3; > > rt[4] -> q4; > > > > pd1 :: PollDevice(eth2) -> c1; > > c1[0] -> q0; > > c1[1] -> q0; > > c1[2] -> DropBroadcasts -> Strip(14) -> GetIPAddress(16) -> rt; > > c1[3] -> Discard; > > > > pd3 :: PollDevice(eth0) -> c2; > > c2[0] -> q0; > > c2[1] -> q0; > > c2[2] -> DropBroadcasts -> Strip(14) -> GetIPAddress(16) -> rt; > > c2[3] -> Discard; > > > > pd2 :: PollDevice(eth3) -> c3; > > c3[0] -> q0; > > c3[1] -> q0; > > c3[2] -> DropBroadcasts -> Strip(14) -> GetIPAddress(16) -> rt; > > c3[3] -> Discard; > > > > pd0 :: PollDevice(eth1) -> c4; > > c4[0] -> q0; > > c4[1] -> q0; > > c4[2] -> DropBroadcasts -> Strip(14) -> GetIPAddress(16) -> rt; > > c4[3] -> Discard; > > > > StaticThreadSched(pd2 0, td0 0, pd0 1, td2 1, pd3 2, td1 2, pd1 3, td3 3); > > > > User: > > // > > AddressInfo(router1-w1 10.0.1.1 00:15:17:5d:16:4a, //eth2 > > user1-w1 10.0.1.2 00:15:17:5d:29:28, //eth0 > > router1-w2 10.0.2.1 00:15:17:5d:16:48, //eth0 > > user2-w2 10.0.2.2 00:15:17:57:ce:14, //eth0 > > router1-w3 10.0.3.1 00:15:17:5d:16:4b, //eth3 > > user3-w3 10.0.3.2 00:15:17:5d:27:e8, //eth0 > > router1-w4 10.0.4.1 00:15:17:5d:16:49, //eth1 > > user4-w4 10.0.4.2 00:15:17:5d:2a:3c, //eth0 > > ); > > //Send > > udp :: FastUDPSource(RATE 400000, LIMIT 20000000, LENGTH 78, > > SRCETH user1-w1, SRCIP user1-w1, SPORT 1, > > DSTETH router1-w1, DSTIP user2-w2, DPORT 1, > > CHECKSUM false, INTERVAL 0, ACTIVE false) > > -> ToDevice(eth0); > > > > s :: Script(TYPE ACTIVE, write ctr.reset, write udp.active false, > > wait 1, wait 9, write udp.active true); > > > > > _______________________________________________ > click mailing list > [email protected] > https://amsterdam.lcs.mit.edu/mailman/listinfo/click _______________________________________________ click mailing list [email protected] https://amsterdam.lcs.mit.edu/mailman/listinfo/click
