标签:
Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
Ptr<PointToPointEpcHelper> epcHelper = CreateObject<PointToPointEpcHelper> ();
lteHelper->SetEpcHelper (epcHelper);
Ptr<Node> pgw = epcHelper->GetPgwNode ();
// 创建一个远程主机 NodeContainer remoteHostContainer; remoteHostContainer.Create (1); Ptr<Node> remoteHost = remoteHostContainer.Get (0); InternetStackHelper internet; internet.Install (remoteHostContainer); // 创建 internet PointToPointHelper p2ph; p2ph.SetDeviceAttribute ("DataRate", DataRateValue (DataRate ("100Gb/s"))); p2ph.SetDeviceAttribute ("Mtu", UintegerValue (1500)); p2ph.SetChannelAttribute ("Delay", TimeValue (Seconds (0.010))); NetDeviceContainer internetDevices = p2ph.Install (pgw, remoteHost); Ipv4AddressHelper ipv4h; ipv4h.SetBase ("1.0.0.0", "255.0.0.0"); Ipv4InterfaceContainer internetIpIfaces = ipv4h.Assign (internetDevices); // 接口 0 为本地主机,1 为 p2p 设备 Ipv4Address remoteHostAddr = internetIpIfaces.GetAddress (1);
Ipv4StaticRoutingHelper ipv4RoutingHelper; Ptr<Ipv4StaticRouting> remoteHostStaticRouting = ipv4RoutingHelper.GetStaticRouting (remoteHost->GetObject<Ipv4> ()); remoteHostStaticRouting->AddNetworkRouteTo (Ipv4Address ("7.0.0.0"), Ipv4Mask ("255.0.0.0"), 1);
NodeContainer ueNodes;
NodeContainer enbNodes;
NetDeviceContainer ueLteDevs = lteHelper->InstallUeDevice (ueNodes); lteHelper->Attach (ueLteDevs, enbLteDevs.Get (0));
// 在用户上安装 IP 协议栈 InternetStackHelper internet; internet.Install (ueNodes); // 给用户分配 IP 地址 for (uint32_t u = 0; u < ueNodes.GetN (); ++u) { Ptr<Node> ue = ueNodes.Get (u); Ptr<NetDevice> ueLteDevice = ueLteDevs.Get (u); Ipv4InterfaceContainer ueIpIface = epcHelper->AssignUeIpv4Address (NetDeviceContainer (ueLteDevice)); // 为用户设置默认网关 Ptr<Ipv4StaticRouting> ueStaticRouting = ipv4RoutingHelper.GetStaticRouting (ue->GetObject<Ipv4> ()); ueStaticRouting->SetDefaultRoute (epcHelper->GetUeDefaultGatewayAddress (), 1); }
Ptr<EpcTft> tft = Create<EpcTft> (); EpcTft::PacketFilter pf; pf.localPortStart = 1234; pf.localPortEnd = 1234; tft->Add (pf); lteHelper->ActivateDedicatedEpsBearer (ueLteDevs, EpsBearer (EpsBearer::NGBR_VIDEO_TCP_DEFAULT), tft);
uint16_t dlPort = 1234; PacketSinkHelper packetSinkHelper ("ns3::UdpSocketFactory", InetSocketAddress (Ipv4Address::GetAny (), dlPort)); ApplicationContainer serverApps = packetSinkHelper.Install (ue); serverApps.Start (Seconds (0.01)); UdpClientHelper client (ueIpIface.GetAddress (0), dlPort); ApplicationContainer clientApps = client.Install (remoteHost); clientApps.Start (Seconds (0.01));
Simulator::Stop (Seconds (10.0)); Simulator::Run ();
参考文献
https://www.nsnam.org/docs/models/html/lte-user.html
LTE Module User Documentation(翻译8)——核心网(EPC)
标签:
原文地址:http://www.cnblogs.com/alice123/p/5502408.html