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 |
Get the most derived TypeId for this Object. 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 by TypeId. More... | |
void | Initialize (void) |
Invoke DoInitialize on all Objects aggregated to this one. More... | |
bool | IsInitialized (void) const |
Check if the object has been initialized. More... | |
![]() | |
SimpleRefCount () | |
Default 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 operator. 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) |
Get the type ID. More... | |
![]() | |
static TypeId | GetTypeId (void) |
Register this type. 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) |
Create Session Response function. More... | |
void | DoDeleteBearerRequest (EpcS11SapMme::DeleteBearerRequestMessage msg) |
Delete Bearer Request function. More... | |
void | DoErabReleaseIndication (uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list< EpcS1apSapMme::ErabToBeReleasedIndication > erabToBeReleaseIndication) |
ERAB Release Indication function. More... | |
void | DoInitialContextSetupResponse (uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list< EpcS1apSapMme::ErabSetupItem > erabSetupList) |
Initial Context Setup Response function. More... | |
void | DoInitialUeMessage (uint64_t mmeUeS1Id, uint16_t enbUeS1Id, uint64_t imsi, uint16_t ecgi) |
Initial UE Message function. More... | |
void | DoModifyBearerResponse (EpcS11SapMme::ModifyBearerResponseMessage msg) |
Modify Bearer Response function. More... | |
void | DoPathSwitchRequest (uint64_t enbUeS1Id, uint64_t mmeUeS1Id, uint16_t cgi, std::list< EpcS1apSapMme::ErabSwitchedInDownlinkItem > erabToBeSwitchedInDownlinkList) |
Path Switch Request function. More... | |
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 |
EpcS11SapMme. More... | |
EpcS11SapSgw * | m_s11SapSgw |
EpcS11SapSgw. More... | |
EpcS1apSapMme * | m_s1apSapMme |
EpcS1apSapMme. More... | |
std::map< uint64_t, Ptr< UeInfo > > | m_ueInfoMap |
UeInfo stored by IMSI. More... | |
Friends | |
class | MemberEpcS11SapMme< EpcMme > |
allow MemberEpcS11SapMme<EpcMme> class friend access More... | |
class | MemberEpcS1apSapMme< EpcMme > |
allow MemberEpcS1apSapMme<EpcMme> class friend access More... | |
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 104 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 109 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 |
enbS1UAddr | address of the eNB for S1-U communications |
enbS1apSap | the ENB side of the S1-AP SAP |
Definition at line 87 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 98 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 |
Create Session Response function.
msg | EpcS11SapMme::CreateSessionResponseMessage |
Definition at line 180 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, ns3::EpcS11Sap::GtpcMessage::teid, and ns3::EpcS1apSapEnb::ErabToBeSetupItem::transportLayerAddress.
|
private |
Delete Bearer Request function.
msg | EpcS11SapMme::DeleteBearerRequestMessage |
Definition at line 247 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 overridden 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 |
ERAB Release Indication function.
mmeUeS1Id | the MME UE S1 ID |
enbUeS1Id | the ENB UE S1 ID |
erabToBeReleaseIndication | the ERAB to be release indication list |
Definition at line 225 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 |
Initial Context Setup Response function.
mmeUeS1Id | the MME UE S1 ID |
enbUeS1Id | the ENB UE S1 ID |
erabSetupList | the ERAB setup list |
Definition at line 151 of file epc-mme.cc.
References NS_FATAL_ERROR, and NS_LOG_FUNCTION.
|
private |
Initial UE Message function.
mmeUeS1Id | the MME UE S1 ID |
enbUeS1Id | the ENB UE S1 ID |
imsi | the IMSI |
ecgi | the ECGI |
Definition at line 127 of file epc-mme.cc.
References ns3::EpcS11SapSgw::CreateSessionRequestMessage::bearerContextsToBeCreated, ns3::EpcS11SapSgw::BearerContextToBeCreated::bearerLevelQos, ns3::EpcS11SapSgw::CreateSessionRequest(), ns3::EpcS11SapSgw::BearerContextToBeCreated::epsBearerId, ns3::EpcS11Sap::Uli::gci, ns3::EpcS11SapSgw::CreateSessionRequestMessage::imsi, m_s11SapSgw, m_ueInfoMap, NS_ASSERT_MSG(), NS_LOG_FUNCTION, ns3::EpcS11Sap::GtpcMessage::teid, ns3::EpcS11SapSgw::BearerContextToBeCreated::tft, and ns3::EpcS11SapSgw::CreateSessionRequestMessage::uli.
|
private |
Modify Bearer Response function.
msg | EpcS11SapMme::ModifyBearerResponseMessage |
Definition at line 208 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 |
Path Switch Request function.
mmeUeS1Id | the MME UE S1 ID |
enbUeS1Id | the ENB UE S1 ID |
cgi | the CGI |
erabToBeSwitchedInDownlinkList | the ERAB to be switched in downlink list |
Definition at line 158 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 81 of file epc-mme.cc.
References m_s11SapMme.
EpcS1apSapMme * ns3::EpcMme::GetS1apSapMme | ( | ) |
Definition at line 69 of file epc-mme.cc.
References m_s1apSapMme.
|
static |
Get the type ID.
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 271 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 75 of file epc-mme.cc.
References m_s11SapSgw.
|
friend |
|
friend |
EnbInfo stored by EGCI.
Definition at line 224 of file epc-mme.h.
Referenced by AddEnb(), DoCreateSessionResponse(), and DoModifyBearerResponse().
|
private |
Definition at line 231 of file epc-mme.h.
Referenced by DoDispose(), EpcMme(), and GetS11SapMme().
|
private |
Definition at line 232 of file epc-mme.h.
Referenced by DoDeleteBearerRequest(), DoErabReleaseIndication(), DoInitialUeMessage(), DoPathSwitchRequest(), and SetS11SapSgw().
|
private |
Definition at line 229 of file epc-mme.h.
Referenced by DoDispose(), EpcMme(), and GetS1apSapMme().
UeInfo stored by IMSI.
Definition at line 200 of file epc-mme.h.
Referenced by AddBearer(), AddUe(), DoCreateSessionResponse(), DoDeleteBearerRequest(), DoErabReleaseIndication(), DoInitialUeMessage(), DoModifyBearerResponse(), and DoPathSwitchRequest().