class <PacketQueue/Semantic> SemanticPacketQueue : public PacketQueue

This flavor of PacketQueue includes several buffer management and scheduling policies that are based on higher-layer semantics (e

Inheritance:


Public Fields

int ack_count
count of packets of various types number of TCP acks in the queue
int acks_to_send
number of ack to send in current schedule
int acksfirst_
These indicator variables are bound in derived objects and define queueing/scheduling polcies
int data_count
number of non-ack packets in the queue
int filteracks_
purge old acks when new one arrives
int marked_count_
number of marked packets
int off_cmn_
offsets of packet headers
int off_flags_
int off_ip_
int off_tcp_
int priority_drop_
drop marked (low priority) packets first
int random_drop_
pick packet to drop at random
int random_ecn_
pick packet for ECN at random
int reconsAcks_
set up queue as an ack recontructor
AckReconsController* reconsCtrl_
int replace_head_
new ack should take the place of old ack closest to the head
int unmarked_count_
number of unmarked packets

Public Methods

int command(int argc, const char*const* argv)
inline int compareFlows(hdr_ip *ip1, hdr_ip *ip2)
determine whether two packets belong to the same connection
virtual Packet* deque()
Packet* deque_acksfirst()
deque TCP acks before any other type of packet
void enque(Packet *)
virtual inline void enque_head(Packet *p)
void filterAcks(Packet *pkt, int replace_head)
When a new ack is enqued, purge older acks (as determined by the sequence number of the ack field) from the queue
inline Packet* head()
int isMarked(Packet *p)
check whether packet is marked
Packet* lookup(int index, int markedFlag)
pick out the index'th packet of the right kind (marked/unmarked)
Packet* pickPacketForECN(Packet *pkt)
pick packet for ECN notification (either marking or dropping)
Packet* pickPacketToDrop()
pick a packet to drop when the queue is full
void remove(Packet* p, Packet* pp)
Remove a specific packet given pointers to it and its predecessor in the queue
virtual void remove(Packet *)
SemanticPacketQueue()

Inherited from PacketQueue:

Public Methods

virtual inline void enqueHead(Packet* p)
Packet* getNext()
virtual int length()
void resetIterator()
Packet* tail()

Protected Fields

Packet* head_
int len_
Packet* tail_

Private Fields

Packet* iter

Documentation

This flavor of PacketQueue includes several buffer management and scheduling policies that are based on higher-layer semantics (e.g., TCP semantics) of packets.
SemanticPacketQueue()

int command(int argc, const char*const* argv)

Packet* deque_acksfirst()
deque TCP acks before any other type of packet

inline int compareFlows(hdr_ip *ip1, hdr_ip *ip2)
determine whether two packets belong to the same connection

void filterAcks(Packet *pkt, int replace_head)
When a new ack is enqued, purge older acks (as determined by the sequence number of the ack field) from the queue. The enqued ack remains at the tail of the queue, unless replace_head is true, in which case the new ack takes the place of the old ack closest to the head of the queue.

int isMarked(Packet *p)
check whether packet is marked

Packet* lookup(int index, int markedFlag)
pick out the index'th packet of the right kind (marked/unmarked)

Packet* pickPacketForECN(Packet *pkt)
pick packet for ECN notification (either marking or dropping)

Packet* pickPacketToDrop()
pick a packet to drop when the queue is full

void remove(Packet* p, Packet* pp)
Remove a specific packet given pointers to it and its predecessor in the queue. p and/or pp may be NULL.

inline Packet* head()

int ack_count
count of packets of various types number of TCP acks in the queue

int data_count
number of non-ack packets in the queue

int acks_to_send
number of ack to send in current schedule

int marked_count_
number of marked packets

int unmarked_count_
number of unmarked packets

int off_cmn_
offsets of packet headers

int off_flags_

int off_ip_

int off_tcp_

int acksfirst_
These indicator variables are bound in derived objects and define queueing/scheduling polcies. deque TCP acks before any other data

int filteracks_
purge old acks when new one arrives

int reconsAcks_
set up queue as an ack recontructor

int replace_head_
new ack should take the place of old ack closest to the head

int priority_drop_
drop marked (low priority) packets first

int random_drop_
pick packet to drop at random

int random_ecn_
pick packet for ECN at random

virtual Packet* deque()

void enque(Packet *)

virtual inline void enque_head(Packet *p)

virtual void remove(Packet *)

AckReconsController* reconsCtrl_


This class has no child classes.

alphabetic index hierarchy of classes


this page has been generated automatically by doc++

Adapted for the NS documentation page

(c)opyright by Malte Zöckler, Roland Wunderling
contact: doc++@zib.de