[Ns-developers] Mac layer 802.11n

Mirko Banchi mk.banchi at gmail.com
Wed Jan 7 03:25:11 PST 2009


>
> I also looked briefly at the aggregation support and its interaction
> with the rate control code but I have to confess that I am not too
> familiar with the latest 802.11n spec (I did get a copy of draft 7) so,
> I have a question for you too  :)  What is the difference between MSDU and
> MPDU aggregation ? When do you use one or the other ? 
>
> thanks a lot for getting started on this project !
Hi Mathieu,

MSDU aggregation is performed at Mac Layer and MPDU aggregation is
performed at Physical Layer.

A-MSDU:

- at every packet (MSDU), received from LLC that will be part of the
A-MSDU, is added an A-MSDU subframe header.
- all resulting packets are concatenated and is added only one MAC
header. Bit 7 of QoS control field in MAC header indicates the presence
of an A-MSDU.

Obviously all packets must have the same Destination Address and must
belong to the same Access Class (they've same TID).

A-MPDU:

this aggregation consists in concatenate more packets received from Mac
Layer (each of which with own MAC header) in a single packet with a
single PLCP header and a single PLCP preamble.

A-MPDU and A-MSDU can be used togheter at the same time.

Use of A-MSDU or A-MPDU should be chosen according to type of traffic.
The idea is to implement the possibility of choose first, second or both.

--------------------------------------------------------------------------------------------

1)I agree with you about EdcaTxopN class. Maybe the better way to reuse
also DcfManager to implement Edca mechanism is write an interface
DcaTxop and inherit from it.

2)About BlockAck, you suggest to move storage of packets for which an
ack hasn't been received yet in DcaTxop and i agree with you.
> a) change the signature of MacLowTransmissionListener::GotAck to include
> the sequence number of the packet we got an ack for:
>  virtual void GotAck (double snr, WifiMode txMode, uint16_t seq) = 0;
> This method will be invoked by the MacLow class to notify the EdcaTxop
> class of each packet whose bit is set in a received BlockAck.
Changing the signature of

virtual void MacLowTransmissionListener::GotAck(double snr, WifiMode
txMode, uint16_t seq) = 0;

involves calling it for every corretly received packet that is
acknowledged with the BlockAck frame. Maybe is better a function like this?

virtual void MacLowTrasmissionListener::GotBlockAck(double snr, WifiMode
txMode, uint16_t *p) = 0;

where p array contains sequence numbers indicated in the blockack bitmap.
> b) add MacLowTransmissionListener::MissedAck to notify a listener that a
> specific packet has been missed.
>  virtual void MissedAck (uint16_t seq) = 0;
If we implement the function above there isn't need to add thid method.
> c) add to MacLowTransmissionListener::MissedAck (void) that this method
> is invoked if we missed an ack within ack timeout and that in case of
> block ack transfers, this notifies that the tx side has not received a
> blockack as requested by a block ack req.
Ok!
> d) add a MacLowTransmissionParameters::EnableBlockAck, MustWaitBlockAck,
> and ACK_BLOCK_ACK to m_wait_ack:
> void EnableBlockAck (void);
> bool MustWaitBlockAck (void);
>   enum {
>     ACK_NONE,
>     ACK_NORMAL,
>     ACK_FAST,
>     ACK_SUPER_FAST,
>     ACK_BLOCK_ACK
>   } m_waitAck;
Ok!
> add MacLowTransmissionParameters::AddPacket and m_packets:
> void AddPacket (Ptr<const Packet> packet,
>                 const WifiMacHeader *hdr);
> std::list<std::pair<Ptr<const Packet>, WifiMacHeader> > m_packets;
Sorry but i have some problems here :( How is used m_packets? When is
AddPacket called ?
> f) change the signature of MacLow::CalculateTransmissionTime and
> MacLow::StartTransmission:
>
>   Time CalculateTransmissionTime (MacLowTransmissionParameters
> const&parameters) const;
>
>   void StartTransmission (MacLowTransmissionParameters parameters,
>                           MacLowTransmissionListener *listener);
Ok!

I'd like to know what you think about this!
Thank you very much for your consideration and collaboration :-)

Regards,

Mirko

-- 

Mirko Banchi

e-mail:    mk.banchi at gmail.com
e-mail:    mk.banchi at virgilio.it
id-jabber: mk.banchi at jabber.org
id-msn:    mb11684 at hotmail.com

PGP key fingerprint:

308F BFB1 4E67 2522 C88E 
DC69 7631 52ED 32A5 6456


-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3410 bytes
Desc: S/MIME Cryptographic Signature
Url : http://mailman.isi.edu/pipermail/ns-developers/attachments/20090107/607a6343/smime.bin


More information about the Ns-developers mailing list