Create an EPC network using EmuFdNetDevice. More...
#include <emu-epc-helper.h>
Public Member Functions | |
EmuEpcHelper () | |
Constructor. More... | |
virtual | ~EmuEpcHelper () |
Destructor. More... | |
virtual void | ActivateEpsBearer (Ptr< NetDevice > ueLteDevice, uint64_t imsi, Ptr< EpcTft > tft, EpsBearer bearer) |
Activate an EPS bearer, setting up the corresponding S1-U tunnel. More... | |
virtual void | AddEnb (Ptr< Node > enbNode, Ptr< NetDevice > lteEnbNetDevice, uint16_t cellId) |
Add an eNB to the EPC. More... | |
virtual void | AddUe (Ptr< NetDevice > ueLteDevice, uint64_t imsi) |
Notify the EPC of the existance of a new UE which might attach at a later time. More... | |
virtual void | AddX2Interface (Ptr< Node > enbNode1, Ptr< Node > enbNode2) |
Add an X2 interface between two eNB. More... | |
virtual Ipv4InterfaceContainer | AssignUeIpv4Address (NetDeviceContainer ueDevices) |
Assign IPv4 addresses to UE devices. More... | |
virtual void | DoDispose () |
This method is called by Object::Dispose or by the object's destructor, whichever comes first. More... | |
virtual void | DoInitialize () |
This method is called only once by Object::Initialize. More... | |
virtual Ptr< Node > | GetPgwNode () |
virtual Ipv4Address | GetUeDefaultGatewayAddress () |
![]() | |
EpcHelper () | |
Constructor. More... | |
virtual | ~EpcHelper () |
Destructor. More... | |
![]() | |
Object () | |
virtual | ~Object () |
void | AggregateObject (Ptr< Object > other) |
void | Dispose (void) |
Run the DoDispose methods of this object and all the objects aggregated to it. More... | |
AggregateIterator | GetAggregateIterator (void) const |
virtual TypeId | GetInstanceTypeId (void) const |
template<typename T > | |
Ptr< T > | GetObject (void) const |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
void | Initialize (void) |
This method calls the virtual DoInitialize method on all the objects aggregated to this object. More... | |
![]() | |
SimpleRefCount () | |
Constructor. More... | |
SimpleRefCount (const SimpleRefCount &o) | |
Copy constructor. More... | |
uint32_t | GetReferenceCount (void) const |
Get the reference count of the object. More... | |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
Assignment. More... | |
void | Ref (void) const |
Increment the reference count. More... | |
void | Unref (void) const |
Decrement the reference count. More... | |
![]() | |
virtual | ~ObjectBase () |
Virtual destructor. More... | |
void | GetAttribute (std::string name, AttributeValue &value) const |
bool | GetAttributeFailSafe (std::string name, AttributeValue &attribute) const |
void | SetAttribute (std::string name, const AttributeValue &value) |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Static Public Member Functions | |
static TypeId | GetTypeId (void) |
![]() | |
static TypeId | GetTypeId (void) |
![]() | |
static TypeId | GetTypeId (void) |
Register this type. More... | |
![]() | |
static void | Cleanup (void) |
Noop. More... | |
![]() | |
static TypeId | GetTypeId (void) |
Get the type ID. More... | |
Private Attributes | |
std::string | m_enbDeviceName |
std::string | m_enbMacAddressBase |
Ipv4AddressHelper | m_epcIpv4AddressHelper |
helper to assign addresses to S1-U NetDevices More... | |
uint16_t | m_gtpuUdpPort |
UDP port where the GTP-U Socket is bound, fixed by the standard as 2152. More... | |
std::map< uint64_t, Ptr < NetDevice > > | m_imsiEnbDeviceMap |
Map storing for each IMSI the corresponding eNB NetDevice. More... | |
Ptr< EpcMme > | m_mme |
std::string | m_sgwDeviceName |
Ipv4InterfaceContainer | m_sgwIpIfaces |
std::string | m_sgwMacAddress |
Ptr< Node > | m_sgwPgw |
SGW-PGW network element. More... | |
Ptr< EpcSgwPgwApplication > | m_sgwPgwApp |
Ptr< VirtualNetDevice > | m_tunDevice |
Ipv4AddressHelper | m_ueAddressHelper |
helper to assign addresses to UE devices as well as to the TUN device of the SGW/PGW More... | |
Additional Inherited Members | |
![]() | |
Object (const Object &o) | |
virtual void | NotifyNewAggregate (void) |
This method is invoked whenever two sets of objects are aggregated together. More... | |
![]() | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
virtual void | NotifyConstructionCompleted (void) |
This method is invoked once all member attributes have been initialized. More... | |
Create an EPC network using EmuFdNetDevice.
Doxygen introspection did not find any typical Config paths.
This Helper will create an EPC network topology comprising of a single node that implements both the SGW and PGW functionality, and an MME node. The S1-U, X2-U and X2-C interfaces are realized using EmuFdNetDevice; in particular, one device is used to send all the traffic related to these interfaces.
No TraceSources are defined for this type.
Definition at line 51 of file emu-epc-helper.h.
ns3::EmuEpcHelper::EmuEpcHelper | ( | ) |
|
virtual |
|
virtual |
Activate an EPS bearer, setting up the corresponding S1-U tunnel.
ueLteDevice | the Ipv4-enabled device of the UE, normally connected via the LTE radio interface |
imsi | the unique identifier of the UE |
tft | the Traffic Flow Template of the new bearer |
bearer | struct describing the characteristics of the EPS bearer to be activated |
Implements ns3::EpcHelper.
Definition at line 315 of file emu-epc-helper.cc.
References ns3::EpcUeNas::ActivateEpsBearer(), ns3::Object::GetObject(), m_mme, m_sgwPgwApp, NS_ASSERT, NS_ASSERT_MSG, NS_LOG_FUNCTION, NS_LOG_LOGIC, and ns3::Simulator::ScheduleNow().
|
virtual |
Add an eNB to the EPC.
enbNode | the previosuly created eNB node which is to be added to the EPC |
lteEnbNetDevice | the LteEnbNetDevice of the eNB node |
cellId | ID of the eNB |
Implements ns3::EpcHelper.
Definition at line 178 of file emu-epc-helper.cc.
References ns3::Node::AddApplication(), ns3::Object::AggregateObject(), ns3::Ipv4AddressHelper::Assign(), ns3::Socket::Bind(), ns3::Socket::Connect(), ns3::Socket::CreateSocket(), ns3::NetDeviceContainer::Get(), ns3::Ipv4InterfaceContainer::GetAddress(), ns3::Node::GetApplication(), ns3::Mac48Address::GetBroadcast(), ns3::Node::GetNApplications(), ns3::Ipv4::GetNInterfaces(), ns3::Object::GetObject(), ns3::Object::Initialize(), ns3::InternetStackHelper::Install(), ns3::TypeId::LookupByName(), m_enbDeviceName, m_enbMacAddressBase, m_epcIpv4AddressHelper, m_gtpuUdpPort, m_mme, m_sgwIpIfaces, m_sgwPgwApp, NS_ABORT_IF, NS_ASSERT, NS_ASSERT_MSG, NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_LOGIC, ns3::Ipv4L3Protocol::PROT_NUMBER, ns3::PacketSocketAddress::SetPhysicalAddress(), ns3::PacketSocketAddress::SetProtocol(), and ns3::PacketSocketAddress::SetSingleDevice().
Notify the EPC of the existance of a new UE which might attach at a later time.
ueLteDevice | the UE device to be attached |
imsi | the unique identifier of the UE |
Implements ns3::EpcHelper.
Definition at line 305 of file emu-epc-helper.cc.
References m_mme, m_sgwPgwApp, and NS_LOG_FUNCTION.
Add an X2 interface between two eNB.
enbNode1 | one eNB peer of the X2 interface |
enbNode2 | the other eNB peer of the X2 interface |
Implements ns3::EpcHelper.
Definition at line 255 of file emu-epc-helper.cc.
References ns3::LteEnbNetDevice::GetCellId(), ns3::Node::GetDevice(), ns3::Node::GetNDevices(), ns3::Object::GetObject(), NS_ASSERT, NS_LOG_FUNCTION, NS_LOG_LOGIC, and NS_LOG_WARN.
|
virtual |
Assign IPv4 addresses to UE devices.
ueDevices | the set of UE devices |
Implements ns3::EpcHelper.
Definition at line 348 of file emu-epc-helper.cc.
References ns3::Ipv4AddressHelper::Assign(), and m_ueAddressHelper.
|
virtual |
This method is called by Object::Dispose or by the object's destructor, whichever comes first.
Subclasses are expected to implement their real destruction code in an overriden version of this method and chain up to their parent's implementation once they are done. i.e., for simplicity, the destructor of every subclass should be empty and its content should be moved to the associated DoDispose method.
It is safe to call GetObject from within this method.
Reimplemented from ns3::EpcHelper.
Definition at line 167 of file emu-epc-helper.cc.
References ns3::Object::Dispose(), m_sgwPgw, m_sgwPgwApp, m_tunDevice, ns3::MakeNullCallback(), NS_LOG_FUNCTION, and ns3::VirtualNetDevice::SetSendCallback().
|
virtual |
This method is called only once by Object::Initialize.
If the user calls Object::Initialize multiple times, DoInitialize is called only the first time.
Subclasses are expected to override this method and chain up to their parent's implementation once they are done. It is safe to call GetObject and AggregateObject from within this method.
Reimplemented from ns3::Object.
Definition at line 98 of file emu-epc-helper.cc.
References ns3::NetDeviceContainer::Add(), ns3::Node::AddApplication(), ns3::Node::AddDevice(), ns3::Mac48Address::Allocate(), ns3::Ipv4AddressHelper::Assign(), ns3::Socket::Bind(), ns3::Socket::CreateSocket(), ns3::Object::DoInitialize(), ns3::NetDeviceContainer::Get(), ns3::Ipv4Address::GetAny(), ns3::FdNetDeviceHelper::Install(), ns3::TypeId::LookupByName(), m_epcIpv4AddressHelper, m_gtpuUdpPort, m_mme, m_sgwDeviceName, m_sgwIpIfaces, m_sgwMacAddress, m_sgwPgw, m_sgwPgwApp, m_tunDevice, m_ueAddressHelper, ns3::MakeCallback(), NS_ASSERT, NS_LOG_LOGIC, ns3::EpcSgwPgwApplication::RecvFromTunDevice(), ns3::VirtualNetDevice::SetAddress(), ns3::ObjectBase::SetAttribute(), ns3::Ipv4AddressHelper::SetBase(), ns3::EmuFdNetDeviceHelper::SetDeviceName(), and ns3::InternetStackHelper::SetIpv4StackInstall().
Implements ns3::EpcHelper.
Definition at line 341 of file emu-epc-helper.cc.
References m_sgwPgw.
|
static |
Definition at line 68 of file emu-epc-helper.cc.
References m_enbDeviceName, m_enbMacAddressBase, m_sgwDeviceName, m_sgwMacAddress, and ns3::TypeId::SetParent().
|
virtual |
Implements ns3::EpcHelper.
Definition at line 356 of file emu-epc-helper.cc.
References ns3::Object::GetObject(), and m_sgwPgw.
|
private |
Definition at line 116 of file emu-epc-helper.h.
Referenced by AddEnb(), and GetTypeId().
|
private |
Definition at line 118 of file emu-epc-helper.h.
Referenced by AddEnb(), and GetTypeId().
|
private |
helper to assign addresses to S1-U NetDevices
Definition at line 100 of file emu-epc-helper.h.
Referenced by AddEnb(), and DoInitialize().
|
private |
UDP port where the GTP-U Socket is bound, fixed by the standard as 2152.
Definition at line 105 of file emu-epc-helper.h.
Referenced by AddEnb(), and DoInitialize().
Map storing for each IMSI the corresponding eNB NetDevice.
Definition at line 111 of file emu-epc-helper.h.
Definition at line 95 of file emu-epc-helper.h.
Referenced by ActivateEpsBearer(), AddEnb(), AddUe(), and DoInitialize().
|
private |
Definition at line 115 of file emu-epc-helper.h.
Referenced by DoInitialize(), and GetTypeId().
|
private |
Definition at line 113 of file emu-epc-helper.h.
Referenced by AddEnb(), and DoInitialize().
|
private |
Definition at line 117 of file emu-epc-helper.h.
Referenced by DoInitialize(), and GetTypeId().
SGW-PGW network element.
Definition at line 92 of file emu-epc-helper.h.
Referenced by DoDispose(), DoInitialize(), GetPgwNode(), and GetUeDefaultGatewayAddress().
|
private |
Definition at line 93 of file emu-epc-helper.h.
Referenced by ActivateEpsBearer(), AddEnb(), AddUe(), DoDispose(), and DoInitialize().
|
private |
Definition at line 94 of file emu-epc-helper.h.
Referenced by DoDispose(), and DoInitialize().
|
private |
helper to assign addresses to UE devices as well as to the TUN device of the SGW/PGW
Definition at line 86 of file emu-epc-helper.h.
Referenced by AssignUeIpv4Address(), and DoInitialize().