Index: src/devices/lte/bearer-qos-parameters.h |
=================================================================== |
new file mode 100755 |
--- /dev/null |
+++ b/src/devices/lte/bearer-qos-parameters.h |
@@ -0,0 +1,182 @@ |
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ |
+/* |
+ * Copyright (c) 2010 TELEMATICS LAB, DEE - Politecnico di Bari |
+ * |
+ * This program is free software; you can redistribute it and/or modify |
+ * it under the terms of the GNU General Public License version 2 as |
+ * published by the Free Software Foundation; |
+ * |
+ * This program is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with this program; if not, write to the Free Software |
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
+ * |
+ * Author: Giuseppe Piro <g.piro@poliba.it> |
+ */ |
+ |
+#ifndef BEARER_QOS_PARAMETERS_H_ |
+#define BEARER_QOS_PARAMETERS_H_ |
+ |
+#include "ns3/object.h" |
+ |
+namespace ns3 { |
+ |
+ |
+/** |
+ * \brief the BearerQoSParameters class implements a set of QoS |
+ * parameters associated to the bearer. |
+ * |
+ * Bearer Level QoS (TS 23.401, Clause 4.7.3) |
+ * |
+ * A bearer uniquely identifies traffic flows that receive a |
+ * common QoS treatment. |
+ * |
+ * Each bearer (GBR and Non-GBR) is associated with |
+ * the following bearer level QoS parameters: |
+ * |
+ * ** QoS Class Identifier (QCI) |
+ * A QCI is a scalar that is used as a reference to access node-specific |
+ * parameters that control bearer level packet forwarding treatment |
+ * (e.g. scheduling weights, admission thresholds, queue management |
+ * thresholds, link layer protocol configuration, etc.), and that have been |
+ * pre-configured by the operator owning the access node (e.g. eNodeB). |
+ * A one-to-one mapping of standardized QCI values to standardized |
+ * characteristics is captured TS 23.203 [6]. |
+ * |
+ * ** Allocation and Retention Priority (ARP), |
+ * The ARP shall contain information about the priority |
+ * level (scalar), the pre-emption capability (flag) and the |
+ * pre-emption vulnerability (flag). |
+ * |
+ * ** Guaranteed Bit Rate (GBR) for UP and DW link |
+ * ** Maximum Bit Rate (MBR) for UP and DW link |
+ * The GBR denotes the bit rate that can be expected to |
+ * be provided by a GBR bearer. The MBR limits the bit rate that |
+ * can be expected to be provided by a GBR bearer |
+ * (e.g. excess traffic may get discarded by a rate shaping function). |
+ * See clause 4.7.4 for further details on GBR and MBR |
+ */ |
+ |
+class BearerQoSParameters : public Object |
+{ |
+public: |
+ BearerQoSParameters (void); |
+ |
+ /** |
+ * \brief Create a QoS Parameters Set |
+ * |
+ * \param qci the QoS Class Identifier |
+ * \param gbr the maximum bit rate to guarantee |
+ * \param mbr the minimum bit rate to guarantee |
+ */ |
+ BearerQoSParameters (int qci, |
+ double gbr, |
+ double mbr); |
+ |
+ /** |
+ * \brief Create a QoS Parameters Set |
+ * |
+ * \param qci the QoS Class Identifier |
+ * \param apec the Allocation and Retention Priority of pre-emption capability |
+ * \param apev the Allocation and Retention Priority of pre-emption vulnerability |
+ * \param gbr the maximum bit rate to guarantee |
+ * \param mbr the minimum bit rate to guarantee |
+ */ |
+ BearerQoSParameters (int qci, |
+ bool apec, |
+ bool apev, |
+ double gbr, |
+ double mbr); |
+ |
+ virtual ~BearerQoSParameters (void); |
+ |
+ enum BearerQoSType |
+ { |
+ BEARER_TYPE_GBR, BEARER_TYPE_NGBR |
+ }; |
+ |
+ /** |
+ * \brief Set the QoS type of the bearer |
+ * \param bearerQoSType the QoS type |
+ */ |
+ void SetBearerQoSType (BearerQoSType qosType); |
+ |
+ /** |
+ * \brief Get the QoS type of the bearer |
+ * \return the QoS tyope of the bearer |
+ */ |
+ BearerQoSType GetBearerQoSType (void) const; |
+ |
+ |
+ /** |
+ * \param qci the QoS Class Identifier |
+ */ |
+ void SetQCI (int qci); |
+ /** |
+ * \return the QCI value |
+ */ |
+ int GetQCI (void) const; |
+ |
+ /** |
+ * \param apec the Allocation and Retention Priority of pre-emption capability |
+ */ |
+ void SetArpPreEmptionCapability (bool apec); |
+ /** |
+ * \return the ArpPreEmptionCapability value |
+ */ |
+ bool GetArpPreEmptionCapability (void) const; |
+ |
+ /** |
+ * \param apev the Allocation and Retention Priority of pre-emption vulnerability |
+ */ |
+ void SetArpPreEmptionVulnerability (bool apev); |
+ /** |
+ * \return the ArpPreEmptionVulnerability value |
+ */ |
+ bool GetArpPreEmptionVulnerability (void) const; |
+ |
+ /** |
+ * \param gbr the maximum bit rate to guarantee |
+ */ |
+ void SetGBR (double gbr); |
+ /** |
+ * \return the maximum bit rate |
+ */ |
+ double GetGBR (void) const; |
+ |
+ /** |
+ * \param mbr the minimum bit rate to guarantee |
+ */ |
+ void SetMBR (double mbr); |
+ /** |
+ * \return the minimum bit rate |
+ */ |
+ double GetMBR (void) const; |
+ |
+ /** |
+ * \param targetDelay the target delay |
+ */ |
+ void SetMaxDelay (double targetDelay); |
+ /** |
+ * \return the targetDelay value |
+ */ |
+ double GetMaxDelay (void) const; |
+ |
+private: |
+ BearerQoSType m_bearerQoSType; |
+ |
+ int m_qci; |
+ bool m_arpPreEmptionCapability; |
+ bool m_arpPreEmptionVulnerability; |
+ double m_gbr; |
+ double m_mbr; |
+ double m_maxDelay; |
+}; |
+ |
+ |
+} |
+#endif /* BEARER_QOS_PARAMETERS_H_ */ |