나는 스위치의 MAC 주소를 알아야 할 opendaylight Carbon 응용 프로그램을 개발 중입니다. 스위치를 연결할 때 DpnId에서 확인할 수 있습니까? 감사.Opendaylight : 데이터 패스 ID에서 스위치의 MAC 주소를 얻는 방법?
0
A
답변
0
DPID는 스위치를 고유하게 식별합니다. MAC 주소는 일반적으로 노출되지 않습니다. 또한 스위치 자체에는 일반적으로 MAC 주소가 (다른 기능/인터페이스에 대해 수십 개의 MAC 주소가있을 수 있음)이 없습니다. 스위치는 낮은 레벨에서 작동하지만 MAC 주소로 작동합니다.
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
나는 LLDP와 관련이있을 것으로 생각하고있었습니다. – LostInTheFrequencyDomain