User:Ofriedri: Difference between revisions

From
Jump to navigation Jump to search
No edit summary
No edit summary
Line 9: Line 9:


The current project is dedicated to add support of several bitrates into the JiST/SWANS simulation environment and implementing on top of it several bit-rate selection algorithms. There are three steps in this project, which are listed chronologically:
The current project is dedicated to add support of several bitrates into the JiST/SWANS simulation environment and implementing on top of it several bit-rate selection algorithms. There are three steps in this project, which are listed chronologically:
# Extending the Radio and MAC layers to support choice of different physical layer (PHY) models (OFDM, DSSS/CCK, ERP-OFDM, ERP-DSSS/CCK)
#
# Implementation of popular/promising bit-rate selection algorithms on top of the modified Radio and MAC layers
#
# Possible development of a special bit-rate selection algorithm for opportunistic routing
#


=== First step: Quick and dirty hack into mac layer ===
=== First step (a): Extending the mac layer to support multiple PHYs ===


Source code base: svn://brn-svn/brn/simulation/NetCodExOR (svn co ~)
Source code base: svn://brn-svn/brn/simulation/NetCodExOR (svn co ~)
Line 25: Line 25:
| jist.swans.Constants
| jist.swans.Constants
| in class Constants:
| in class Constants:
public static final int BANDWIDTH_1MBit = (int) 1e6; // 1Mb/s
public static final int BANDWIDTH_1MBit = (int) 1e6; // 1Mb/s
public static final int BANDWIDTH_2MBit = (int) 2e6; // 2Mb/s
public static final int BANDWIDTH_2MBit = (int) 2e6; // 2Mb/s
public static final int BANDWIDTH_5_5MBit = (int) 5.5e6; // 5.5Mb/s
public static final int BANDWIDTH_5_5MBit = (int) 5.5e6;// 5.5Mb/s
public static final int BANDWIDTH_6MBit = (int) 6e6; // 6Mb/s
public static final int BANDWIDTH_6MBit = (int) 6e6; // 6Mb/s
public static final int BANDWIDTH_9MBit = (int) 9e6; // 9Mb/s
public static final int BANDWIDTH_9MBit = (int) 9e6; // 9Mb/s
public static final int BANDWIDTH_11MBit = (int) 11e6; // 11Mb/s
public static final int BANDWIDTH_11MBit = (int) 11e6; // 11Mb/s
public static final int BANDWIDTH_12MBit = (int) 12e6; // 12Mb/s
public static final int BANDWIDTH_12MBit = (int) 12e6; // 12Mb/s
Line 39: Line 39:
public static final int BANDWIDTH_48MBit = (int) 48e6; // 48Mb/s
public static final int BANDWIDTH_48MBit = (int) 48e6; // 48Mb/s
public static final int BANDWIDTH_54MBit = (int) 54e6; // 54Mb/s
public static final int BANDWIDTH_54MBit = (int) 54e6; // 54Mb/s
|}
|-
| adapt MacMcExOrMessage to include information about the bitrate with which it is supposed to be sent
| brn.swans.mac.MacMcExORMessage.java
| in class MacMcExORMessage:
/** Bitrate at which to transmit this message */
'''protected int''' bitrate;


/** @return The bitrate at which to transmit this message */
'''public int''' getBitrate() {
return bitrate;
};


/** @return true if this == o, else false. */
'''public boolean''' equals(Object o) {
...
if (bitrate != that.bitrate) return false; // added
...
}
|}


Changed files:
*file:brn.swans.mac.MacMcExORMessage.java - class '''MacMcExORMessage'''
**added class member &nbsp;<span style="font-family:Courier New; font-weight:bold">protected int bitrate;</span>
**added accessor method &nbsp;<span style="font-family:Courier New; font-weight:bold">public int getBitrate() { return bitrate; };</span>
**changed method &nbsp;<span style="font-family:Courier New; font-weight:bold">public boolean equals(Object o) {}</span>
***added line &nbsp;<span style="font-family:Courier New; font-weight:bold">if (bitrate != that.bitrate) return false;<span>
*file:brn.swans.mac.MacMcExORMessage.java - class '''Ack'''
*file:brn.swans.mac.MacMcExORMessage.java - class '''Ack'''
**added constructor &nbsp;<span style="font-family:Courier New; font-weight:bold">Ack(..., int bitrate)<span> to include bitrate
**added constructor &nbsp;<span style="font-family:Courier New; font-weight:bold">Ack(..., int bitrate)<span> to include bitrate
Line 58: Line 68:
***added line &nbsp;<span style="font-family:Courier New; font-weight:bold">if (bitrate != data.bitrate) return false;<span>
***added line &nbsp;<span style="font-family:Courier New; font-weight:bold">if (bitrate != data.bitrate) return false;<span>


=== Future: BER ===
==== TODO: ====
*adapt the Radio layer to support different sensitivity values (dB) according to the PHY layer
radio model has to be adapted to bit rates (dB values)

=== Second step: Implementation of bit-rate selection algorithms ===
Candidates for implementation are:
# SampleRate ([http://pdos.lcs.mit.edu/papers/jbicket-ms.pdf PDF])
# RBAR - Receiver-Based Auto-Rate ([http://perform.wpi.edu/downloads/rbar/cs525m_report.pdf PDF])


=== Useful links ===
=== Useful links ===

Revision as of 11:38, 26 June 2006

BitRateSelection: Integration into JiST

Motivation of work

Bit rate selection in Wireless Network is still a relatively new research topic. The inherent support of data transmission at different bitrates within the 802.11 MAC layer motivates exploitation of this feature. Previous work has come up with several interesting bit-rate selection algorithms. However, implementation of these inside widely-used network simulators (such as ns-2 and JiST/SWANS) has been sparse.

The current project is dedicated to add support of several bitrates into the JiST/SWANS simulation environment and implementing on top of it several bit-rate selection algorithms. There are three steps in this project, which are listed chronologically:

  1. Extending the Radio and MAC layers to support choice of different physical layer (PHY) models (OFDM, DSSS/CCK, ERP-OFDM, ERP-DSSS/CCK)
  2. Implementation of popular/promising bit-rate selection algorithms on top of the modified Radio and MAC layers
  3. Possible development of a special bit-rate selection algorithm for opportunistic routing

First step (a): Extending the mac layer to support multiple PHYs

Source code base: svn://brn-svn/brn/simulation/NetCodExOR (svn co ~)

Description concerned file(s) changed/added code
introducing new constants for: bandwidth jist.swans.Constants in class Constants:
public static final int BANDWIDTH_1MBit   = (int) 1e6;  // 1Mb/s
public static final int BANDWIDTH_2MBit   = (int) 2e6;  // 2Mb/s
public static final int BANDWIDTH_5_5MBit = (int) 5.5e6;// 5.5Mb/s
public static final int BANDWIDTH_6MBit   = (int) 6e6;  // 6Mb/s
public static final int BANDWIDTH_9MBit   = (int) 9e6;  // 9Mb/s
public static final int BANDWIDTH_11MBit  = (int) 11e6; // 11Mb/s
public static final int BANDWIDTH_12MBit  = (int) 12e6; // 12Mb/s
public static final int BANDWIDTH_18MBit  = (int) 18e6; // 18Mb/s
public static final int BANDWIDTH_22MBit  = (int) 22e6; // 22Mb/s
public static final int BANDWIDTH_24MBit  = (int) 24e6; // 24Mb/s
public static final int BANDWIDTH_33MBit  = (int) 33e6; // 33Mb/s
public static final int BANDWIDTH_36MBit  = (int) 36e6; // 36Mb/s
public static final int BANDWIDTH_48MBit  = (int) 48e6; // 48Mb/s
public static final int BANDWIDTH_54MBit  = (int) 54e6; // 54Mb/s
adapt MacMcExOrMessage to include information about the bitrate with which it is supposed to be sent brn.swans.mac.MacMcExORMessage.java in class MacMcExORMessage:
/** Bitrate at which to transmit this message */
protected int bitrate;
/** @return The bitrate at which to transmit this message */
public int getBitrate() {
  return bitrate;
};
/** @return true if this == o, else false. */
public boolean equals(Object o) {
  ...
  if (bitrate != that.bitrate) return false; // added
  ...
}
  • file:brn.swans.mac.MacMcExORMessage.java - class Ack
    • added constructor  Ack(..., int bitrate) to include bitrate
    • changed method  public boolean equals(Object o) {}
      • added line  if (bitrate != ack.bitrate) return false;
  • file:brn.swans.mac.MacMcExORMessage.java - class Data
    • added constructor  Data(..., int bitrate) to include bitrate
    • changed method  public boolean equals(Object o) {}
      • added line  if (bitrate != data.bitrate) return false;

TODO:

  • adapt the Radio layer to support different sensitivity values (dB) according to the PHY layer

Second step: Implementation of bit-rate selection algorithms

Candidates for implementation are:

  1. SampleRate (PDF)
  2. RBAR - Receiver-Based Auto-Rate (PDF)

Useful links

  1. WikiHelp