22 #include "ns3/inet-socket-address.h"
23 #include "ns3/packet.h"
25 #include "ns3/epc-gtpu-header.h"
27 #include "ns3/epc-x2-header.h"
28 #include "ns3/epc-x2.h"
86 : m_x2cUdpPort (4444),
135 NS_LOG_FUNCTION (
this << localCellId << localX2Address << remoteCellId << remoteX2Address);
156 "Mapping for remoteCellId = " << remoteCellId <<
" is already known");
157 m_x2InterfaceSockets [remoteCellId] = Create<X2IfaceInfo> (remoteX2Address, localX2cSocket, localX2uSocket);
160 "Mapping for control plane localSocket = " << localX2cSocket <<
" is already known");
163 NS_ASSERT_MSG (m_x2InterfaceCellIds.find (localX2uSocket) == m_x2InterfaceCellIds.end (),
164 "Mapping for data plane localSocket = " << localX2uSocket <<
" is already known");
165 m_x2InterfaceCellIds [localX2uSocket] = Create<X2CellInfo> (localCellId, remoteCellId);
179 "Missing infos of local and remote CellId");
199 NS_LOG_INFO (
"X2 HandoverRequest header: " << x2HoReqHeader);
216 NS_LOG_LOGIC (
"cellsInfo->m_localCellId = " << cellsInfo->m_localCellId);
218 "TargetCellId mismatches with localCellId");
229 NS_LOG_INFO (
"X2 HandoverRequestAck header: " << x2HoReqAckHeader);
249 NS_LOG_LOGIC (
"Recv X2 message: HANDOVER PREPARATION FAILURE");
254 NS_LOG_INFO (
"X2 HandoverPreparationFailure header: " << x2HoPrepFailHeader);
281 NS_LOG_INFO (
"X2 LoadInformation header: " << x2LoadInfoHeader);
300 NS_LOG_INFO (
"X2 SnStatusTransfer header: " << x2SnStatusXferHeader);
327 NS_LOG_INFO (
"X2 UeContextRelease header: " << x2UeCtxReleaseHeader);
343 NS_LOG_LOGIC (
"Recv X2 message: RESOURCE STATUS UPDATE");
348 NS_LOG_INFO (
"X2 ResourceStatusUpdate header: " << x2ResStatUpdHeader);
374 NS_LOG_LOGIC (
"Recv UE DATA through X2-U interface from Socket");
379 "Missing infos of local and remote CellId");
411 "Missing infos for targetCellId = " << params.
targetCellId);
413 Ptr<Socket> sourceSocket = socketInfo->m_localCtrlPlaneSocket;
414 Ipv4Address targetIpAddr = socketInfo->m_remoteIpAddr;
438 NS_LOG_INFO (
"X2 HandoverRequest header: " << x2HoReqHeader);
462 "Socket infos not defined for sourceCellId = " << params.
sourceCellId);
470 NS_LOG_INFO (
"Send X2 message: HANDOVER REQUEST ACK");
486 NS_LOG_INFO (
"X2 HandoverAck header: " << x2HoAckHeader);
512 "Socket infos not defined for sourceCellId = " << params.
sourceCellId);
520 NS_LOG_INFO (
"Send X2 message: HANDOVER PREPARATION FAILURE");
535 NS_LOG_INFO (
"X2 HandoverPrepFail header: " << x2HoPrepFailHeader);
560 "Socket infos not defined for targetCellId = " << params.
targetCellId);
568 NS_LOG_INFO (
"Send X2 message: SN STATUS TRANSFER");
583 NS_LOG_INFO (
"X2 SnStatusTransfer header: " << x2SnStatusXferHeader);
587 packet->
AddHeader (x2SnStatusXferHeader);
606 "Socket infos not defined for sourceCellId = " << params.
sourceCellId);
614 NS_LOG_INFO (
"Send X2 message: UE CONTEXT RELEASE");
628 NS_LOG_INFO (
"X2 UeContextRelease header: " << x2UeCtxReleaseHeader);
632 packet->
AddHeader (x2UeCtxReleaseHeader);
650 "Missing infos for targetCellId = " << params.
targetCellId);
652 Ptr<Socket> sourceSocket = socketInfo->m_localCtrlPlaneSocket;
653 Ipv4Address targetIpAddr = socketInfo->m_remoteIpAddr;
671 NS_LOG_INFO (
"X2 LoadInformation header: " << x2LoadInfoHeader);
696 "Missing infos for targetCellId = " << params.
targetCellId);
698 Ptr<Socket> sourceSocket = socketInfo->m_localCtrlPlaneSocket;
699 Ipv4Address targetIpAddr = socketInfo->m_remoteIpAddr;
704 NS_LOG_INFO (
"Send X2 message: RESOURCE STATUS UPDATE");
719 NS_LOG_INFO (
"X2 ResourceStatusUpdate header: " << x2ResourceStatUpdHeader);
723 packet->
AddHeader (x2ResourceStatUpdHeader);
743 "Missing infos for targetCellId = " << params.
targetCellId);
745 Ptr<Socket> sourceSocket = socketInfo->m_localUserPlaneSocket;
746 Ipv4Address targetIpAddr = socketInfo->m_remoteIpAddr;
759 NS_LOG_INFO (
"Forward UE DATA through X2 interface");