Hi, all,

 

I've successfully installed TKN 802.11e patch into NS2.31. I'm testing the
effects of 802.11e parameters on collision rate, loss rate, throughput and
average delay as network load increases. My topology is static with the
nodes randomly positioned and a random node starts 1 flow of each priority
level (total 4) every 20s of simulation time (total 14x4).

 

I was trying to test topologies with 10, 30 and 50 nodes. With 10 nodes,
I've got no problem at all in all scenarios I ran.

 

However, simulations that generate higher throughput in scenarios with 30
and 50 nodes consume so much memory that it can't finish. I get:

 

terminate called after throwing an instance of 'std::bad_alloc'

  what():  St9bad_alloc

 

So, comes one of my doubts: how scalable is this code? What's the maximum
number of nodes or flows I can have? What have you tested? I tried removing
the headers I'm not using and all that stuff for running large simulations
but I still get this error.

 

Besides that, I've got some errors when running the simulations with 30 and
50 nodes with CFB enabled:

 

ns: mac/802_11e/mac-802_11e.cc:80: : Assertion `dh->dh_fc.fc_type == 0x01'
failed.

 

This occurs when the packet that is to be transmitted in the function below
is a data packet and not a control packet.

 

inline void

Mac802_11e::transmit(Packet *p, double t)

{

        /*

         * If I'm transmitting without doing CS, such as when

         * sending an ACK, any incoming packet will be "missed"

         * and hence, must be discarded.

         */

         if(rx_state_ != MAC_IDLE) {

                struct hdr_mac802_11e *dh = HDR_MAC802_11E(p);

 

                assert(dh->dh_fc.fc_type == MAC_Type_Control);

                assert(dh->dh_fc.fc_subtype == MAC_Subtype_ACK);

 

                assert(pktRx_);

                struct hdr_cmn *ch = HDR_CMN(pktRx_);

 

                ch->error() = 1;        /* force packet discard */

        }

.

 

My doubt is: when CFB is enabled, data packets may be transmitted without
doing CS too, right? If so, assert shouldn't check just if p is a control
packet but if it is a data packet too. I'd really appreciate your advice
here.

 

Other error I've got was:

 

ns: mac/802_11e/mac-802_11e.cc:1107: : Assertion `pktTx_[pri]' failed.

 

void

Mac802_11e::RetransmitDATA(int pri)

{

 

        struct hdr_cmn *ch;

        struct hdr_mac802_11e *mh;

        u_int32_t *rcount, *thresh;

 

        assert(mhBackoff_.backoff(pri) == 0);

 

        assert(pktTx_[pri]);

        assert(pktRTS_[pri] == 0);

 

        ch = HDR_CMN(pktTx_[pri]);

        mh = HDR_MAC802_11E(pktTx_[pri]);

...

 

Does this mean that the packet that should be retransmitted doesn't exist??

 

Thank you very much for your help.

BR

Livia

Reply via email to