2017-09-11 5 views

답변

0

DPID는 스위치를 고유하게 식별합니다. MAC 주소는 일반적으로 노출되지 않습니다. 또한 스위치 자체에는 일반적으로 MAC 주소가 (다른 기능/인터페이스에 대해 수십 개의 MAC 주소가있을 수 있음)이 없습니다. 스위치는 낮은 레벨에서 작동하지만 MAC 주소로 작동합니다.

+0

나는 LLDP와 관련이있을 것으로 생각하고있었습니다. – LostInTheFrequencyDomain

0

어떤 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(); 
     } 
    } 
} 
+0

사실 나는이 코드를 게시 해 주셔서 감사합니다. – LostInTheFrequencyDomain