Subject: Re: PF_PACKET or nfnetlink logging of skb->priority

From: Patrick McHardy <[email-masked]>
Date: Thu, 19 Feb 2009 00:57:56 +0100

Jeremy Jackson wrote:
> It seems that there is nothing that can capture the skb->priority
> outside the kernel. 
>
> There is an iptables *target* "CLASSIFY", which can *set* skb->priority,
> but there is no iptables *match* based on it.
>
> tcpdump/pcap/PF_PACKET are oblivious to skb->priority.
>
> netfilter netlink queue can export the skb->mark like the right
> mechanism, but it doesn't touch skb->priority anywhere.   Perhaps there
> needs to be a another one in include/linux/netfilter/nfnetlink_queue.h:
>
> enum nfqnl_attr_type {
>         NFQA_UNSPEC,
>         NFQA_PACKET_HDR,
>         NFQA_VERDICT_HDR,               /* nfqnl_msg_verdict_hrd */
>         NFQA_MARK,   
> ... etc
> 	NFQA_SKBPRIORITY
>
> The specific use I'm thinking of now, is troubleshooting priority
> queueing with "tc" by being able to log or tcpdump traffic for a
> specific qdisc/class.
>
> It might also be nice to be able to tcpdump and/or log packets going
> into or out of a specific qdisc/class, but I'd settle for dumping
> packets based on skb->priority.
>   

I think this makes a lot of sense for nfnetlink_queue/log, I'll
gladly take patches :) It should also support changing the priority
using nfnetlink_queue, that would simplify userspace classification
since you don't need to map to mark values, just to have the
classifier map it back to classes.

For libpcap the main problem will probably be that its meta data
that needs to be stored in the pseudo header and you'll need to
keep the format compatible and the tools need to be changed to
interpret it. Using netfilter definitely looks like the easier
route :)