public String toString()
    {
        if (desc_ == null)
        {
            StringBuffer sb = new StringBuffer("Packet #");
            sb.append(pktNum);
            sb.append(", out of, ");
            sb.append(totalPkts);
            sb.append(", with id, ");
            sb.append(pktID_);
            sb.append(", from, ");
            sb.append( GridSim.getEntityName(srcID) );
            sb.append(", to, ");
            sb.append( GridSim.getEntityName(destID) );
            sb.append(", tag, ");

            if (tag == GridSimTags.PKT_FORWARD) {
                sb.append("GridSimTags.PKT_FORWARD");
            }
            else if (tag == GridSimTags.JUNK_PKT) {
                sb.append("GridSimTags.JUNK_PKT");
            } else if (tag == GridSimTags.FLOW_SUBMIT) {
                sb.append("GridSimTags.FLOW_SUBMIT");
            } else if (tag == GridSimTags.FLOW_ACK) {
                sb.append("GridSimTags.FLOW_ACK");
            } else {
                sb.append(tag);
            }

            desc_ = sb.toString();
        }

        return desc_;
    }