MultiFieldClassifier

Package: inet.networklayer.diffserv

MultiFieldClassifier

simple module

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

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 tofunctioninfo
DscpMarkerinet::DscpMarker::pushPacketpushPacket
PacketMultiplexerinet::queueing::PacketMultiplexer::pushPacketpushPacket

Called methods (observed)

functioninfocall from
inet::MultiFieldClassifier::handleCanPushPacketChangedhandleCanPushPacketChangedPassivePacketSink

Incoming messages (observed)

gatemsgkindctrlsrcModuletags
inPacket0EthernetMacDispatchProtocolReq, InterfaceInd, MacAddressInd, PacketProtocolTag
inPacket0Ipv4DispatchProtocolInd, InterfaceInd, InterfaceReq, MacAddressInd, NetworkProtocolInd, PacketProtocolTag

Push out messages (observed)

gatemsgkindctrldestModuletags
defaultOutPacket0DscpMarkerDispatchProtocolReq, InterfaceInd, MacAddressInd, PacketProtocolTag
defaultOutPacket0PacketMultiplexerDispatchProtocolReq, InterfaceInd, MacAddressInd, PacketProtocolTag
out[]Packet0DscpMarkerInterfaceInd, MacAddressInd, PacketProtocolTag, DispatchProtocolInd?, DispatchProtocolReq?, InterfaceReq?, NetworkProtocolInd?
out[]Packet0TokenBucketMeterDispatchProtocolReq, InterfaceInd, MacAddressInd, PacketProtocolTag

Packet operations (observed)

chunkTypepacketAction
peekData, setBackOffset, setFrontOffset
ArpPacketpopAtFront
ChunkpopAtFront
EthernetFcspopAtBack
EthernetMacHeaderpopAtFront
Ipv4HeaderpopAtFront
UdpHeaderpopAtFront

Shared Tagging operations (observed)

tagTypetagAction
L3AddressIndfindTag
NetworkProtocolIndfindTag
PacketProtocolTagfindTag

Tagging operations (observed)

tagTypetagAction
inet::Ipv4InterfaceDatafindTag

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