Как настроить IP-адрес и данные узлов в NS3?
У меня есть два основных вопроса о NS3.
У меня полностью построена топология, но я хочу иметь возможность устанавливать (изменять) IP-адреса узлов, существующих в NodeContainer. Это возможно и как, если так?
Мне нужно установить данные, которые содержит узел, так как я имитирую одноранговую потоковую службу. Я не понимаю, как изменить данные, которые содержит узел, или даже увидеть данные.
Извините за задержку. Вот фрагмент кода, который я использую, чтобы попытаться установить 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);