【问题标题】:Add MPLS attributes in NETLINK Messages在 NETLINK 消息中添加 MPLS 属性
【发布时间】:2015-10-31 22:29:30
【问题描述】:

最新的Linux Kernel 4.1.4 支持MPLS 数据路径,我们可以通过NETLINK Socket 在内核中编写MPLS 路由表。 socket.h 中定义了一个新的地址族 AF_MPLS。

我试着写了一些代码-

req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct rtmsg));
req.n.nlmsg_flags = NLM_F_REQUEST|NLM_F_CREATE;
req.n.nlmsg_type = RTM_NEWROUTE;
req.r.rtm_family = AF_MPLS;
req.r.rtm_table = RT_TABLE_MAIN;
req.r.rtm_protocol = RTPROT_BOOT;
req.r.rtm_scope = RT_SCOPE_UNIVERSE;
req.r.rtm_type = RTN_UNICAST;

但是我不知道如何在 Netlink 属性中添加 MPLS 标签。

请帮帮我。

【问题讨论】:

    标签: linux linux-kernel kernel netlink


    【解决方案1】:

    根据net/mpls/af_mpls.c:rtm_to_route_config(),标签应提供RTA_DST NLA。

    请注意函数中的断言,它们非常严格。

    【讨论】:

    • RTA_NEWDST和RTA_DST,都是用来做标签的,用哪一个?
    • RTA_DST 是一个要匹配的传入标签,RTA_NEWDSTMAX_NEW_LABELS 向前推入 skb(请参阅mpls_forward())顺便说一句,感谢您的提示,将实现它现在在图书馆。
    • 不确定它是否对您有用,但由于您的问题,我开始在 pyroute2 支持 MPLS 相关的 RTNL。现在部分支持,但我希望在下周之前涵盖af_mpls.c 提供的所有内容。
    猜你喜欢
    • 1970-01-01
    • 2017-11-01
    • 2022-11-14
    • 2017-07-14
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    相关资源
    最近更新 更多