Skip to content

Instantly share code, notes, and snippets.

@hmasum52
Created January 25, 2023 13:02
Show Gist options
  • Save hmasum52/3a77f818b10b1a2cb90000e248eaa3b3 to your computer and use it in GitHub Desktop.
Save hmasum52/3a77f818b10b1a2cb90000e248eaa3b3 to your computer and use it in GitHub Desktop.

In ns-2, the reserved field in the TCP header can be accessed and modified using the C++ programming language. Here is an example of how you might use the reserved field in a simulation:

Include the necessary headers in your simulation script:

#include "tcp.h"
#include "ip.h"
Create a new class that inherits from the existing TCP class:
Copy code
class MyTCP : public TCP {
public:
  //...
};

In the new class, define a new member variable to hold the value of the reserved field:

class MyTCP : public TCP {
public:
  int reserved_;
  //...
};

In the new class, override the send() method to include the value of the reserved field in the TCP header before sending the packet:

void MyTCP::send(Packet* pkt, Handler*) {
  hdr_tcp* tcph = hdr_tcp::access(pkt);
  tcph->reserved_ = reserved_;
  //...
  send_helper(pkt);
}

In the new class, override the recv() method to extract the value of the reserved field from the received packet:

void MyTCP::recv(Packet* pkt, Handler*) {
  hdr_tcp* tcph = hdr_tcp::access(pkt);
  reserved_ = tcph->reserved_;
  //...
  recv_helper(pkt);
}

In the main part of your simulation script, create an instance of the new class and use it in place of the regular TCP class:

MyTCP* tcp = new MyTCP();
//...
agent->tcp_ = tcp;

This is a very basic example of how the reserved field in the TCP header can be used in ns-2, you can use the reserved field to implement any custom enhancements or experiment with different values in the reserved field to see how it affects the simulation.

Also, you can use the reserved field in the same way for other network simulators like Omnet++, NS3 etc.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment