我正在为opendaylight Carbon开发一个应用程序,我需要知道交换机的MAC地址。当交换机连接时,我可以从DpnId确定这个吗?感谢。
答案 0 :(得分: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();
}
}
}
答案 1 :(得分:0)
DPID唯一标识交换机。通常不会暴露MAC地址。 而且,交换机本身通常没有MAC地址 (它们可能有不同功能/接口的数十个MAC地址)。 但是,交换机工作在较低级别,它们可以使用MAC地址。