介绍:
此队列实现(第9.19.2.6节“重传过程”第6段; IEEE 802.11-2012)中描述的超时过程。
当MAC接收到要发送到PHY的分组时,在被当前时间标记之后,它在内部队列中排队。
当数据包出队时,队列检查其时间戳以验证是否应该删除它。
如果dot11EDCATableMSDULifetime已过,则将被删除。 否则,它返回给调用者。
Attributes属性:
MaxPacketNumber: If a packet arrives when there are already this number of packets, it is dropped.
Set with class: ns3::UintegerValue
Underlying type: uint32_t 0:4294967295
Initial value: 400
Flags: construct write read
如果一个分组到达,当已经缓存这个数量的分组,它被丢弃。
MaxDelay: If a packet stays longer than this delay in the queue, it is dropped.
Set with class: ns3::TimeValue
Underlying type: Time –9223372036854775808.0ns:+9223372036854775807.0ns
Initial value: +500000000.0ns
Flags: construct write read
如果分组在队列中保持比此延迟更长,则丢弃该分组。
DropPolicy: Upon enqueue with full queue, drop oldest (DropOldest) or newest (DropNewest) packet
Set with class: ns3::EnumValue
Underlying type:
Initial value: DropNewest
Flags: construct write read
在满队列入队时,删除最旧(下降最旧)和最新(下降最新)数据包
构造器:
ns3::WifiMacQueue::WifiMacQueue()
public方法:
Ptr< const Packet > Dequeue (WifiMacHeader *hdr)
使队列前面的数据包出队列。
Ptr< const Packet > DequeueByTidAndAddress (WifiMacHeader *hdr, uint8_t tid,
WifiMacHeader::AddressType type, Mac48Address addr)
搜索和返回,如果存在于此队列中,具有由类型指示的地址的第一分组等于addr,
并且tid等于tid。
此方法从此队列中删除数据包。 通常由ns3 :: EdcaTxopN使用,
以便执行正确的MSDU聚合(A-MSDU)。
Ptr< const Packet > DequeueFirstAvailable (WifiMacHeader *hdr, Time &tStamp,
const QosBlockedDestinations *blockedPackets)
返回第一个可用的数据包进行传输。
如果分组是具有tid和address1字段等于tid和addr的QoS分组,则分组可能不可用,
该分组索引在BlockAckManager对象中的待定协定。
所以在从由addr寻址的站接收到ADDBA响应帧之前,不允许发送分组。 此方法从队列中删除数据包。
void Enqueue (Ptr< const Packet > packet, const WifiMacHeader &hdr)
将给定的数据包及其相应的Wifi Mac头放入队列的末尾。
void Flush (void)
清空队列。
Mac48Address ns3::WifiMacQueue::GetAddressForPacket (enum WifiMacHeader::AddressType type,PacketQueueI it)
返回给定包的适当地址(由包队列迭代器给出)。
Time GetMaxDelay (void) const
返回丢弃数据包之前的最大延迟。
uint32_t GetMaxSize (void) const
返回最大队列大小。
uint32_t GetNPacketsByTidAndAddress (uint8_t tid, WifiMacHeader::AddressType type, Mac48Address addr)
返回tid等于tid的QoS数据包数,以及类型和addr指定的地址。
uint32_t GetSize (void)
返回当前队列大小。
bool IsEmpty (void)
返回如果队列为空。
Ptr< const Packet > Peek (WifiMacHeader *hdr)
在队列前面查看数据包。
数据包不会被删除。
Ptr< const Packet > PeekByTidAndAddress (WifiMacHeader *hdr, uint8_t tid,
WifiMacHeader::AddressType type, Mac48Address addr, Time *timestamp)
搜索和返回,如果存在于此队列中,具有由类型指示的地址的第一分组等于addr,并且tid等于tid。
此方法不会从此队列中删除数据包。
通常由ns3 :: EdcaTxopN使用,以便执行正确的MSDU聚合(A-MSDU)。
Ptr< const Packet > PeekFirstAvailable (WifiMacHeader *hdr, Time &tStamp,
const QosBlockedDestinations *blockedPackets)
返回第一个可用的数据包进行传输。
该数据包不会从队列中删除。
void PushFront (Ptr< const Packet > packet, const WifiMacHeader &hdr)
将给定的数据包及其相应的Wifi Mac头放入队列的前面。
bool Remove (Ptr< const Packet > packet)
如果存在,从队列中删除数据包并返回true。
否则它没有效果,返回false。 在线性时间(O(n))中执行分组的删除。
void SetMaxDelay (Time delay)
设置丢弃报文之前的最大延迟时间。
void SetMaxSize (uint32_t maxSize)
设置最大队列大小。