如何使用cgroups进行networking会计

我正在尝试获取进程组的networking统计信息。 据我所知,linux上的复杂networking计费通常是使用netfilter / iptables的计费基础结构完成的。

正如我想inheritance这样的团体cgroups将是一个很好的匹配。

我最好的想法是让iptables匹配可以使用net_cls设置的classid

但是看来,iptables只能通过--set--class设置这个值。

所以:有没有一种很好的方法来获得(复杂和灵活的)networking会计和日志logging在Linux上的进程组?

    一个非常好的问题! 谢谢。 老一个,但会帮助这里的人


    答:您可以使用tc使用cgroup。 我从来没有听说过,但谷歌search后发现以下:

    net_cls – 此子系统使用类标识符(classid)标记networking数据包,以便Linuxstream量控制器(tc)识别源自特定cgroup任务的数据包。

    据此,你应该使用tc并从那里获取统计信息(有许多工具可用)。

    http://patchwork.ozlabs.org/patch/194809/

    联系阿列克谢,也许他可以帮助你:)


    B.你可以使用SELinux和iptables进行统计,但是用cgroups限制带宽 – 我更喜欢这种方法 – 在某些情况下tc对我来说看起来很难看,而对于集成来说却不是最佳的。

    SELinux具有networking连接function,可以根据进程标签将附加数据作为标签分配给每个数据包,甚至可以传输到另一个系统并过滤/logging/获取统计信息,使用SECMARK可以使用iptables做所有事情。

    http://selinuxproject.org/page/NB_Networking

    如果您还不熟悉SELinux,我build议您阅读RedHat / Fedora指南“Security-Enhanced Linux”和“SELinux FAQ”,另外还有非常好的解释和指南,Daniel J. Walsh(Dan Walsh) – 谷歌它。

    另外,对于新手来说,非常好的(也是更好的)起点是在YouTube上播放video,我相信你可以在大约三个小时内处理它,以了解你需要的一切:

    • 每个人的SELinux – Paul Wayper
    • 用于系统pipe理员的SELinux – Paul Wayper

    SELINUX是容易的,不要被害怕

    使用最新的内核,您可以直接在iptables中与cgroups进行匹配,请参阅: http : //lwn.net/Articles/569678/

    它已被包含到主线内核中。