This object implements the MME functionality. More...
#include <epc-mme.h>
Classes | |
struct | BearerInfo |
Hold info on an EPS bearer to be activated. More... | |
struct | EnbInfo |
Hold info on a ENB. More... | |
struct | UeInfo |
Hold info on a UE. More... | |
Public Member Functions | |
EpcMme () | |
Constructor. More... | |
virtual | ~EpcMme () |
Destructor. More... | |
uint8_t | AddBearer (uint64_t imsi, Ptr< EpcTft > tft, EpsBearer bearer) |
Add an EPS bearer to the list of bearers to be activated for this UE. More... | |
void | AddEnb (uint16_t ecgi, Ipv4Address enbS1UAddr, EpcS1apSapEnb *enbS1apSap) |
Add a new ENB to the MME. More... | |
void | AddUe (uint64_t imsi) |
Add a new UE to the MME. More... | |
EpcS11SapMme * | GetS11SapMme () |
EpcS1apSapMme * | GetS1apSapMme () |
void | SetS11SapSgw (EpcS11SapSgw *s) |
Set the SGW side of the S11 SAP. More... | |
![]() | |
Object () | |
Constructor. More... | |
virtual | ~Object () |
Destructor. More... | |
void | AggregateObject (Ptr< Object > other) |
Aggregate two Objects together. More... | |
void | Dispose (void) |
Dispose of this Object. More... | |
AggregateIterator | GetAggregateIterator (void) const |
Get an iterator to the Objects aggregated to this one. More... | |
virtual TypeId | GetInstanceTypeId (void) const |
Implement the GetInstanceTypeId method defined in ObjectBase. More... | |
template<typename T > | |
Ptr< T > | GetObject (void) const |
Get a pointer to the requested aggregated Object. More... | |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
Get a pointer to the requested aggregated Object. More... | |
void | Initialize (void) |
Invoke DoInitialize on all Objects aggregated to this one. 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 |
Get the value of an attribute, raising fatal errors if unsuccessful. More... | |
bool | GetAttributeFailSafe (std::string name, AttributeValue &value) const |
Get the value of an attribute without raising erros. More... | |
void | SetAttribute (std::string name, const AttributeValue &value) |
Set a single attribute, raising fatal errors if unsuccessful. More... | |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
Set a single attribute without raising errors. More... | |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
Connect a TraceSource to a Callback with a context. More... | |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
Connect a TraceSource to a Callback without a context. More... | |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected with a context. More... | |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected without a context. More... | |
Static Public Member Functions | |
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... | |
Protected Member Functions | |
virtual void | DoDispose () |
Destructor implementation. More... | |
![]() | |
Object (const Object &o) | |
Copy an Object. More... | |
virtual void | DoInitialize (void) |
Initialize() implementation. More... | |
virtual void | NotifyNewAggregate (void) |
Notify all Objects aggregated to this one of a new Object being aggregated. More... | |
![]() | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
Complete construction of ObjectBase; invoked by derived classes. More... | |
virtual void | NotifyConstructionCompleted (void) |
Notifier called once the ObjectBase is fully constructed. More... | |
Private Member Functions | |
void | DoCreateSessionResponse (EpcS11SapMme::CreateSessionResponseMessage msg) |
void | DoDeleteBearerRequest (EpcS11SapMme::DeleteBearerRequestMessage msg) |
void | DoErabReleaseIndication (uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list< EpcS1apSapMme::ErabToBeReleasedIndication > erabToBeReleaseIndication) |
void | DoInitialContextSetupResponse (uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list< EpcS1apSapMme::ErabSetupItem > erabSetupList) |
void | DoInitialUeMessage (uint64_t mmeUeS1Id, uint16_t enbUeS1Id, uint64_t imsi, uint16_t ecgi) |
void | DoModifyBearerResponse (EpcS11SapMme::ModifyBearerResponseMessage msg) |
void | DoPathSwitchRequest (uint64_t enbUeS1Id, uint64_t mmeUeS1Id, uint16_t cgi, std::list< EpcS1apSapMme::ErabSwitchedInDownlinkItem > erabToBeSwitchedInDownlinkList) |
void | RemoveBearer (Ptr< UeInfo > ueInfo, uint8_t epsBearerId) |
This Function erases all contexts of bearer from MME side. More... | |
Private Attributes | |
std::map< uint16_t, Ptr< EnbInfo > > | m_enbInfoMap |
EnbInfo stored by EGCI. More... | |
EpcS11SapMme * | m_s11SapMme |
EpcS11SapSgw * | m_s11SapSgw |
EpcS1apSapMme * | m_s1apSapMme |
std::map< uint64_t, Ptr< UeInfo > > | m_ueInfoMap |
UeInfo stored by IMSI. More... | |
Friends | |
class | MemberEpcS11SapMme< EpcMme > |
class | MemberEpcS1apSapMme< EpcMme > |
Additional Inherited Members | |
![]() | |
static TypeId | GetObjectIid (void) |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. More... | |
This object implements the MME functionality.
Introspection did not find any typical Config paths.
No Attributes are defined for this type.
No TraceSources are defined for this type.
Size of this type is 152 bytes (on a 64-bit architecture).
ns3::EpcMme::EpcMme | ( | ) |
Constructor.
Definition at line 35 of file epc-mme.cc.
References m_s11SapMme, m_s1apSapMme, and NS_LOG_FUNCTION.
|
virtual |
Add an EPS bearer to the list of bearers to be activated for this UE.
The bearer will be activated when the UE enters the ECM connected state.
imsi | UE identifier |
tft | traffic flow template of the bearer |
bearer | QoS characteristics of the bearer |
Definition at line 108 of file epc-mme.cc.
References ns3::EpcMme::BearerInfo::bearer, ns3::EpcMme::BearerInfo::bearerId, m_ueInfoMap, NS_ASSERT_MSG, NS_LOG_FUNCTION, and ns3::EpcMme::BearerInfo::tft.
void ns3::EpcMme::AddEnb | ( | uint16_t | ecgi, |
Ipv4Address | enbS1UAddr, | ||
EpcS1apSapEnb * | enbS1apSap | ||
) |
Add a new ENB to the MME.
ecgi | E-UTRAN Cell Global ID, the unique identifier of the eNodeB |
enbS1apSap | the ENB side of the S1-AP SAP |
Definition at line 86 of file epc-mme.cc.
References ns3::EpcMme::EnbInfo::gci, m_enbInfoMap, NS_LOG_FUNCTION, ns3::EpcMme::EnbInfo::s1apSapEnb, and ns3::EpcMme::EnbInfo::s1uAddr.
void ns3::EpcMme::AddUe | ( | uint64_t | imsi | ) |
Add a new UE to the MME.
This is the equivalent of storing the UE credentials before the UE is ever turned on.
imsi | the unique identifier of the UE |
Definition at line 97 of file epc-mme.cc.
References ns3::EpcMme::UeInfo::bearerCounter, ns3::EpcMme::UeInfo::imsi, m_ueInfoMap, ns3::EpcMme::UeInfo::mmeUeS1Id, and NS_LOG_FUNCTION.
|
private |
Definition at line 178 of file epc-mme.cc.
References ns3::EpcS11SapMme::CreateSessionResponseMessage::bearerContextsCreated, ns3::EpcS1apSapEnb::ErabToBeSetupItem::erabId, ns3::EpcS1apSapEnb::ErabToBeSetupItem::erabLevelQosParameters, m_enbInfoMap, m_ueInfoMap, NS_ASSERT_MSG, NS_LOG_FUNCTION, ns3::EpcS1apSapEnb::ErabToBeSetupItem::sgwTeid, and ns3::EpcS1apSapEnb::ErabToBeSetupItem::transportLayerAddress.
|
private |
Definition at line 245 of file epc-mme.cc.
References ns3::EpcS11SapMme::DeleteBearerRequestMessage::bearerContextsRemoved, ns3::EpcS11SapSgw::DeleteBearerResponse(), ns3::EpcS11SapSgw::BearerContextRemovedSgwPgw::epsBearerId, m_s11SapSgw, m_ueInfoMap, NS_ASSERT_MSG, NS_LOG_FUNCTION, and RemoveBearer().
|
protectedvirtual |
Destructor implementation.
This method is called by 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::Object.
Definition at line 50 of file epc-mme.cc.
References m_s11SapMme, m_s1apSapMme, and NS_LOG_FUNCTION.
|
private |
Definition at line 223 of file epc-mme.cc.
References ns3::EpcS11SapSgw::DeleteBearerCommand(), ns3::EpcS11SapSgw::BearerContextToBeRemoved::epsBearerId, m_s11SapSgw, m_ueInfoMap, NS_ASSERT_MSG, and NS_LOG_FUNCTION.
|
private |
Definition at line 149 of file epc-mme.cc.
References NS_FATAL_ERROR, and NS_LOG_FUNCTION.
|
private |
Definition at line 126 of file epc-mme.cc.
References ns3::EpcS11SapSgw::CreateSessionRequestMessage::bearerContextsToBeCreated, ns3::EpcS11SapSgw::BearerContextToBeCreated::bearerLevelQos, ns3::EpcS11SapSgw::CreateSessionRequest(), ns3::EpcS11SapSgw::BearerContextToBeCreated::epsBearerId, ns3::EpcS11SapSgw::CreateSessionRequestMessage::imsi, m_s11SapSgw, m_ueInfoMap, NS_ASSERT_MSG, NS_LOG_FUNCTION, and ns3::EpcS11SapSgw::BearerContextToBeCreated::tft.
|
private |
Definition at line 206 of file epc-mme.cc.
References ns3::EpcS11SapMme::ModifyBearerResponseMessage::cause, m_enbInfoMap, m_ueInfoMap, NS_ASSERT, NS_ASSERT_MSG, NS_LOG_FUNCTION, and ns3::EpcS11SapMme::ModifyBearerResponseMessage::REQUEST_ACCEPTED.
|
private |
Definition at line 156 of file epc-mme.cc.
References m_s11SapSgw, m_ueInfoMap, ns3::EpcS11SapSgw::ModifyBearerRequest(), NS_ASSERT_MSG, NS_LOG_FUNCTION, NS_LOG_INFO, ns3::EpcS11Sap::GtpcMessage::teid, and ns3::EpcS11SapSgw::ModifyBearerRequestMessage::uli.
EpcS11SapMme * ns3::EpcMme::GetS11SapMme | ( | ) |
Definition at line 80 of file epc-mme.cc.
References m_s11SapMme.
EpcS1apSapMme * ns3::EpcMme::GetS1apSapMme | ( | ) |
Definition at line 68 of file epc-mme.cc.
References m_s1apSapMme.
|
static |
Definition at line 58 of file epc-mme.cc.
References ns3::TypeId::SetParent().
This Function erases all contexts of bearer from MME side.
ueInfo | UE information pointer |
epsBearerId | Bearer Id which need to be removed corresponding to UE |
Definition at line 269 of file epc-mme.cc.
References ns3::EpcMme::UeInfo::bearersToBeActivated, and NS_LOG_FUNCTION.
Referenced by DoDeleteBearerRequest().
void ns3::EpcMme::SetS11SapSgw | ( | EpcS11SapSgw * | s | ) |
Set the SGW side of the S11 SAP.
s | the SGW side of the S11 SAP |
Definition at line 74 of file epc-mme.cc.
References m_s11SapSgw, and s.
|
friend |
|
friend |
EnbInfo stored by EGCI.
Definition at line 179 of file epc-mme.h.
Referenced by AddEnb(), DoCreateSessionResponse(), and DoModifyBearerResponse().
|
private |
Definition at line 186 of file epc-mme.h.
Referenced by DoDispose(), EpcMme(), and GetS11SapMme().
|
private |
Definition at line 187 of file epc-mme.h.
Referenced by DoDeleteBearerRequest(), DoErabReleaseIndication(), DoInitialUeMessage(), DoPathSwitchRequest(), and SetS11SapSgw().
|
private |
Definition at line 184 of file epc-mme.h.
Referenced by DoDispose(), EpcMme(), and GetS1apSapMme().
UeInfo stored by IMSI.
Definition at line 155 of file epc-mme.h.
Referenced by AddBearer(), AddUe(), DoCreateSessionResponse(), DoDeleteBearerRequest(), DoErabReleaseIndication(), DoInitialUeMessage(), DoModifyBearerResponse(), and DoPathSwitchRequest().