【问题标题】:Opendaylight: how to get MAC address of switch from datapath ID?Opendaylight:如何从数据路径 ID 获取交换机的 MAC 地址?
【发布时间】:2017-09-11 18:43:05
【问题描述】:

我正在为 opendaylight Carbon 开发一个应用程序,我需要知道交换机的 MAC 地址。我可以在交换机连接时从 DpnId 确定这一点吗?谢谢。

【问题讨论】:

    标签: openflow opendaylight


    【解决方案1】:

    不确定您指的是哪个 MAC。如果你引用的是DPN每个端口的MAC地址,那么你可以为FlowCapableNodeConnector模型注册监听器,你可以通过在监听器的add方法中调用FlowCapableNodeConnector#getHardwareAddress来获取MAC。如果您在谈论 VM/数据包源/目标 MAC,那么您首先需要将数据包推送到控制器,然后您可以使用PacketProcessingListener 并提取 MAC,如下所示。

    public void onPacketReceived(PacketReceived notification) {
    
       final short tableId = notification.getTableId().getValue();
       final byte[] data = notification.getPayload();
       Ethernet res = new Ethernet();
    
        try {
            res.deserialize(data, 0, data.length * NetUtils.NumBitsInAByte);
        } catch (Exception e) {
            LOG.warn("PacketInHandler: Failed to decode Packet ", e);
            return;
        }
        try {
            Packet pkt = res.getPayload();
            LOG.info("Packet type is ->{}", pkt.getClass().getName());
            if (pkt instanceof IPv4) {
                IPv4 ipv4 = (IPv4) pkt;
                byte[] srcMac = res.getSourceMACAddress();
                byte[] dstMac = res.getDestinationMACAddress();
            }
        }
    }
    

    【讨论】:

    • 实际上我需要这个来编写我正在编写的另一段代码,所以感谢您发布这个。
    【解决方案2】:

    DPID 唯一标识交换机。 MAC地址一般不会暴露。 而且交换机本身一般没有MAC地址 (它们可能有数十个用于不同功能/接口的 MAC 地址)。 交换机在较低级别上工作,但它们使用 MAC 地址。

    【讨论】:

    • 我认为它可能与 LLDP 有关。
    猜你喜欢
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    • 2015-05-29
    • 2016-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    相关资源
    最近更新 更多