#include <BasicDSCPClassifier.h>
Inheritance diagram for BasicDSCPClassifier:

Public Member Functions | |
| virtual int | numQueues () |
| virtual int | classifyPacket (cMessage *msg) |
Private Member Functions | |
| virtual int | classifyByDSCP (int dscp) |
|
|
00061 {
00062 // DSCP is 6 bits, mask out all others
00063 dscp = (dscp & 0x3f);
00064
00065 // DSCP format:
00066 // xxxxx0: used by standards; see RFC 2474
00067 // xxxxx1: experimental or local use
00068 // source: Stallings, High-Speed Networks, 2nd Ed, p494
00069
00070 // all-zero DSCP maps to Best Effort (lowest priority)
00071 if (dscp==0)
00072 return BEST_EFFORT;
00073
00074 // assume Best Effort service for experimental or local DSCP's too
00075 if (dscp & 1)
00076 return BEST_EFFORT;
00077
00078 // from here on, we deal with non-zero standardized DSCP values only
00079 int upper3bits = (dscp & 0x3c) >> 3;
00080 //int lower3bits = (dscp & 0x07); -- we'll ignore this
00081
00082 // rfc 2474, section 4.2.2: at least two independently forwarded classes of traffic have to be created
00083 if (upper3bits & 0x04)
00084 return 0; // highest priority
00085 else
00086 return 1; // low priority (best effort)
00087 }
|
|
|
The method should return the priority (the index of subqueue) for the given packet, a value between 0 and numQueues()-1 (inclusive). Implements IQoSClassifier. 00037 {
00038 if (dynamic_cast<IPDatagram *>(msg))
00039 {
00040 // IPv4 QoS: map DSCP to queue number
00041 IPDatagram *datagram = (IPDatagram *)msg;
00042 int dscp = datagram->diffServCodePoint();
00043 return classifyByDSCP(dscp);
00044 }
00045 #ifdef WITH_IPv6
00046 else if (dynamic_cast<IPv6Datagram *>(msg))
00047 {
00048 // IPv6 QoS: map Traffic Class to queue number
00049 IPv6Datagram *datagram = (IPv6Datagram *)msg;
00050 int dscp = datagram->trafficClass();
00051 return classifyByDSCP(dscp);
00052 }
00053 #endif
00054 else
00055 {
00056 return BEST_EFFORT; // lowest priority ("best effort")
00057 }
00058 }
|
|
|
Returns the largest value plus one classifyPacket() returns. Implements IQoSClassifier. 00032 {
00033 return 2;
00034 }
|
1.4.1