0

我试图在我的 Android 手机上使用流量控制选项将流量从一个接口重定向到另一个接口。

在尝试命令时,

tc qdisc add dev wlan0 root handle 1: prio

我收到以下错误

Android does not support qdisc 'prio'
  • 有什么方法可以让我prio在 Android 中获得 qdisc 支持?
  • 如果 Android 不支持prioqdisc,我还有什么其他选择?
  • 总体而言,Android 是否支持分类 qdisc?
4

2 回答 2

1

对于现在正在研究这个问题的任何人,Android 开发人员实际上将特定模块硬编码到 tc 中,并留下了许多/大部分,包括 prio。如果您从根目录查看位于 AOSP 的/external/iproute2/tc/tc.c (链接到 kitkat)的 tc.c 文件,您会看到它们将特定的 qdisc 类型硬编码到检查中:

#ifdef ANDROID
    if (!strcmp(str, "cbq"))
        return &cbq_qdisc_util;
    else if (!strcmp(str, "htb"))
        return &htb_qdisc_util;
    else if (!strcmp(str, "ingress"))
        return &ingress_qdisc_util;
    else {
        fprintf(stderr, "Android does not support qdisc '%s'\n", str);
        return NULL;
    }
#endif

我在 cynaogenmod 上发现了一个提交,它实际上修补了这些文件以恢复剩余的功能,比如 prio。您可以在此处找到该代码提交(下载 diff 以进行修补)。

希望有帮助!

于 2016-03-22T06:28:13.807 回答
-1

CONFIG_NET_SCH_PRIOprio在 Linux 内核中启用对 qdisc 的支持。很可能在构建内核时未启用此功能。它列在 Linux 内核配置树的下面:

-> Networking support
  -> Networking options
    -> QoS and/or fair queueing 
      -> Multi Band Priority Queueing (PRIO)
于 2013-09-12T06:56:32.407 回答