SatGwLlc holds the GW implementation of LLC layer. More...
#include "satellite-gw-llc.h"
Public Member Functions | |
SatGwLlc () | |
Construct a SatGwLlc. More... | |
virtual | ~SatGwLlc () |
Destroy a SatGwLlc. More... | |
virtual void | ClearQueues () |
Remove all packets from the queues. More... | |
virtual bool | Enque (Ptr< Packet > packet, Address dest, uint8_t flowId) |
Called from higher layer (SatNetDevice) to enque packet to LLC. More... | |
virtual uint32_t | GetNBytesInQueue (Mac48Address utAddress) const |
Get the number of (new) bytes at LLC queue for a certain UT. More... | |
virtual uint32_t | GetNPacketsInQueue (Mac48Address utAddress) const |
Get the number of (new) packets at LLC queues for a certain UT. More... | |
virtual void | GetSchedulingContexts (std::vector< Ptr< SatSchedulingObject >> &output) const |
Create and fill the scheduling objects based on LLC layer information. More... | |
virtual Ptr< Packet > | NotifyTxOpportunity (uint32_t bytes, Mac48Address utAddr, uint8_t flowId, uint32_t &bytesLeft, uint32_t &nextMinTxO) |
Called from lower layer (MAC) to inform a tx opportunity of certain amount of bytes. More... | |
Public Member Functions inherited from ns3::SatLlc | |
SatLlc () | |
Construct a SatLlc. More... | |
virtual | ~SatLlc () |
Destroy a SatLlc. More... | |
void | AddDecap (Mac48Address source, Mac48Address dest, uint8_t flowId, Ptr< SatBaseEncapsulator > dec) |
Add an decapsulator entry for the LLC. More... | |
void | AddEncap (Mac48Address source, Mac48Address dest, uint8_t flowId, Ptr< SatBaseEncapsulator > enc) |
Add an encapsulator entry for the LLC. More... | |
virtual bool | BuffersEmpty () const |
Are buffers empty? More... | |
virtual bool | ControlBuffersEmpty () const |
Are buffers empty? More... | |
virtual uint32_t | GetNBytesInQueue () const |
Get the total number of (new) bytes in all encapsulators. More... | |
virtual uint32_t | GetNPacketsInQueue () const |
Get the total number of (new) packets in all encapsulators. More... | |
virtual void | Receive (Ptr< Packet > packet, Mac48Address source, Mac48Address dest) |
Receive user data packet from lower layer. More... | |
virtual void | ReceiveHigherLayerPdu (Ptr< Packet > packet, Mac48Address source, Mac48Address dest) |
Receive HL PDU from encapsulator/decapsulator entity. More... | |
void | SetAdditionalHeaderSize (uint32_t additionalHeaderSize) |
Set the additional header size. More... | |
void | SetCtrlMsgCallback (SatBaseEncapsulator::SendCtrlCallback cb) |
virtual void | SetGwAddress (Mac48Address address) |
Set the GW address. More... | |
virtual void | SetNodeInfo (Ptr< SatNodeInfo > nodeInfo) |
Set the node info. More... | |
void | SetReadCtrlCallback (SatLlc::ReadCtrlMsgCallback cb) |
Method to set read control message callback. More... | |
void | SetReceiveCallback (SatLlc::ReceiveCallback cb) |
Set Receive callback to forward packet to upper layer. More... | |
virtual void | SetSatelliteAddress (Mac48Address address) |
Set the SAT address. More... | |
Static Public Member Functions | |
static TypeId | GetTypeId (void) |
Get the type ID. More... | |
Static Public Member Functions inherited from ns3::SatLlc | |
static TypeId | GetTypeId (void) |
Derived from Object. More... | |
Protected Member Functions | |
virtual void | CreateDecap (Ptr< EncapKey > key) |
Virtual method to create a new decapsulator 'on-a-need-basis' dynamically. More... | |
virtual void | CreateEncap (Ptr< EncapKey > key) |
Virtual method to create a new encapsulator 'on-a-need-basis' dynamically. More... | |
void | DoDispose () |
Dispose of this class instance. More... | |
virtual SatEnums::SatLinkDir_t | GetSatLinkRxDir () |
Get the link RX direction. More... | |
virtual SatEnums::SatLinkDir_t | GetSatLinkTxDir () |
Get the link TX direction. More... | |
Protected Member Functions inherited from ns3::SatLlc | |
virtual void | ReceiveAck (Ptr< SatArqAckMessage > ack, Mac48Address source, Mac48Address dest) |
Receive a control msg (ARQ ACK) from lower layer. More... | |
Additional Inherited Members | |
Public Types inherited from ns3::SatLlc | |
typedef std::map< Ptr< EncapKey >, Ptr< SatBaseEncapsulator >, EncapKeyCompare > | EncapContainer_t |
Key = Ptr<EncapKey> (source, dest, flowId) Value = Ptr<SatBaseEncapsulator> Compare class = EncapKeyCompare. More... | |
typedef Callback< Ptr< SatControlMessage >, uint32_t > | ReadCtrlMsgCallback |
Callback to read control messages from container storing control messages. More... | |
typedef Callback< void, Ptr< const Packet > > | ReceiveCallback |
Receive callback used for sending packet to netdevice layer. More... | |
Protected Attributes inherited from ns3::SatLlc | |
uint32_t | m_additionalHeaderSize |
Additional header size to add to encapsulation/decapsulation. More... | |
EncapContainer_t | m_decaps |
Map of decapsulator base pointers. More... | |
EncapContainer_t | m_encaps |
Map of encapsulator base pointers. More... | |
SatEnums::RegenerationMode_t | m_forwardLinkRegenerationMode |
Regeneration mode on forward link. More... | |
bool | m_fwdLinkArqEnabled |
Is FWD link ARQ enabled. More... | |
Mac48Address | m_gwAddress |
GW address. More... | |
Ptr< SatNodeInfo > | m_nodeInfo |
Node info containing node related information, such as node type, node id and MAC address (of the SatNetDevice) More... | |
TracedCallback< Time, SatEnums::SatPacketEvent_t, SatEnums::SatNodeType_t, uint32_t, Mac48Address, SatEnums::SatLogLevel_t, SatEnums::SatLinkDir_t, std::string > | m_packetTrace |
Trace callback used for packet tracing: More... | |
SatLlc::ReadCtrlMsgCallback | m_readCtrlCallback |
The read control message callback. More... | |
SatEnums::RegenerationMode_t | m_returnLinkRegenerationMode |
Regeneration mode on return link. More... | |
bool | m_rtnLinkArqEnabled |
Is RTN link ARQ enabled. More... | |
ReceiveCallback | m_rxCallback |
The upper layer package receive callback. More... | |
Mac48Address | m_satelliteAddress |
SAT address, used in case of network regeneration. More... | |
SatBaseEncapsulator::SendCtrlCallback | m_sendCtrlCallback |
Callback to send control messages. More... | |
SatGwLlc holds the GW implementation of LLC layer.
SatGwLlc is inherited from SatLlc base class and implements the needed changes from the base class related to GW LLC packet transmissions and receptions.
Definition at line 40 of file satellite-gw-llc.h.
ns3::SatGwLlc::SatGwLlc | ( | ) |
Construct a SatGwLlc.
Definition at line 54 of file satellite-gw-llc.cc.
|
virtual |
Destroy a SatGwLlc.
This is the destructor for the SatGwLlc.
Definition at line 60 of file satellite-gw-llc.cc.
|
virtual |
Remove all packets from the queues.
Called when performing handovers.
Definition at line 373 of file satellite-gw-llc.cc.
References ns3::SatLlc::m_encaps.
Referenced by ns3::SatGwHelperDvb::Install().
|
protectedvirtual |
Virtual method to create a new decapsulator 'on-a-need-basis' dynamically.
key | Encapsulator key class |
Implements ns3::SatLlc.
Definition at line 247 of file satellite-gw-llc.cc.
References ns3::SatLlc::m_additionalHeaderSize, ns3::SatLlc::m_decaps, ns3::SatLlc::m_rtnLinkArqEnabled, ns3::SatLlc::m_sendCtrlCallback, and ns3::SatLlc::ReceiveHigherLayerPdu().
|
protectedvirtual |
Virtual method to create a new encapsulator 'on-a-need-basis' dynamically.
key | Encapsulator key class |
Implements ns3::SatLlc.
Definition at line 193 of file satellite-gw-llc.cc.
References ns3::SatLlc::m_additionalHeaderSize, ns3::SatLlc::m_encaps, ns3::SatLlc::m_forwardLinkRegenerationMode, ns3::SatLlc::m_fwdLinkArqEnabled, and ns3::SatEnums::REGENERATION_NETWORK.
Referenced by Enque().
|
protectedvirtual |
Dispose of this class instance.
Reimplemented from ns3::SatLlc.
Definition at line 66 of file satellite-gw-llc.cc.
References ns3::SatLlc::DoDispose().
|
virtual |
Called from higher layer (SatNetDevice) to enque packet to LLC.
packet | packet sent from above down to SatMac |
dest | Destination MAC address of the packet |
flowId | Flow identifier |
Encapsulator not found, thus create a new one. This method is implemented in the inherited classes, which knows which type of encapsulator to create.
Reimplemented from ns3::SatLlc.
Definition at line 74 of file satellite-gw-llc.cc.
References CreateEncap(), ns3::SatUtils::GetPacketInfo(), GetSatLinkTxDir(), ns3::SatEnums::LL_LLC, ns3::SatLlc::m_encaps, ns3::SatLlc::m_forwardLinkRegenerationMode, ns3::SatLlc::m_nodeInfo, ns3::SatLlc::m_packetTrace, ns3::SatLlc::m_satelliteAddress, ns3::SatEnums::PACKET_ENQUE, ns3::SatEnums::REGENERATION_NETWORK, ns3::SatAddressE2ETag::SetE2EDestAddress(), and ns3::SatAddressE2ETag::SetE2ESourceAddress().
|
virtual |
Get the number of (new) bytes at LLC queue for a certain UT.
Method checks only the SatQueue for packets, thus it does not count possible packets buffered at the encapsulator (e.g. in case of ARQ).
utAddress | the MAC address that identifies a particular UT node. |
Implements ns3::SatLlc.
Definition at line 331 of file satellite-gw-llc.cc.
References ns3::SatLlc::m_encaps.
|
virtual |
Get the number of (new) packets at LLC queues for a certain UT.
Method checks only the SatQueue for packets, thus it does not count possible packets buffered at the encapsulator (e.g. in case of ARQ).
utAddress | the MAC address that identifies a particular UT node. |
Implements ns3::SatLlc.
Definition at line 352 of file satellite-gw-llc.cc.
References ns3::SatLlc::m_encaps.
|
protectedvirtual |
Get the link RX direction.
Must be implemented by child clases.
Reimplemented from ns3::SatLlc.
Definition at line 298 of file satellite-gw-llc.cc.
References ns3::SatEnums::LD_RETURN.
|
protectedvirtual |
Get the link TX direction.
Must be implemented by child clases.
Reimplemented from ns3::SatLlc.
Definition at line 292 of file satellite-gw-llc.cc.
References ns3::SatEnums::LD_FORWARD.
Referenced by Enque().
|
virtual |
Create and fill the scheduling objects based on LLC layer information.
Scheduling objects may be used at the MAC layer to assist in scheduling.
output | reference to an output vector that will be filled with pointer to scheduling objects |
Implements ns3::SatLlc.
Definition at line 304 of file satellite-gw-llc.cc.
References ns3::SatLlc::m_encaps.
|
static |
|
virtual |
Called from lower layer (MAC) to inform a tx opportunity of certain amount of bytes.
utAddr | MAC address of the UT with tx opportunity |
bytes | Size of the Tx opportunity |
flowId | Flow identifier |
&bytesLeft | Bytes left after TxOpportunity |
&nextMinTxO | Minimum TxO after this TxO |
Implements ns3::SatLlc.
Definition at line 151 of file satellite-gw-llc.cc.
References ns3::SatUtils::GetPacketInfo(), ns3::SatEnums::LD_FORWARD, ns3::SatEnums::LL_LLC, ns3::SatLlc::m_encaps, ns3::SatLlc::m_nodeInfo, ns3::SatLlc::m_packetTrace, and ns3::SatEnums::PACKET_SENT.
Referenced by ns3::SatGwHelperDvb::Install().