Package: inet.networklayer.diffserv
MultiFieldClassifier
simple moduleThis classifier contains a list of filters that identifies the flows and determines their classes. Each filter can match the source and destination address, IP protocol number, source and destination ports, or ToS of the datagram. The first matching filter determines the index of the out gate. If no matching filter is found, then the packet will be sent through the defaultOut gate.
See RFC 2475 2.3.1, RFC 3290 4.2.2
Inheritance diagram
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
Extends
Name | Type | Description |
---|---|---|
PacketClassifierBase | simple module |
This is a base module for various packet classifier modules. Derived modules must implement a single packet classifier function which determines the index of the output gate for the next pushed packet. |
Parameters
Name | Type | Default value | Description |
---|---|---|---|
displayStringTextFormat | string | "classified %p pk (%l)" |
determines the text that is written on top of the submodule |
reverseOrder | bool | false | |
filters | xml | xml(" |
Properties
Name | Value | Description |
---|---|---|
display | i=block/classifier | |
class | MultiFieldClassifier |
Gates
Name | Direction | Size | Description |
---|---|---|---|
in | input | ||
out [ ] | output | ||
defaultOut | output |
Signals
Name | Type | Unit |
---|---|---|
pkClass | long |
Statistics
Name | Title | Source | Record | Unit | Interpolation Mode |
---|---|---|---|---|---|
pkClass | packet class | pkClass | vector | none |
Direct method calls (observed)
call to | function | info |
---|---|---|
DscpMarker | inet::DscpMarker::pushPacket | pushPacket |
PacketMultiplexer | inet::queueing::PacketMultiplexer::pushPacket | pushPacket |
Called methods (observed)
function | info | call from |
---|---|---|
inet::MultiFieldClassifier::handleCanPushPacketChanged | handleCanPushPacketChanged | PassivePacketSink |
Incoming messages (observed)
gate | msg | kind | ctrl | srcModule | tags |
---|---|---|---|---|---|
in | Packet | 0 | EthernetMac | DispatchProtocolReq, InterfaceInd, MacAddressInd, PacketProtocolTag | |
in | Packet | 0 | Ipv4 | DispatchProtocolInd, InterfaceInd, InterfaceReq, MacAddressInd, NetworkProtocolInd, PacketProtocolTag |
Push out messages (observed)
gate | msg | kind | ctrl | destModule | tags |
---|---|---|---|---|---|
defaultOut | Packet | 0 | DscpMarker | DispatchProtocolReq, InterfaceInd, MacAddressInd, PacketProtocolTag | |
defaultOut | Packet | 0 | PacketMultiplexer | DispatchProtocolReq, InterfaceInd, MacAddressInd, PacketProtocolTag | |
out[] | Packet | 0 | DscpMarker | InterfaceInd, MacAddressInd, PacketProtocolTag, DispatchProtocolInd?, DispatchProtocolReq?, InterfaceReq?, NetworkProtocolInd? | |
out[] | Packet | 0 | TokenBucketMeter | DispatchProtocolReq, InterfaceInd, MacAddressInd, PacketProtocolTag |
Packet operations (observed)
chunkType | packetAction |
---|---|
peekData, setBackOffset, setFrontOffset | |
ArpPacket | popAtFront |
Chunk | popAtFront |
EthernetFcs | popAtBack |
EthernetMacHeader | popAtFront |
Ipv4Header | popAtFront |
UdpHeader | popAtFront |
Shared Tagging operations (observed)
tagType | tagAction |
---|---|
L3AddressInd | findTag |
NetworkProtocolInd | findTag |
PacketProtocolTag | findTag |
Tagging operations (observed)
tagType | tagAction |
---|---|
inet::Ipv4InterfaceData | findTag |
Source code
// // This classifier contains a list of filters that identifies // the flows and determines their classes. // Each filter can match the source and destination address, // IP protocol number, source and destination ports, or ToS // of the datagram. The first matching filter determines the // index of the out gate. If no matching filter is found, // then the packet will be sent through the defaultOut gate. // // See RFC 2475 2.3.1, RFC 3290 4.2.2 // simple MultiFieldClassifier extends PacketClassifierBase { parameters: xml filters = default(xml("<filters/>")); @class(MultiFieldClassifier); @signal[pkClass](type=long); @statistic[pkClass](title="packet class"; source=pkClass; record=vector; interpolationmode=none); gates: output defaultOut; }File: src/inet/networklayer/diffserv/MultiFieldClassifier.ned