一些 PROFINET 网络调试和诊断工具,如西门子公司的 PRONETA 软件和 HMS 旗下 PROCENTEC Atlas 产品,能够在线扫描并生成整个 PROFINET 网络的拓扑图,这种拓扑图是如何生成的呢?
拓扑生成依赖 LLDP 协议
PROFINET 设备(Conformance Class - A)都需要支持 IEEE 802.1 AB 规范所定义的链路层发现协议(Link Layer Discovery Protocol)简称 LLDP,相互连接的 PROFINET 设备之间使用 LLDP 协议来交互连接信息,诊断工具通过读取这些信息来生成拓扑图。
💡 Tips
在 PROFINET 网络中应避免使用不支持 LLDP 协议的设备,如交换机等网络组件。
PROFINET 设备在启动后,将定期地通过每个已连接的端口对外发送 LLDP 以太网报文。
LLDP 报文格式

-
目标 MAC 使用固定的多播地址 01:80:C2:00:00:0E, 确保所有的 PROFINET 设备都能正确接收此以太网帧,但任何收到此以太网帧的设备都不应进行转发。
-
源 MAC 使用的是发送该以太网帧的 PROFINET 设备端口 MAC,同一个设备如果有多个端口,那么每个端口发送的 LLDP 源 MAC 都是不一样的。
💡 Tips
PROFINET 设备有多个 MAC 地址,设备本身有 MAC 地址,设备的每一个端口也有其唯一的 MAC 地址。
-
以太网类型使用固定值 0x88CC

-
LLDPDU 数据字段包含多个 IEEE 802.1AB 规定和 PNIO 扩展的 TLV(Type Length Value)
每一个 TLV 都至少包含以下三个字段:
-
类型(Type)
-
信息字符串长度(Information String Length)
-
信息字符串(Information String)
下面为大家介绍 LLDPDU 里面包含的各种 TLV 内容。
LLDPDU 中 TLV 介绍
Chassis ID TLV
Chassis ID TLV 是 IEEE 802.1AB 规定的必需项。
-
当 PROFINET 设备的设备名称还未分配上,则 Sub Type=4,Chassis ID 里面实际包含的是 PROFINET 设备的设备 MAC
-
当 PROFINET 设备的设备名称已经分配,则 Sub Type=7,Chassis ID 里面实际包含的是 PROFINET 设备的设备名称

Port ID TLV
Port ID TLV 是 IEEE 802.1AB 规定的必需项。
里面包含的是发送该数据帧的设备端口号的字符串表示。

TTL TLV
TTL TLV 是 IEEE 802.1AB 规定的必需项。
TTL 给出了数据的有效时长,单位为秒,由于只有 2 个字节长,因而最大有效时间是 65536 秒。
如果在这个时间到期了还没有新的 LLDPDU 被收到,则该 TLV 所属的那个 LLDPDU 携带的信息会被从 MIB 中删除。

Management Address TLV
大多数 PROFINET 设备在发送 LLDP 帧时也会填充可选的 Management Address, TLV Type=8, 该 TLV 包含的是 PROFINET 设备正在使用的 IP 地址信息。

当 TLV Type=127 时,Information String 中的格式可由其他组织进行扩展。
IEEE 802.3 TLV
IEEE 802.3 (OUI = 00:12:0F) 扩展了设备的 MAC/PHY 配置和状态信息,用于通知接收方其支持的 MAU 类型和当前使用的配置信息。

PNIO TLV
PNIO (OUI = 00:0E:CF) 通过扩展 LLDP 可以向接收方通知其延时测量值、端口状态、MRP 连接状态、设备 MAC 地址等信息。

End of LLDPDU TLV
在 LLDPDU 的最后都需要包含一个 End of LLDPDU TLV, 用于指示接收方。

PROFINET 设备如何存储 LLDP 信息
支持 LLDP 的设备,会定期对外发送 LLDP 数据帧,也会实时更新其每个端口接收到的 LLDP 数据帧并进行解析。通过这种方式,LLDP 设备能够获悉其每个端口连接的邻居设备的详细信息,并会将这些信息保存到设备内部。
PROFINET Conformance Class – A 等级的设备会将这些信息保存到 PDev 数据库中.
PROFINET Conformance Class – B 等级的设备也会向这些数据保存到 LLDP-MIB (Management Information Base) 数据库中。
PROFINET 网络调试和诊断工具,如西门子公司的 PRONETA 软件,可以通过扫描网络上所有设备,并读取设备上保存的 LLDP 信息,生成网络连接表,也可以通过可视化的方式生成网络拓扑图。
-
PDev 中保存的信息可以通过 PROFINET 非周期读取索引 PDPortDataReal
-
LLDP-MIB 中的信息可以通过标准的 SNMP 协议读取(需要设备是 PROFINET Conformance Class – B 等级)
-
或者使用 PROFINET DCP 读取命令读取 StationNameAlias
示例
上图所示的连接通过读取网络上所有设备保存的 LLDP 信息,可以生成如下表所示的网络设备连接表,用于图形化的显示
💡 Tips
自 2022 年 9 月起,Ethernet/IP 设备如需一致性认证也需要支持 LLDP 协议