private synchronized void dequeue(Sim_event ev)
    {
        if (ev == null || pktList_.isEmpty() == true) {
            return;
        }

        try
        {
            Packet pkt = (Packet) pktList_.remove(0);
            super.sim_schedule(routerID_, 0, GridSimTags.SCHEDULER_DEQUE, pkt);
            if (pktList_.isEmpty() == false)
            {
                Packet nextPkt = (Packet) pktList_.get(0);
                double delay = (nextPkt.getSize() * NetIO.BITS) / baudRate_;
                super.sim_schedule(super.get_id(), delay, DEQUEUE_PACKET);
            }
        }
        catch (Exception e) {
            // ... empty
        }
    }