Wireless Simulation in NS3

Wireless Simulation in NS3

The main purpose of a simulation is to generate output data for further study. There are two basic methods to generate data in ns-3.

  • Predefined bulk output mechanism.
  • Data generation is tracing.

IEEE 802.11s:

  • An important feature of IEEE 802.11s is the fact that the mesh network is implemented in the data link layer.
  • The IEEE 802.11s is an amendment adding wireless mesh capabilities to the existing IEEE 802.11 WLAN standard.
  • For path discovery define Hybrid Wireless Mesh Protocol (HWMP). It’s an mandatory routing protocol.

Scope of the IEEE 802.11s:

  • Compatible with higher layer protocols.
  • Small/medium mesh networks can be larger.
  • Dynamic, radio-aware path selection in the mesh, enabling data delivery on single-hop and multi-hop paths.
  • Extensible to allow support for diverse applications and future innovation.

Node types in IEEE 802.11s:

  • Mesh portal (MPP).
  • Mesh Point (MP).
  • Mesh access point (MAP) – all nodes have frame forwarding capability and can thus forward frames originating at a node and destined for some node.

Fields of information elements in IEEE802.11s:

  • Path Selection Protocol ID
  • Path Selection metric
  • Congestion Control Mode
  • Synchronization Protocol ID
  • Authentication Protocol ID
  • Mesh Formation Info (Usually the count of neighbors/peers)
  • Mesh Capability

Sample code for IEEE802.11s:
This is the sample code of ieee802.11s mesh interface structure.
struct ieee80211_if_mesh {
struct work_struct work;
struct timer_list housekeeping_timer;
struct timer_list mesh_path_timer;
struct timer_list mesh_path_root_timer;
struct sk_buff_head skb_queue;
unsigned long timers_running;
unsigned long wrkq_flags;
u8 mesh_id[IEEE11_MAX_MESH_ID_LEN];
size_t mesh_id_len;
u8 mesh_pp_id;
u8 mesh_pm_id;
u8 mesh_cc_id;
u8 mesh_sp_id;
u8 mesh_auth_id;
u32 sn;
u32 preq_id;
atomic_t mpaths;
unsigned long last_sn_update;
unsigned long last_preq;
struct mesh_rmc *rmc;
spinlock_t mesh_preq_queue_lock;
struct mesh_preq_queue preq_queue;
int preq_queue_len;
struct mesh_stats mshstats;
struct mesh_config mshcfg;
u32 mesh_seqnum;
bool accepting_plinks;
};