23 #include "service-flow.h"
24 #include "service-flow-record.h"
25 #include "ns3/simulator.h"
26 #include "wimax-tlv.h"
30 ServiceFlow::ServiceFlow (Direction direction)
33 m_direction = direction;
34 m_type = SF_TYPE_PROVISIONED;
35 m_record =
new ServiceFlowRecord ();
39 m_isMulticast =
false;
40 m_modulationType = WimaxPhy::MODULATION_TYPE_QPSK_12;
43 ServiceFlow::ServiceFlow ()
45 m_direction (SF_DIRECTION_DOWN),
46 m_type (SF_TYPE_PROVISIONED),
49 m_record (new ServiceFlowRecord ())
52 m_isMulticast =
false;
53 m_modulationType = WimaxPhy::MODULATION_TYPE_QPSK_12;
57 ServiceFlow::ServiceFlow (uint32_t sfid, Direction direction, Ptr<WimaxConnection> connection)
60 m_record =
new ServiceFlowRecord ();
62 m_connection = connection;
63 m_connection->SetServiceFlow (
this);
64 m_type = SF_TYPE_PROVISIONED;
65 m_direction = direction;
67 m_isMulticast =
false;
68 m_modulationType = WimaxPhy::MODULATION_TYPE_QPSK_12;
71 ServiceFlow::ServiceFlow (
Tlv tlv)
77 NS_ASSERT_MSG (tlv.GetType () == Tlv::UPLINK_SERVICE_FLOW || tlv.GetType () == Tlv::DOWNLINK_SERVICE_FLOW,
83 if (tlv.GetType () == Tlv::UPLINK_SERVICE_FLOW)
85 m_direction = SF_DIRECTION_UP;
89 m_direction = SF_DIRECTION_DOWN;
92 for (std::vector<Tlv*>::const_iterator iter = param->Begin (); iter != param->End (); ++iter)
94 switch ((*iter)->GetType ())
96 case SfVectorTlvValue::SFID:
98 m_sfid = ((
U32TlvValue*)((*iter)->PeekValue ()))->GetValue ();
101 case SfVectorTlvValue::CID:
103 uint16_t cid = ((
U16TlvValue*)((*iter)->PeekValue ()))->GetValue ();
104 m_connection = CreateObject<WimaxConnection> (cid, Cid::TRANSPORT);
107 case SfVectorTlvValue::QoS_Parameter_Set_Type:
109 m_qosParamSetType = ((
U8TlvValue*)((*iter)->PeekValue ()))->GetValue ();
112 case SfVectorTlvValue::Traffic_Priority:
114 m_trafficPriority = ((
U8TlvValue*)((*iter)->PeekValue ()))->GetValue ();
117 case SfVectorTlvValue::Maximum_Sustained_Traffic_Rate:
119 m_maxSustainedTrafficRate = ((
U32TlvValue*)((*iter)->PeekValue ()))->GetValue ();
122 case SfVectorTlvValue::Maximum_Traffic_Burst:
124 m_maxTrafficBurst = ((
U32TlvValue*)((*iter)->PeekValue ()))->GetValue ();
127 case SfVectorTlvValue::Minimum_Reserved_Traffic_Rate:
129 m_minReservedTrafficRate = ((
U32TlvValue*)((*iter)->PeekValue ()))->GetValue ();
132 case SfVectorTlvValue::Minimum_Tolerable_Traffic_Rate:
134 m_minTolerableTrafficRate = ((
U32TlvValue*)((*iter)->PeekValue ()))->GetValue ();
137 case SfVectorTlvValue::Service_Flow_Scheduling_Type:
139 m_schedulingType = (ServiceFlow::SchedulingType)((
U8TlvValue*)((*iter)->PeekValue ()))->GetValue ();
142 case SfVectorTlvValue::Request_Transmission_Policy:
144 m_requestTransmissionPolicy = ((
U32TlvValue*)((*iter)->PeekValue ()))->GetValue ();
147 case SfVectorTlvValue::Tolerated_Jitter:
149 m_toleratedJitter = ((
U32TlvValue*)((*iter)->PeekValue ()))->GetValue ();
152 case SfVectorTlvValue::Maximum_Latency:
154 m_maximumLatency = ((
U32TlvValue*)((*iter)->PeekValue ()))->GetValue ();
157 case SfVectorTlvValue::Fixed_length_versus_Variable_length_SDU_Indicator:
159 m_fixedversusVariableSduIndicator = ((
U16TlvValue*)((*iter)->PeekValue ()))->GetValue ();
162 case SfVectorTlvValue::CS_Specification:
164 m_csSpecification = (
enum CsSpecification)(((
U8TlvValue*)((*iter)->PeekValue ()))->GetValue ());
168 case SfVectorTlvValue::IPV4_CS_Parameters:
176 m_isMulticast =
false;
177 m_modulationType = WimaxPhy::MODULATION_TYPE_QPSK_12;
180 ServiceFlow::~ServiceFlow (
void)
191 ServiceFlow::SetDirection (Direction direction)
193 m_direction = direction;
196 ServiceFlow::Direction
197 ServiceFlow::GetDirection (
void)
const
203 ServiceFlow::SetType (Type type)
209 ServiceFlow::GetType (
void)
const
215 ServiceFlow::SetConnection (Ptr<WimaxConnection> connection)
217 m_connection = connection;
218 m_connection->SetServiceFlow (
this);
222 ServiceFlow::GetConnection (
void)
const
228 ServiceFlow::SetIsEnabled (
bool isEnabled)
230 m_isEnabled = isEnabled;
234 ServiceFlow::GetIsEnabled (
void)
const
240 ServiceFlow::SetRecord (ServiceFlowRecord *record)
246 ServiceFlow::GetRecord (
void)
const
252 ServiceFlow::GetQueue (
void)
const
258 return m_connection->GetQueue ();
261 enum ServiceFlow::SchedulingType
262 ServiceFlow::GetSchedulingType (
void)
const
264 return m_schedulingType;
268 ServiceFlow::HasPackets (
void)
const
274 return m_connection->HasPackets ();
284 return m_connection->HasPackets (packetType);
288 ServiceFlow::CleanUpQueue (
void)
290 GenericMacHeader hdr;
296 while (m_connection->HasPackets ())
298 packet = m_connection->GetQueue ()->Peek (hdr, timeStamp);
300 if (currentTime - timeStamp >
MilliSeconds (GetMaximumLatency ()))
302 m_connection->Dequeue ();
313 ServiceFlow::PrintQoSParameters (
void)
const
320 ServiceFlow::GetSfid (
void)
const
325 ServiceFlow::GetCid (
void)
const
327 if (m_connection == 0)
331 return m_connection->GetCid ().GetIdentifier ();
334 ServiceFlow::GetServiceClassName ()
const
336 return m_serviceClassName;
339 ServiceFlow::GetQosParamSetType (
void)
const
341 return m_qosParamSetType;
344 ServiceFlow::GetTrafficPriority (
void)
const
346 return m_trafficPriority;
349 ServiceFlow::GetMaxSustainedTrafficRate (
void)
const
351 return m_maxSustainedTrafficRate;
354 ServiceFlow::GetMaxTrafficBurst (
void)
const
356 return m_maxTrafficBurst;
359 ServiceFlow::GetMinReservedTrafficRate (
void)
const
361 return m_minReservedTrafficRate;
364 ServiceFlow::GetMinTolerableTrafficRate (
void)
const
366 return m_minTolerableTrafficRate;
369 ServiceFlow::SchedulingType ServiceFlow::GetServiceSchedulingType (
void)
const
371 return m_schedulingType;
374 ServiceFlow::GetRequestTransmissionPolicy (
void)
const
376 return m_requestTransmissionPolicy;
379 ServiceFlow::GetToleratedJitter (
void)
const
381 return m_toleratedJitter;
384 ServiceFlow::GetMaximumLatency (
void)
const
386 return m_maximumLatency;
389 ServiceFlow::GetFixedversusVariableSduIndicator (
void)
const
391 return m_fixedversusVariableSduIndicator;
394 ServiceFlow::GetSduSize (
void)
const
399 ServiceFlow::GetTargetSAID (
void)
const
404 ServiceFlow::GetArqEnable (
void)
const
409 ServiceFlow::GetArqWindowSize (
void)
const
411 return m_arqWindowSize;
414 ServiceFlow::GetArqRetryTimeoutTx (
void)
const
416 return m_arqRetryTimeoutTx;
419 ServiceFlow::GetArqRetryTimeoutRx (
void)
const
421 return m_arqRetryTimeoutRx;
425 ServiceFlow::GetArqBlockLifeTime (
void)
const
427 return m_arqBlockLifeTime;
430 ServiceFlow::GetArqSyncLoss (
void)
const
432 return m_arqSyncLoss;
435 ServiceFlow::GetArqDeliverInOrder (
void)
const
437 return m_arqDeliverInOrder;
440 ServiceFlow::GetArqPurgeTimeout (
void)
const
442 return m_arqPurgeTimeout;
445 ServiceFlow::GetArqBlockSize (
void)
const
447 return m_arqBlockSize;
450 ServiceFlow::CsSpecification ServiceFlow::GetCsSpecification (
void)
const
452 return m_csSpecification;
455 ServiceFlow::GetConvergenceSublayerParam (
void)
const
457 return m_convergenceSublayerParam;
460 ServiceFlow::GetUnsolicitedGrantInterval (
void)
const
462 return m_unsolicitedGrantInterval;
465 ServiceFlow::GetUnsolicitedPollingInterval (
void)
const
467 return m_unsolicitedPollingInterval;
471 ServiceFlow::GetIsMulticast (
void)
const
473 return m_isMulticast;
475 enum WimaxPhy::ModulationType
476 ServiceFlow::GetModulation (
void)
const
478 return m_modulationType;
485 ServiceFlow::SetSfid (uint32_t sfid)
490 ServiceFlow::SetServiceClassName (std::string name)
492 m_serviceClassName = name;
495 ServiceFlow::SetQosParamSetType (uint8_t type)
497 m_qosParamSetType = type;
500 ServiceFlow::SetTrafficPriority (uint8_t priority)
502 m_trafficPriority = priority;
505 ServiceFlow::SetMaxSustainedTrafficRate (uint32_t maxSustainedRate)
507 m_maxSustainedTrafficRate = maxSustainedRate;
510 ServiceFlow::SetMaxTrafficBurst (uint32_t maxTrafficBurst)
512 m_maxTrafficBurst = maxTrafficBurst;
515 ServiceFlow::SetMinReservedTrafficRate (uint32_t minResvRate)
517 m_minReservedTrafficRate = minResvRate;
520 ServiceFlow::SetMinTolerableTrafficRate (uint32_t minJitter)
522 m_minTolerableTrafficRate = minJitter;
525 ServiceFlow::SetServiceSchedulingType (
enum ServiceFlow::SchedulingType schedType)
527 m_schedulingType = schedType;
530 ServiceFlow::SetRequestTransmissionPolicy (uint32_t policy)
532 m_requestTransmissionPolicy = policy;
535 ServiceFlow::SetToleratedJitter (uint32_t jitter)
537 m_toleratedJitter = jitter;
540 ServiceFlow::SetMaximumLatency (uint32_t MaximumLatency)
542 m_maximumLatency = MaximumLatency;
545 ServiceFlow::SetFixedversusVariableSduIndicator (uint8_t sduIndicator)
547 m_fixedversusVariableSduIndicator = sduIndicator;
550 ServiceFlow::SetSduSize (uint8_t sduSize)
555 ServiceFlow::SetTargetSAID (uint16_t targetSaid)
557 m_targetSAID = targetSaid;
560 ServiceFlow::SetArqEnable (uint8_t arqEnable)
562 m_arqEnable = arqEnable;
565 ServiceFlow::SetArqWindowSize (uint16_t arqWindowSize)
567 m_arqWindowSize = arqWindowSize;
570 ServiceFlow::SetArqRetryTimeoutTx (uint16_t timeout)
572 m_arqRetryTimeoutTx = timeout;
575 ServiceFlow::SetArqRetryTimeoutRx (uint16_t timeout)
577 m_arqRetryTimeoutRx = timeout;
580 ServiceFlow::SetArqBlockLifeTime (uint16_t lifeTime)
582 m_arqBlockLifeTime = lifeTime;
585 ServiceFlow::SetArqSyncLoss (uint16_t syncLoss)
587 m_arqSyncLoss = syncLoss;
590 ServiceFlow::SetArqDeliverInOrder (uint8_t inOrder)
592 m_arqDeliverInOrder = inOrder;
595 ServiceFlow::SetArqPurgeTimeout (uint16_t timeout)
597 m_arqPurgeTimeout = timeout;
600 ServiceFlow::SetArqBlockSize (uint16_t size)
602 m_arqBlockSize = size;
605 ServiceFlow::SetCsSpecification (
enum ServiceFlow::CsSpecification spec)
607 m_csSpecification = spec;
610 ServiceFlow::SetConvergenceSublayerParam (CsParameters csparam)
612 m_convergenceSublayerParam = csparam;
615 ServiceFlow::SetUnsolicitedGrantInterval (uint16_t unsolicitedGrantInterval)
617 m_unsolicitedGrantInterval = unsolicitedGrantInterval;
620 ServiceFlow::SetUnsolicitedPollingInterval (uint16_t unsolicitedPollingInterval)
622 m_unsolicitedPollingInterval = unsolicitedPollingInterval;
625 ServiceFlow::SetIsMulticast (
bool isMulticast)
627 m_isMulticast = isMulticast;
630 ServiceFlow::SetModulation (
enum WimaxPhy::ModulationType modulationType)
632 m_modulationType = modulationType;
636 ServiceFlow::InitValues (
void)
639 m_serviceClassName =
"";
640 m_qosParamSetType = 0;
641 m_trafficPriority = 0;
642 m_maxSustainedTrafficRate = 0;
643 m_maxTrafficBurst = 0;
644 m_minReservedTrafficRate = 0;
645 m_minTolerableTrafficRate = 0;
646 m_schedulingType = ServiceFlow::SF_TYPE_NONE;
647 m_requestTransmissionPolicy = 0;
648 m_toleratedJitter = 0;
649 m_maximumLatency = 0;
650 m_fixedversusVariableSduIndicator = 0;
655 m_arqRetryTimeoutTx = 0;
656 m_arqRetryTimeoutRx = 0;
657 m_csSpecification = ServiceFlow::IPV4;
658 m_unsolicitedGrantInterval = 0;
659 m_unsolicitedPollingInterval = 0;
660 m_arqBlockLifeTime = 0;
662 m_arqDeliverInOrder = 0;
663 m_arqPurgeTimeout = 0;
665 m_direction = ServiceFlow::SF_DIRECTION_DOWN;
666 m_type = ServiceFlow::SF_TYPE_ACTIVE;
667 m_isMulticast =
false;
668 m_modulationType = WimaxPhy::MODULATION_TYPE_QPSK_12;
672 ServiceFlow::CopyParametersFrom (ServiceFlow sf)
674 m_serviceClassName = sf.GetServiceClassName ();
675 m_qosParamSetType = sf.GetQosParamSetType ();
676 m_trafficPriority = sf.GetTrafficPriority ();
677 m_maxSustainedTrafficRate = sf.GetMaxSustainedTrafficRate ();
678 m_maxTrafficBurst = sf.GetMaxTrafficBurst ();
679 m_minReservedTrafficRate = sf.GetMinReservedTrafficRate ();
680 m_minTolerableTrafficRate = sf.GetMinTolerableTrafficRate ();
681 m_schedulingType = sf.GetServiceSchedulingType ();
682 m_requestTransmissionPolicy = sf.GetRequestTransmissionPolicy ();
683 m_toleratedJitter = sf.GetToleratedJitter ();
684 m_maximumLatency = sf.GetMaximumLatency ();
685 m_fixedversusVariableSduIndicator = sf.GetFixedversusVariableSduIndicator ();
686 m_sduSize = sf.GetSduSize ();
687 m_targetSAID = sf.GetTargetSAID ();
688 m_arqEnable = sf.GetArqEnable ();
689 m_arqWindowSize = sf.GetArqWindowSize ();
690 m_arqRetryTimeoutTx = sf.GetArqRetryTimeoutTx ();
691 m_arqRetryTimeoutRx = sf.GetArqRetryTimeoutRx ();
692 m_csSpecification = sf.GetCsSpecification ();
693 m_convergenceSublayerParam = sf.GetConvergenceSublayerParam ();
694 m_unsolicitedGrantInterval = sf.GetUnsolicitedGrantInterval ();
695 m_unsolicitedPollingInterval = sf.GetUnsolicitedPollingInterval ();
696 m_direction = sf.GetDirection ();
697 m_isMulticast = sf.GetIsMulticast ();
698 m_modulationType = sf.GetModulation ();
701 ServiceFlow::ServiceFlow (
const ServiceFlow & sf)
703 m_sfid = sf.GetSfid ();
704 m_serviceClassName = sf.GetServiceClassName ();
705 m_qosParamSetType = sf.GetQosParamSetType ();
706 m_trafficPriority = sf.GetTrafficPriority ();
707 m_maxSustainedTrafficRate = sf.GetMaxSustainedTrafficRate ();
708 m_maxTrafficBurst = sf.GetMaxTrafficBurst ();
709 m_minReservedTrafficRate = sf.GetMinReservedTrafficRate ();
710 m_minTolerableTrafficRate = sf.GetMinTolerableTrafficRate ();
711 m_schedulingType = sf.GetServiceSchedulingType ();
712 m_requestTransmissionPolicy = sf.GetRequestTransmissionPolicy ();
713 m_toleratedJitter = sf.GetToleratedJitter ();
714 m_maximumLatency = sf.GetMaximumLatency ();
715 m_fixedversusVariableSduIndicator = sf.GetFixedversusVariableSduIndicator ();
716 m_sduSize = sf.GetSduSize ();
717 m_targetSAID = sf.GetTargetSAID ();
718 m_arqEnable = sf.GetArqEnable ();
719 m_arqWindowSize = sf.GetArqWindowSize ();
720 m_arqRetryTimeoutTx = sf.GetArqRetryTimeoutTx ();
721 m_arqRetryTimeoutRx = sf.GetArqRetryTimeoutRx ();
722 m_csSpecification = sf.GetCsSpecification ();
723 m_convergenceSublayerParam = sf.GetConvergenceSublayerParam ();
724 m_unsolicitedGrantInterval = sf.GetUnsolicitedGrantInterval ();
725 m_unsolicitedPollingInterval = sf.GetUnsolicitedPollingInterval ();
726 m_direction = sf.GetDirection ();
727 m_type = sf.GetType ();
728 m_connection = sf.GetConnection ();
729 m_isEnabled = sf.GetIsEnabled ();
730 m_record =
new ServiceFlowRecord ();
731 (*m_record) = (*sf.GetRecord ());
732 m_isMulticast = sf.GetIsMulticast ();
733 m_modulationType = sf.GetModulation ();
737 ServiceFlow::operator = (ServiceFlow
const& o)
740 m_sfid = o.GetSfid ();
741 m_serviceClassName = o.GetServiceClassName ();
742 m_qosParamSetType = o.GetQosParamSetType ();
743 m_trafficPriority = o.GetTrafficPriority ();
744 m_maxSustainedTrafficRate = o.GetMaxSustainedTrafficRate ();
745 m_maxTrafficBurst = o.GetMaxTrafficBurst ();
746 m_minReservedTrafficRate = o.GetMinReservedTrafficRate ();
747 m_minTolerableTrafficRate = o.GetMinTolerableTrafficRate ();
748 m_schedulingType = o.GetServiceSchedulingType ();
749 m_requestTransmissionPolicy = o.GetRequestTransmissionPolicy ();
750 m_toleratedJitter = o.GetToleratedJitter ();
751 m_maximumLatency = o.GetMaximumLatency ();
752 m_fixedversusVariableSduIndicator = o.GetFixedversusVariableSduIndicator ();
753 m_sduSize = o.GetSduSize ();
754 m_targetSAID = o.GetTargetSAID ();
755 m_arqEnable = o.GetArqEnable ();
756 m_arqWindowSize = o.GetArqWindowSize ();
757 m_arqRetryTimeoutTx = o.GetArqRetryTimeoutTx ();
758 m_arqRetryTimeoutRx = o.GetArqRetryTimeoutRx ();
759 m_csSpecification = o.GetCsSpecification ();
760 m_convergenceSublayerParam = o.GetConvergenceSublayerParam ();
761 m_unsolicitedGrantInterval = o.GetUnsolicitedGrantInterval ();
762 m_unsolicitedPollingInterval = o.GetUnsolicitedPollingInterval ();
763 m_direction = o.GetDirection ();
764 m_type = o.GetType ();
765 m_connection = o.GetConnection ();
766 m_isEnabled = o.GetIsEnabled ();
767 m_isMulticast = o.GetIsMulticast ();
768 m_modulationType = o.GetModulation ();
774 m_record =
new ServiceFlowRecord ();
776 (*m_record) = (*o.GetRecord ());
781 ServiceFlow::GetSchedulingTypeStr (
void)
const
783 switch (m_schedulingType)
786 return (
char*)
"UGS";
789 return (
char*)
"rtPS";
792 return (
char*)
"nrtPS";
807 tmpSfVector.Add (
Tlv (SfVectorTlvValue::SFID, 4,
U32TlvValue (m_sfid)));
808 tmpSfVector.Add (
Tlv (SfVectorTlvValue::CID, 2,
U16TlvValue (GetCid ())));
809 tmpSfVector.Add (
Tlv (SfVectorTlvValue::QoS_Parameter_Set_Type, 1,
U8TlvValue (m_qosParamSetType)));
810 tmpSfVector.Add (
Tlv (SfVectorTlvValue::Traffic_Priority, 1,
U8TlvValue (m_trafficPriority)));
811 tmpSfVector.Add (
Tlv (SfVectorTlvValue::Maximum_Sustained_Traffic_Rate, 4,
U32TlvValue (m_maxSustainedTrafficRate)));
812 tmpSfVector.Add (
Tlv (SfVectorTlvValue::Maximum_Traffic_Burst, 4,
U32TlvValue (m_maxTrafficBurst)));
813 tmpSfVector.Add (
Tlv (SfVectorTlvValue::Minimum_Reserved_Traffic_Rate, 4,
U32TlvValue (m_minReservedTrafficRate)));
814 tmpSfVector.Add (
Tlv (SfVectorTlvValue::Minimum_Tolerable_Traffic_Rate, 4,
U32TlvValue (m_minTolerableTrafficRate)));
815 tmpSfVector.Add (
Tlv (SfVectorTlvValue::Service_Flow_Scheduling_Type, 1,
U8TlvValue (m_schedulingType)));
816 tmpSfVector.Add (
Tlv (SfVectorTlvValue::Request_Transmission_Policy, 4,
U32TlvValue (m_requestTransmissionPolicy)));
817 tmpSfVector.Add (
Tlv (SfVectorTlvValue::Tolerated_Jitter, 4,
U32TlvValue (m_toleratedJitter)));
818 tmpSfVector.Add (
Tlv (SfVectorTlvValue::Maximum_Latency, 4,
U32TlvValue (m_maximumLatency)));
819 tmpSfVector.Add (
Tlv (SfVectorTlvValue::Fixed_length_versus_Variable_length_SDU_Indicator,
821 U8TlvValue (m_fixedversusVariableSduIndicator)));
822 tmpSfVector.Add (
Tlv (SfVectorTlvValue::SDU_Size, 1,
U8TlvValue (m_sduSize)));
823 tmpSfVector.Add (
Tlv (SfVectorTlvValue::Target_SAID, 2,
U16TlvValue (m_targetSAID)));
824 tmpSfVector.Add (
Tlv (SfVectorTlvValue::CS_Specification, 1,
U8TlvValue (m_csSpecification)));
825 tmpSfVector.Add (m_convergenceSublayerParam.
ToTlv ());
826 if (m_direction == SF_DIRECTION_UP)
828 return Tlv (Tlv::UPLINK_SERVICE_FLOW, tmpSfVector.GetSerializedSize (), tmpSfVector);
832 return Tlv (Tlv::DOWNLINK_SERVICE_FLOW, tmpSfVector.GetSerializedSize (), tmpSfVector);
this class implements a structure to manage some parameters and statistics related to a service flow ...
bool CheckMatch(Ipv4Address srcAddress, Ipv4Address dstAddress, uint16_t srcPort, uint16_t dstPort, uint8_t proto) const
check if a packets can be used with this classifier
This class implements the Type-Len-Value structure channel encodings as described by "IEEE Standard f...
#define NS_FATAL_ERROR(msg)
fatal error handling
Tlv ToTlv(void) const
creates a tlv from the classifier record
bool CheckClassifierMatch(Ipv4Address srcAddress, Ipv4Address dstAddress, uint16_t srcPort, uint16_t dstPort, uint8_t proto) const
#define NS_ASSERT_MSG(condition, message)
Ipv4 addresses are stored in host order in this class.
Time MilliSeconds(uint64_t ms)
create ns3::Time instances in units of milliseconds.
Tlv ToTlv(void) const
creates a TLV from this service flow
IpcsClassifierRecord GetPacketClassifierRule(void) const