Can someone explain me please, because I don't understand the following concept. In tc you can add a dummy qdisc which can process a fraction of traffic by some specific rules.
For exapmle, here you create an explicit ingress qdisc for eth0. No idea by the way what is the point of this, like ingress qdisc isn't included by default.
$TC qdisc add dev eth0 ingress handle ffff:0
Then you apply a filter which calls an action to redirect incoming traffic with some rule (0 0) to a dummy device (ifb0). But the filtered traffic is marked as "egress"! Why is that so? SHouldn't this traffic also appear as ingress in ifb0?
$TC filter add dev eth0 parent ffff: protocol ip prio 10 u32 \
match u32 0 0 flowid 1:1 \
action mirred egress redirect dev ifb0
Or does ingress mean any traffic queued inside qdisk (both incoming and outgoing traffic). So let's say the network card received some data and before starting working with it, the kernel queued it in some qdisc. That data is ingress. The moment this data is dequeued for processing by the system, it became egress? And the vice versa, the application sends some data to some ip address, so before giving this data to network card, the kernel puts this data into appropriate qdisc. So when it happens this data becomes ingress. Then after the data was processed by an appropriate class and was dequeued to be passed to network card, this data became egress?
Or maybe it's ingress is all traffic coming from the network card to the kernel? In this case why there is egress in
action mirred egress redirect dev ifb0
Is it because the traffic is taken from the "ingress" part of the root qdisc owned by the network card, so when the "taking for redirection" takes place this data becomes "egress"? Why "egress"? I don't understand(