[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[ns] counting packet losses in a queue
Hi,
if you want to count packet losses in a queue, e.g., DropTail,
then you have to add only one new variable in the derived
class of your queue type, e.g., My_DropTail, and in the method:
void My_DropTail::enque(Packet* p)
{
  q_->enque(p);
  if (q_->length() >= qlim_)
  {
/* new lines (count packet losses, print info about the lost packet) */
    lost_packets_counter_++; /* new variable */
    if (MY_INFO_OUTPUT == 1)
    { /+ print some infos about the lost packet */
      double now = Scheduler::instance().clock();
      hdr_cmn *ph = hdr_cmn::access(p);
      if (ph->ptype() == PT_TCP || ph->ptype() == PT_ACK)
      {
        hdr_ip *iph = hdr_ip::access(p);
        ns_addr_t src = iph->src();
        ns_addr_t dst = iph->dst();
        hdr_tcp *tcph = hdr_tcp::access(p);
        int seqno = tcph->seqno();
        cout << "DTQ #" << setw(3) << my_instance_number
             << ": packet loss in a router (C = " << setw(3)
             << src.addr_ << ":" << setw(3) << src.port_ << " -> "
             << setw(3) << dst.addr_ << ":" << setw(3) << dst.port_
             << ", S = " << setw(8) << seqno << ", L = " << setw(8)
             << lost_packets_counter_ << ") [T = ";
        cout.form("%12.6lf", now) << "]" << endl;
      }
      else
      {
        cout << "DTQ #" << setw(3) << my_instance_number
             << ": packet loss in a router (L = " << setw(8)
             << lost_packets_counter_ << ") [T = ";
        cout.form("%12.6lf", now) << "]" << endl;
      }
    }
*/ original code */
    if (drop_front_)
    { /* remove from head of queue */
      Packet *pp = q_->deque();
      drop(pp);
    }
    else
    {
      q_->remove(p);
      drop(p);
    }
  }
}
That's it. For counting delivered packets you can use another
variable in the dequeue-method. 
Best regards,
Michael Savoric
 
======================================================
E-Mail:		[email protected]
Phone:	 	(030)314-23840
Postal address:	Technical University Berlin
		Telecommunication Networks Group (TKN)
		Einsteinufer 25, 10587 Berlin
======================================================