【问题标题】:MPLS in mininet using iproute2, RTNETLINK answers: Operation not supportedmininet 中的 MPLS 使用 iproute2,RTNETLINK 回答:不支持操作
【发布时间】:2018-04-20 00:00:53
【问题描述】:

我正在尝试在 mininet 上使用 MPLS,我能够安装 iproute2,当我尝试这样的事情时

ip route add 192.168.10.187/32 encap mpls 101 via 10.10.0.187

我得到错误:

Error: either "to" is duplicate, or "encap" is a garbage.

当我尝试这样的事情时

ip -f mpls route add 101 dev lo

我得到错误:

RTNETLINK answers: Operation not supported

我检查了我的配置文件并设置了所有这些,但没有成功:

CONFIG_NETFILTER_NETLINK=y
CONFIG_NETFILTER_NETLINK_QUEUE=y
CONFIG_NETFILTER_NETLINK_LOG=y
CONFIG_NF_CT_NETLINK=y
CONFIG_SCSI_NETLINK=y
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_NET_SCH_INGRESS=y
CONFIG_NET_SCHED=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_NETFILTER_XT_TARGET_MARK=y

我有 linux 映像 4.4.0-97-generic,任何帮助将不胜感激。

更新

阅读后发现我缺少目录 /proc/sys/net/mpls

更新 2

不知何故做了更多的挖掘之后,不要问我如何,我终于安装了缺少的模块,现在我遇到了这个错误:

RTNETLINK answers: Invalid argument

更新 3

我仍然有更新 2 中所述的先前问题,但我注意到当我尝试添加新路由时,我没有收到任何抱怨,它实际上显示在路由表上。但是,当我这样做时:

ip -f mpls route show

我没有得到任何结果

【问题讨论】:

  • ENOTSUP 消息通常是因为该模块在内核中不可用。没有提到该配置中的 MPLS 模块(它们是 MPLS_ 变量)。假设它们被编译为可加载模块,请尝试使用 modprobe mpls_routing 加载路由模块
  • @Petesh 我试过了,我收到了这条消息:modprobe: FATAL: Module mpls_routing not found in directory /lib/modules/4.4.0-97-generic
  • 您似乎找到了该模块。所有命令都有一个很好的答案:stackoverflow.com/questions/31926342/…
  • @Petesh 谢谢我实际上正在阅读该帖子,并且当我添加路由时它可以工作,但是 show 命令没有显示任何内容,并且在尝试解封装或交换标签时遇到相同的错误

标签: linux mininet


【解决方案1】:

我认为你必须先加载内核 mpls 模块,

modprobe mpls_router
modprobe mpls_iptunnel

然后,允许网络接口处理 mpls 标记的数据包(默认禁用)

echo 1 > /proc/sys/net/mpls/conf/IFNAME/input

(其中 IFNAME 是发送/接收 mpls 数据包的网络接口的名称)

最后,指定内核应该为标签分配的条目数(默认为 0)

echo 2048 > /proc/sys/net/mpls/platform_labels

否则 iproute2 会很乐意处理你的路由,但内核不会知道其中的任何一个(我也被这点困扰了)。

参考资料:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 2017-11-09
    相关资源
    最近更新 更多