private synchronized void sendInfoPacket(Sim_event ev)
    {
        IO_data data = (IO_data) ev.get_data();
        Object obj = data.getData();

        // gets all the relevant info
        long size = data.getByteSize();
        int destId = data.getDestID();
        int netServiceType = data.getNetServiceLevel();
        int tag = ev.get_tag();
        String name = GridSim.getEntityName(outPort_.get_dest());

        // we need to packetsize the data, all packets are sent with size MTU
        // only the last packet contains the ping data, the receiver should
        // throw away all other data
        int MTU = link_.getMTU();
        int numPackets = (int) Math.ceil(size / (MTU * 1.0));

        // break ping size into smaller pieces
        // Also, make sure that it is not for pinging itself
        FnbEndToEndPath conn; // = new FnbEndToEndPath(destId, super.get_id(), netServiceType, numPackets);
        int glID;
        if (obj instanceof Gridlet)
        {
            glID = ((Gridlet) obj).getGridletID();
            conn = new FnbEndToEndPath(destId, super.get_id(), netServiceType, numPackets, glID, false);
        }
        else
        {
            conn = new FnbEndToEndPath(destId, super.get_id(), netServiceType, numPackets);
        }


        if (size > MTU && outPort_.get_dest() != destId)
        {
            // make dummy packets with null data
            convertIntoPacket(MTU, numPackets, tag, conn);
        }

        // get the remaining ping size
        size = data.getByteSize() - MTU * (numPackets - 1);

        // create the real InfoPacket
        InfoPacket pkt = new InfoPacket(name, pktID_, size, outPort_.get_dest(),
                                        destId, netServiceType);

        // set the required info
        pkt.setLast(super.get_id());
        pkt.addHop(outPort_.get_dest());
        pkt.addEntryTime(GridSim.clock());
        pkt.setOriginalPingSize(data.getByteSize());

        pktID_++; // increments packet ID
        enque(pkt, GridSimTags.SCHEDULE_NOW);
    }