Google is committed to advancing racial equity for Black communities. See how.

Data Usage Tags Explained

Tags represent one of the metrics the data usage counters will be tracked against. By default, and implicitly, a tag is just based on the UID. The UID is used as the base for policing, and cannot be ignored. So a tag will always at least represent a UID (uid_tag). A tag can be explicitly augmented with an "accounting tag" which is associated with a UID. User space can use TrafficStats.setThreadStatsTag() to set the acct_tag portion of the tag which is then used  with sockets: all data belonging to that socket will be counted against the tag. The policing is then based on the tag's uid_tag portion, and stats are collected for the acct_tag portion separately.

Without explicit tagging, the qtaguid module will assume the default_tag:  {acct_tag=0, uid_tag=10003}

    a:  {acct_tag=1, uid_tag=10003}
    b:  {acct_tag=2, uid_tag=10003}
    c:  {acct_tag=3, uid_tag=10003}

a, b, c… represent explicit tags associated with specific sockets.

default_tag (acct_tag=0) is the default accounting tag that contains the total traffic for that uid, including all untagged traffic, and is typically used to enforce policing/quota rules.

These tags can be used to profile the network traffic of an application into separate logical categories (at a network socket level). Such tags can be removed, reapplied, or modified during runtime.

The qtaguid module has been implemented on kernel/common branch of android-3.0