一、什麼是LLDP協議
LLDP(Link Layer Discovery Protocol)是一種基於鏈路層的協議,使設備能夠發現直接相連的設備及其能力,包括設備名稱、端口類型、VLAN等信息。LLDP用於網絡拓撲發現、跟蹤、識別和管理,對於現代計算機網絡至關重要。它在多個供應商的設備之間交換信息,沒有使用網絡地址,不依賴於任何網絡協議,因此是一種獨立於廠商的協議。
二、LLDP的工作原理
LLDP協議允許設備通過一個局部區域網絡(LAN)鏈路交換有關設備的信息。這種鏈路可能是一個直接連接的纜繩或是取決於任何份別的中間設備。LLDP通過發送和接收以LLDPDU(LLDP數據單元)為基礎的消息來工作。每個LLDPDU包括類型、長度、操作和數據格式。LLDPDU本身不提供連接管理功能,而是提供一種機制來探測和了解連接中的設備。
當交換機上的一個端口啟用LLDP後,該設備就會發送一些LLDPDU到與其連接的鄰居設備。當收到這些信息後,鄰居設備會決定使用哪個端口接受並發送LLDP信息。可以通過使用不同的TLV(Type,length,value)編碼類型及具體的編碼方式,在LLDP的基礎上協定不同的信息,使用最多的是LLDP-MED(LLDP媒體端口參數協議)和LLDP-DCBX(LLDP數據中心橋接擴展)進行不同類型的信息交換和自動化管理。
三、LLDP的優點
相較於其他協議,LLDP的優點表現在以下幾個方面:
1. 獨立於廠商:LLDP協議是界限模糊的協議,對於設備類型、操作系統、供應商以及網絡設備廠商的限定很少。這為網絡管理員選擇設備提供了更大的靈活性和選擇性。
2. 自動化管理:LLDP使網絡管理員能夠自動跟蹤和管理它們的網絡。與其他協議相比較,LLDP可和網絡配置管理(NCM)等自動化管理方法進行集成,大大降低了網絡管理員的工作負荷。
3. 拓撲發現:LLDP協議能夠識別拓撲結構,以及在什麼情況下哪些設備與哪些接口連接。這使得對網絡進行診斷和排除問題變得更加容易。
4. 靈活性:LLDP協議的淡昧使網絡管理員能夠在不需要考慮太多限制的情況下自由選擇設備和網路配置。這就意味着,LLDP協議的使用和固定形式是不想關的。管理員可以使用它被視為網絡拓撲信息的任何信息。
四、使用LLDP協議的代碼實現示例
// LLDP source MAC address private String sourceMacAddress = "01:80:C2:00:00:0E"; // LLDP packet type private String packetType = "88-cc"; // Time-to-live in seconds for LLDP packet private int ttl = 120; // Value for chassis id LLDP field private String chassisId = "mac-address"; // Value for port id LLDP field private String portId = "ifname"; // TTL, ChassisID, PortID separators private static final byte SUBTYPE_LENGTH = 1; private static final byte END_LENGTH = 0; private LLDPPacket createLLDPFrame(EtherAddress src_mac, EtherAddress dst_mac, String port_name, String switch_name) { // Prepare chassis ID TLV byte[] chassis = ByteUtils.concatAll(new byte[] {0x02, 0x07, 0x04}, ByteUtils.hexStringToByteArray(src_mac.toString())); byte[] chassisType = new byte[] {(byte) (0x0D /*MAC Address*/ | (SUBTYPE_LENGTH << 5))}; byte[] chassisTLV = ByteUtils.concatAll(chassisType, chassis); // Prepare port ID TLV byte[] portIDValue = port_name.getBytes(UTF8); byte[] portType = new byte[] {(byte) (0x05 /*Interface Name*/ | (SUBTYPE_LENGTH <> 8) & 0xff), (byte) (ttl & 0xff)}; byte[] ttlType = new byte[] {(byte) (0x06 | (END_LENGTH << 5))}; byte[] ttlTLV = ByteUtils.concatAll(ttlType, ttlTotal); // Prepare all TLV content byte[] allTLV = ByteUtils.concatAll(chassisTLV, portTLV, ttlTLV); // Prepare LLDP packet data byte[] packetData = ByteUtils.concatAll( ByteUtils.hexStringToByteArray(packetType), allTLV); // Create ethernet header Ethernet ethPacket = (Ethernet) Ethernet.makePacket(src_mac, dst_mac, EthType.LLDP); // Wrap LLDP packet into an ethernet packet ethPacket.setPayload(packetData); return (LLDPPacket)Packet.fromBytes(ethPacket.serialize()); }
五、總結
本文詳細介紹了LLDP協議的工作原理以及它在現代計算機網絡中的作用,同時列舉了LLDP協議的優點。通過代碼實現示例,我們可以看到,使用LLDP的過程中需要先準備TLV(Type,length,value)格式的數據,然後再將這些數據填入LLDP數據包中。LLDP為網絡拓撲發現、跟蹤、識別和管理提供了一種靈活、自動化的管理方法,而且具有良好的可擴展性和獨立性,使網絡管理員可以更方便地管理網絡。
原創文章,作者:OCZZT,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/333991.html