Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(1491)

Unified Diff: src/devices/lte/bearer-qos-parameters.h

Issue 1869054: LTE module for ns-3
Patch Set: Created 13 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_ */

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b