QfiRuleSet Class Reference¶
|
Simu5G
|
#include <QfiRuleSet.h>
Detailed Description
An ordered set of QFI-assignment rules, shared by every module that classifies packets to QoS flows.
The rule grammar is one and the same at both evaluation sites – the network side's tunnel entry (~TrafficFlowFilter, downlink) and the UE's stack entry (~QosFlowClassifier, uplink): rules are evaluated in order, first match wins. The rules are authored centrally, in the dlQfiRules and ulQfiRules parameters of ~BearerConfigurator, which compiles each site's table and delivers it. Rule fields:
- filter (string, optional): an inet::PacketFilter – a message-name pattern (e.g. "*VoIP*") or an expression written as "expr(...)" (e.g. "expr(has(udp) && udp.destPort == 3000)"); omitted = the rule matches every packet. An expression is evaluated on every packet of the site, e.g. on an IPv6 UE's Neighbor Discovery messages too, so it must check for the headers it reads (has()).
- qfi (int, 0..63) or dscpAsQfi (bool): the QFI to assign – a fixed value, or the packet's DSCP field (IPv4 Type of Service or IPv6 Traffic Class) read as the QFI (exactly one of the two)
An Ethernet frame, the payload of an Ethernet session, is classified by the same rules, whose filter expressions read its headers (e.g. "expr(has(ieee8021qctag) && ieee8021qctag.pcp == 5)"); a dscpAsQfi rule does not match it, as it has no DSCP field (see classifyFrame()).
A packet matching no rule is left unclassified: classify() returns QFI_NONE, and what that means – the default flow, or no marking at all – is the caller's to decide. (The distinction matters because QFI 0 is a real classification, onto the default flow.)
Generated by