[Ns-developers] Questions regarding ns-3 Wifi
Jens Mittag
jens.mittag at kit.edu
Tue May 19 07:47:06 PDT 2009
Hi together!
Together with the Chalmers University, we (University of Karlsruhe) are
currently working on a detailed physical layer implementation for the
ns-3 wifi, which goes from the data bits of a packet down to the
modulated complex waveform representation. Since we are emulating a real
hardware chipset, we had to extend the WifiPhy states to
SYNC: the transceiver could successfully detect the preamble
RX: the transceiver was able to decode to signal header and is
currently decoding the data part of the frame
TX: transceiver is transmitting
IDLE: transceiver is idle
CCA_BUSY: transceiver is busy due to CCA indication
As a consequence, we have to divide the reception process into several
parts, with independent decisions:
1. After the preamble, we decide whether we could synchronize to it.
- If yes -> continue with the decoding of the signal header (=SYNC)
- If no -> go back to IDLE or CCA_BUSY
2. If we could synchronize, we decide at the end of the signal
header, whether we could decode it successfully or not
- If yes -> continue with decoding of data payload (=RX)
- If no -> go back to IDLE or CCA_BUSY
3. At the end of the frame, decide whether we could also decode the
payload successfully.
So it is (theoretically) possible that a transceiver is BUSY after
having synchronized to the preamble, but IDLE again after the signal
header (that is before the end of the whole frame).
The question I have now is related to the DcfManager: Up to now the
WifiPhyListener used only the following methods to report the start/end
of a frame reception to the DcfManager:
void NotifySyncStart (Time duration);
void NotifySyncEndOk (void);
void NotifySyncEndError (void);
which is not sufficient in our case, since we cannot say from the
beginning how long the transceiver will be busy (see above). From the
perspective of comprehensibility, it would be good to extend this
interface by
void NotifyRxStart (Time duration);
void NotifyRxEndOk (void);
void NotifyRxEndError (void);
such that Sync(Start|EndOk|EndError) refer to the signal header duration
and Rx(Start|EndOk|EndError) correspond to the payload duration.
However, if we do this, the compatibility to the existing YansWifiPhy
and Ns2ExtWifiPhy is broken. To solve this issue, we plan to use the
NotifySync(Start|EndOk|EndError) methods for both parts, the signal
header and the payload.
Since I am not too familiar with the DCF implementation, I prefer to get
your opinion as well: do you think that this approach will be compatible
with the existing DcfManager? I can not state this by myself for sure
yet, since I haven't understood where the resume of a running Backoff in
DcfManager is handled...
Thanks for your input
Jens
PS: I would be happy about any hint which tells me where a running
backoff is resmued in the DcfManager, once it got stopped by a
DcfManager::NotifyRxStartNow (Time duration).
--
Dipl.-Inform. Jens Mittag
University of Karlsruhe
Institute of Telematics
Decentralized Systems and Network Services Research Group
Engesserstr. 2, 76131 Karlsruhe, Germany
Building 20.50, Room 112
Phone: +49 (721) 608 5768
Fax: +49 (721) 608 6789
http://dsn.tm.uni-karlsruhe.de/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 5833 bytes
Desc: S/MIME Cryptographic Signature
Url : http://mailman.isi.edu/pipermail/ns-developers/attachments/20090519/f495db4c/smime-0001.bin
More information about the Ns-developers
mailing list