How to Implement Network Filtered OFDM in NS2

To implement the Filtered Orthogonal Frequency Division Multiplexing (Filtered-OFDM) is a differences of OFDM, which are applies filtering to sub-bands in the frequency domain to minimise interference, enhance the spectral efficiency, and mitigate out-of-band emissions in NS2. Filtered-OFDM is frequently used in 5G and other modern communication systems. Executing the Filtered-OFDM within NS2 that needs alterations to the physical layer (PHY) to replicate the filtering of subcarriers and broadcast characteristics of an OFDM-based system. We provide sufficient procedure for Network filtered OFDM in NS2:

Step-by-Step Implementation:

  1. Understanding Filtered-OFDM (F-OFDM)
  • OFDM: It splits a channel into numerous subcarriers and transmits data across these subcarriers in similar. It is broadly used in wireless communication systems like LTE and Wi-Fi.
  • Filtered-OFDM (F-OFDM): In the Filtered-OFDM, sub-bands of OFDM symbols are strained to minimise the spectral leakage and interference among the adjacent bands. This filtering can be enhanced the performance in systems such as 5G that various services may work in the adjacent sub-bands.
  1. Steps for Implementing Filtered-OFDM in NS2

Executing Filtered-OFDM in NS2 requires:

  1. Modeling OFDM transmission in the physical layer.
  2. Applying filtering to subcarriers.
  3. Mimicking transmission and reception of OFDM signals with filtering.

Step 1: Define OFDM Transmission in the Physical Layer

Initially, we need to model simple OFDM transmission in the physical layer. The given components are vital:

  • Subcarrier allocation: Split the bandwidth into subcarriers.
  • OFDM symbol transmission: Transfer the data using OFDM symbols.
  • Filtering: Before transmission, apply a filter to the subcarriers.

Define OFDM Subcarriers and Filtering Parameters in the Physical Layer

In the WirelessPhy layer, we describe the parameters like the number of subcarriers and filter characteristics.

# Define OFDM and Filtered-OFDM parameters

set WirelessPhy/num_subcarriers 64         ;# Number of OFDM subcarriers

set WirelessPhy/subcarrier_bandwidth 15e3  ;# Subcarrier bandwidth (e.g., 15 kHz for LTE)

set WirelessPhy/filter_type “RootRaisedCosine” ;# Type of filter for subcarriers

set WirelessPhy/filter_alpha 0.2           ;# Roll-off factor for the filter (0.2 is typical)

Step 2: OFDM Transmission with Filtering

In this stage, we execute the logic for OFDM symbol transmission and apply filtering to subcarriers using the described parameters.

OFDM Symbol Transmission Function

# Function to simulate OFDM transmission with filtering

proc ofdm_transmit {packet} {

# Get the data from the packet

set data [$packet data]

# Divide the data into subcarriers

set num_subcarriers [WirelessPhy set num_subcarriers]

set subcarrier_bandwidth [WirelessPhy set subcarrier_bandwidth]

set subcarriers [split_data_into_subcarriers $data $num_subcarriers]

# Apply filtering to subcarriers (Filtered-OFDM)

set filter_type [WirelessPhy set filter_type]

set filter_alpha [WirelessPhy set filter_alpha]

set filtered_subcarriers [apply_filter_to_subcarriers $subcarriers $filter_type $filter_alpha]

# Simulate the transmission of the filtered subcarriers

puts “Transmitting filtered OFDM signal with $num_subcarriers subcarriers”

transmit_filtered_signal $filtered_subcarriers

}

# Function to split data into subcarriers (simulated)

proc split_data_into_subcarriers {data num_subcarriers} {

# Split the data into equal parts for each subcarrier

set subcarriers [list]

for {set i 0} {$i < $num_subcarriers} {incr i} {

lappend subcarriers [lindex $data $i]

}

return $subcarriers

}

# Function to apply a filter to the subcarriers (simulated)

proc apply_filter_to_subcarriers {subcarriers filter_type filter_alpha} {

# Apply the filter to each subcarrier

puts “Applying $filter_type filter with roll-off factor $filter_alpha to subcarriers”

set filtered_subcarriers [list]

foreach subcarrier $subcarriers {

# Simulate the filtering process

set filtered_subcarrier [expr $subcarrier * (1 – $filter_alpha)]  ;# Simplified filtering

lappend filtered_subcarriers $filtered_subcarrier

}

return $filtered_subcarriers

}

# Function to simulate transmission of the filtered signal

proc transmit_filtered_signal {filtered_subcarriers} {

# Simulate the transmission process

puts “Transmitting filtered signal with subcarriers: $filtered_subcarriers”

# Call existing send function to handle actual transmission

}

Step 3: Modify the Packet Transmission in NS2 to Use Filtered-OFDM

We require to change the packet transmission function in the physical layer to use the OFDM and Filtered-OFDM logic executed above.

# Packet transmission function with Filtered-OFDM

proc Phy/WirelessPhy::transmit_packet {packet} {

# Apply OFDM transmission with filtering

ofdm_transmit $packet

}

Step 4: Define a TCL Simulation Script for Filtered-OFDM

Make a TCL script to configure the network, describe the nodes, and apply Filtered-OFDM for packet transmission.

# Create a simulator instance

set ns [new Simulator]

# Define trace and nam files for output

set tracefile [open filtered_ofdm.tr w]

set namfile [open filtered_ofdm.nam w]

$ns trace-all $tracefile

$ns namtrace-all $namfile

# Define the network topology

set topo [new Topography]

$topo load_flatgrid 1000 1000  ;# Simulation area: 1000×1000 meters

# Create the General Operations Director (GOD)

set god_ [create-god 5]  ;# 5 nodes in the network

# Define node parameters for wireless communication

set opt(chan)       Channel/WirelessChannel

set opt(prop)       Propagation/TwoRayGround

set opt(netif)      Phy/WirelessPhy

set opt(mac)        Mac/802_11      ;# Use Mac/802_11 as the MAC layer

set opt(ifq)        Queue/DropTail/PriQueue

set opt(ll)         LL

set opt(ant)        Antenna/OmniAntenna

set opt(x)          1000

set opt(y)          1000

# Create nodes and set initial positions

for {set i 0} {$i < 5} {incr i} {

set node_($i) [$ns node]

set x [expr rand() * $opt(x)]

set y [expr rand() * $opt(y)]

$node_($i) set X_ $x

$node_($i) set Y_ $y

$node_($i) set Z_ 0.0

}

# Set up traffic generation

proc start_traffic {} {

global ns node_

# Create UDP agents and attach them to nodes

for {set i 0} {$i < 5} {incr i} {

set udp_($i) [new Agent/UDP]

set null_($i) [new Agent/Null]

$ns attach-agent $node_($i) $udp_($i)

$ns attach-agent $node_($i) $null_($i)

# Generate CBR traffic (constant bit rate)

set cbr_($i) [new Application/Traffic/CBR]

$cbr_($i) set packetSize_ 512

$cbr_($i) set interval_ 0.1

$cbr_($i) attach-agent $udp_($i)

 

# Connect the UDP agent to the null agent

$ns connect $udp_($i) $null_($i)

}

}

# Start the traffic at 1 second

$ns at 1.0 “start_traffic”

# End simulation after 100 seconds

$ns at 100.0 “finish”

# End simulation procedure

proc finish {} {

global ns tracefile namfile

close $tracefile

close $namfile

$ns halt

}

# Run the simulation

$ns run

  1. Explanation of the Script
  • OFDM Subcarriers: The data is divide into numerous subcarriers, including each subcarrier signifying a part of the data. The number of subcarriers is described by the parameter num_subcarriers.
  • Filtering: A filter such as Root Raised Cosine filter is applied to the subcarriers to minimise the spectral leakage and mitigate interference among the neighbouring sub-bands.
  • Packet Transmission: The ofdm_transmit function replicates the transmission of OFDM symbols with filtering. The filtered OFDM signal is then transferred.
  • Traffic Generation: The script makes a traffic using UDP agents, and the filtered OFDM is applied to every transmitted packet.
  1. Running the Simulation
  1. We can save the altered wireless-phy.tcl and the TCL script (filtered_ofdm.tcl).
  2. Run the simulation using the below command:

ns filtered_ofdm.tcl

  1. Analysing Results
  • Examine the trace file (filtered_ofdm.tr) and the NAM file (filtered_ofdm.nam) to estimate the performance of the network, after running the simulation.
  • Important metrics to monitor include:
    • PAPR (Peak-to-Average Power Ratio): Verify if the filtering supported minimise the PAPR of the OFDM signals.
    • Interference Mitigation: Calculate how successfully the filtering reduced interference among the sub-bands.
    • Throughput and Latency: Assess the effect of filtering on the overall throughput and latency of the network.
  1. Further Enhancements
  • Advanced Filters: Execute more sophisticated filters such as Gaussian or Prolate Spheroidal Wave Functions (PSWF) to enhance the behaviour of Filtered-OFDM.
  • PAPR Mitigation: Aggregate the Filtered-OFDM with PAPR mitigation methods to further enhance the power efficiency.
  • Dynamic Subcarrier Allocation: Execute the dynamic subcarrier allocation for enhance spectrum utilization and minimized interference.

Briefly, we demonstrated about the Network Filtered OFDM were implemented and evaluated using the above procedure in NS2. Also we offer more comprehensive insights on this topic, if required.

For assistance with the implementation of Network Filtered OFDM, feel free to provide us with the details of your project. We have all the necessary resources available to support you in your efforts.