有没有一种方法可以在使用ns3的组播网络中实现节点的动态剪枝/嫁接?我可以找到的所有资源仅实现组播网络的静态路由。如何使用ns3实现组播动态加入/剪枝
回答
在NS-3中,我们设置了节点的路由表中的默认组播路由执行SetDefaultMulticastRoute(dev,nd)
,其作为文档状态是等效于执行以下操作:
route add 224.0.0.0 netmask 240.0.0.0 dev nd
当为物理世界中的Linux服务器设置多播时,我们需要为路由表中的多播地址设置路由。在ns-3仿真世界中,我们必须对使用SetDefaultMulticastRoute(dev,nd)
创建的每个节点执行相同的操作。
静态组播路由用于从一个LAN路由到另一个。在现实世界中,我们需要一个知道如何路由多播的路由器。在ns-3仿真世界中,我们需要一个知道如何路由多播的路由器。因此,在ns-3中,我们需要使用AddMulticastRoute()
从一个LAN到另一个LAN建立静态路由,该路由安装在充当路由器的模拟节点中。
如果有一个ns-3助手将会在NodeContainer
和NetDeviceContainer
上安装默认多播路由将会很不错。但是,该方法需要一个节点及其相关联的NetDevice
,因此您必须使用循环来设置它们全部,假设NodeContainer
中的0..N
节点与NetDeviceContainer
中的0..N
节点直接相关。
for (int i = 0; i < N; i++) {
Ptr<Node> sender = nodecontainer.Get (i);
Ptr<NetDevice> senderIf = netdevicecontainer.Get (i);
multicast.SetDefaultMulticastRoute (sender, senderIf);
}
引用这样的: http://www.nsnam.org/docs/release/3.16/doxygen/csma-multicast_8cc_source.html
你可以看到组播数据包的发送者和接收者是如何设置。它包括两个局域网之间的静态路由。本例中的接收器没有默认的多播路由设置。内联注释表明,所有节点都将从源接收多播帧 - 源是我们为其执行SetDefaultMulticastRoute(source,sourceIf)
的节点。
请注意,此代码的注释表明源接收它发送的多播帧。
引用这样的: 的http:// www.nsnam.org/docs/release/3.16/doxygen/udp-echo-server_8cc_source.html
你写不实际参与到多播组的NS3应用。
78 if (m_socket == 0)
79 {
80 TypeId tid = TypeId::LookupByName ("ns3::UdpSocketFactory");
81 m_socket = Socket::CreateSocket (GetNode(), tid);
82 InetSocketAddress local = InetSocketAddress (Ipv4Address::GetAny(), m_port);
83 m_socket->Bind (local);
84 if (addressUtils::IsMulticast (m_local))
85 {
86 Ptr<UdpSocket> udpSocket = DynamicCast<UdpSocket> (m_socket);
87 if (udpSocket)
88 {
89 // equivalent to setsockopt (MCAST_JOIN_GROUP)
90 udpSocket->MulticastJoinGroup (0, m_local);
91 }
92 else
93 {
94 NS_FATAL_ERROR ("Error: Failed to join multicast group");
95 }
96 }
97 }
- 1. 如何在ns3中实现GPSR算法?
- 2. 树枝 - 动态数组键
- 3. 如何使用JSF 2.0复合组件实现动态列表?
- 4. 如何实现动态rowspan
- 5. 使用libpcap加入/离开组播组
- 6. 使用NS2/NS3实现P2P文件传输
- 7. 如何NS3
- 8. 如何用Django实现动态边栏?
- 9. 树的实现在MINMAX与α-β剪枝
- 10. 如何实现动态fb动作?
- 11. 如何使用ns3中的属性
- 12. 如何使用Symfony2 +树枝渲染动态选择
- 13. 如何使用final来实现静态?
- 14. 如何使用bootstrap实现模态?
- 15. 如何防止枝条自动呈现嵌入的表单?
- 16. 使用hibernate注释实现动态类
- 17. 如何动态添加表行并使用jQuery加载动态组合框
- 18. 如何用'awk'动态增加数组?
- 19. 如何使用@Autowired动态注入像工厂模式的实现
- 20. 使用动态数组实现的堆栈
- 21. 如何实现在动态布局中实现添加更多视图android
- 22. 如何实现onclicklistener动态创建textview?
- 23. 如何实现WPF动态UI
- 24. 如何实现动态数据库列?
- 25. 如何动态实现代理模式?
- 26. 如何实现动态视图
- 27. 如何实现动态WHERE LIKE%A%B%
- 28. 如何实现动态UIView掩码?
- 29. 如何实现MNesia的动态查询?
- 30. 如何实现动态@ConfigurationProperties前缀