【问题标题】:Ingress/egress confusion in tctc 中的入口/出口混淆
【发布时间】:2021-12-23 18:23:25
【问题描述】:

谁能解释一下,因为我不明白以下概念。 在 tc 中,您可以添加一个虚拟 qdisc,它可以通过某些特定规则处理一小部分流量。

例如,在这里您为 eth0 创建一个显式入口 qdisc。 顺便说一句,不知道这有什么意义,比如默认情况下不包含入口 qdisc。

$TC qdisc add dev eth0 ingress handle ffff:0

然后你应用一个过滤器,它调用一个动作来重定向传入的流量 有一些规则(0 0)到一个虚拟设备(ifb0)。 但是过滤后的流量被标记为“出口”! 为什么呢?该流量不应该在 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

或者入口是否意味着在 qdisk 内排队的任何流量(传入和传出流量)。 因此,假设网卡收到了一些数据,并且在开始使用它之前,内核将它排入了某个 qdisc 中。该数据是入口。当这些数据出队以供系统处理时,它就变成了出口? 反之亦然,应用程序将一些数据发送到某个 ip 地址,因此在将这些数据提供给网卡之前,内核会将这些数据放入适当的 qdisc 中。所以当它发生时,这些数据就变成了入口。那么在数据被适当的类处理并出列传递给网卡后,这些数据就变成了出口?

或者它的入口是从网卡到内核的所有流量? 在这种情况下为什么有出口

action mirred egress redirect dev ifb0

是不是因为流量取自网卡拥有的根qdisc的“入口”部分,所以当“重定向”发生时,这个数据就变成了“出口”? 为什么是“出口”? 我不明白(

【问题讨论】:

    标签: linux trafficshaping


    【解决方案1】:

    确实如此,但请考虑一下:

    TC qdisc 方向与流量的实际方向有关。根据此参考,入口表示网络端口->接口: https://tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.adv-qdisc.ingress.html

    TC滤镜动作镜像/重定向方向是相对于界面的。入口意味着在数据包进入过滤器时对其进行镜像/重定向。出口意味着当数据包离开过滤器时镜像/重定向数据包。不同之处在于其他操作可能会在匹配时转换数据包。因此,进入过滤器的内容可能与流出过滤器的内容不同。该命令基本上允许用户决定是对原始数据包还是修改后的数据包进行镜像/重定向。 看看这个:https://man7.org/linux/man-pages/man8/tc-mirred.8.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-20
      • 2016-07-18
      • 1970-01-01
      • 1970-01-01
      • 2013-08-29
      • 2010-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多