Как настроить IP-адрес и данные узлов в NS3?

У меня есть два основных вопроса о NS3.

  1. У меня полностью построена топология, но я хочу иметь возможность устанавливать (изменять) IP-адреса узлов, существующих в NodeContainer. Это возможно и как, если так?

  2. Мне нужно установить данные, которые содержит узел, так как я имитирую одноранговую потоковую службу. Я не понимаю, как изменить данные, которые содержит узел, или даже увидеть данные.

Извините за задержку. Вот фрагмент кода, который я использую, чтобы попытаться установить IP-адрес узла. Где "csmaTopLeftParentToTopLeft" является NodeContainer

node = csmaTopLeftParentToTopLeft.Get (2);

ipv4 = node-> GetObject (); // Получить экземпляр узла Ipv4

addr = ipv4->GetAddress (0, 0).GetLocal (); // Получить Ipv4InterfaceAddress x-го интерфейса. IPAddress = Ip.c_str(); addr.Set(IP-адрес);

Это выполняется, но если я проверяю значение после с помощью операторов print, то это показывает, что значение никогда не менялось.

Обе эти вещи не кажутся такими сложными, но я пробовал много способов и искал в интернете и ничего не смог найти по этой теме.

1 ответ

Я понял, как установить IP-адрес узла.

 Ptr<Node> node;
 Ptr<Ipv4> ipv4;
 Ipv4InterfaceAddress addr;
 Ipv4Address addressIp;
 const char * IPAddress;

 IPAddress = Ip.c_str();

 Ptr<NetDevice> device =  devices.Get(counter);

 node = device->GetNode();

 ipv4 = node->GetObject<Ipv4>(); // Get Ipv4 instance of the node

 int32_t interface = ipv4->GetInterfaceForDevice (device);
 if (interface == -1) {
   interface = ipv4->AddInterface (device);
 }

 Ipv4InterfaceAddress ipv4Addr = Ipv4InterfaceAddress (Ipv4Address(IPAddress), Ipv4Mask ("/16"));

 ipv4->AddAddress (interface, ipv4Addr);
 ipv4->SetMetric (interface, 1);
 ipv4->SetUp (interface);
Другие вопросы по тегам