系列文章目录
GIGE 学习笔记
GIGE 协议摘录
文章目录
- 系列文章目录
- 引言
- 第 1 章 设备发现
- 1.1 链路选择
- 1.1.1 单链路配置
- 1.1.2 多链路配置
- 1.1.3 链路聚合组配置 LAG
- 1.2 IP配置
- 1.2.1 协议选择
- 1.2.2 静态IP
- 1.2.3 DHCP
- 1.2.4 链接本地地址 LLA
- 1.3 设备枚举
- 1.3.1 GVCP设备发现
引言
GigE Vision 是一种通信接口标准,可用于各种网搭拓扑上的视觉软件与视频流设备间的交互。该标准是基于 UDP/IP 协议体系,并构成了 Gige Vision 协议(工作在应用层,包括 GVCP 和 GVSP 两个协议)。需要的设备包括 IP 网络上各种软硬件摄像机、处理器、路由器等。本说明中,设备指的是一个 GigE Vision 兼容的可控设备,而应用程序指运行在一台主机上的一个与 GigE Vision 兼容的控制程序。
本说明分三部分,即设备发现、GVCP 协议和引导寄存器,分别在对应的章节中介绍。
第 1 章 设备发现
PC 在接入设备时,需要一种机制发现设备,即链路选择、IP 地址配置、设备枚举。
一个设备有一个或多个网络接口,可将其连接到该网络。第一步是让设备确定哪些链接是活动的,哪些不是。根据IEEE 802.3所定义的以太网自动协商过程,然后处理两个合作伙伴之间的链路速度协商。
第二步是IP配置,它使用了标准的IP协议。它是由该设备启动的。但其目标是为该设备分配一个唯一的IP地址。GigE视觉设备必须支持动态主机配置协议(DHCP)和链路本地地址(LLA)。GigE视觉设备可能支持静态IP。静态IP定义为持续运行整个电源循环或重置的静态IP地址。它被保存在设备中的非易失性存储器中。
第三步,设备枚举,由应用程序启动,以收集关于网络上设备存在的信息。如果应用程序不知道设备的IP地址,则可以使用UDP广播命令在应用程序的子网上实现。如果客户端的IP地址已知,则可以使用单播UDP来完成。此步骤可通过在设备和应用程序之间的GVCP消息交换来实现。这个答案包含了有关设备的各种信息,如制造商、设备型号等。
警告:此规范没有标识应用程序如何检索位于不同子网上的设备的IP地址。这可以通过DHCP服务器提供的信息、通过多铸造设备枚举请求或使用DNS来实现。该规范的未来版本可能会解决此主题。
1.1 链路选择
在进行IP配置之前,必须在设备和应用程序之间建立一个物理连接。GigE视觉设备可以使用多个物理链路来增加数据传输的总体可用带宽。当使用多个链路时,可以将它们组合在一起,数据包可以分布在它们之间,以优化带宽利用率。例如,通过结合两个1千兆位的以太网链路,一个设备可以提供高达2千兆位/秒的带宽。
本规范为一个设备提供了4种不同的物理链路配置:
- 单链路配置(SL配置)
- 多链接配置(ML配置)
- 静态链路聚合组配置(静态LAG配置,sLAG)
- 动态链接聚合组配置(动态LAG配置、dLAG)
前2个(SL和ML配置)被手动控制,每个网络接口都被单独配置。每个网络接口在启动时都要经过IP配置。因此,该设备最终会为每个物理网络接口提供一个不同的IP地址。
最后2个(静态LAG和动态LAG)使用IEEE 802.1AX规范来创建链路聚合组。在这些配置中,将创建单个虚拟链接。因此,应用程序对重新分组的物理接口只看到一个IP地址。物理链路的分组在MAC层上执行,并且对应用软件是透明的。
1.1.1 单链路配置
单链路配置(SL配置)是最简单的配置,因为只需要一个物理网络接口。因此,所有的控制通道、流通道和消息通道都被连接到这个接口上。
一个设备必须至少有一个网络接口。所有设备都必须支持SL配置。
1.1.2 多链路配置
当有多个网络接口可用时,一种选择是将它们配置为独立的链接,其中每个接口都配置为不同的IP地址。
- 设备最多支持4个不同的网络接口。
- 如果设备支持ML配置,则在使用ML配置时,每个网络接口必须独立执行IP配置过程。
1.1.3 链路聚合组配置 LAG
1.2 IP配置
本节列出了设备为获得有效IP地址时必须遵循的要求。
- 所有设备必须在通电、设备重置或以太网链路协商成功后执行IP配置。
- 设备必须支持以下IP配置协议:
- 动态主机配置协议(DHCP)
- 链接本地地址(LLA)
可选地,设备可以支持用户可配置的静态IP地址(持久性 IP)。该地址存储在设备非易失性存储器(引导寄存器)中,将用于设备通电或重置。当使用静态IP地址时,用户可以确保所选的IP地址不会在网络上造成任何冲突。
1.2.1 协议选择
在一个设备上,每个IP配置协议的执行顺序必须为:
- 静态IP(如果已得到支持和启用)
- DHCP(如果已启用)
- 链接-本地地址
设备的出厂默认值必须禁用静态IP并启用DHCP。LLA总是启用的。
ARM-Linux配置DHCP自动获取IP地址
Arm Linux配置DHCP
注意,GVCP还提供了一个命令 FORCEIP_CMD,将静态IP地址强制进入设备的接口#0( interface #0)。此地址覆盖使用本节中描述的普通IP配置选择获得的IP地址。但此地址在电源循环或设备重置时丢失。
为设备分配有效的IP地址后,必须将其相关信息复制到以下引导寄存器中:
- 当前的IP地址(网络接口#0的地址为0x0024)
- 当前子网掩码(网络接口#0的地址为0x0034)
- 当前默认网关(网络接口#0的地址为0x0044)
1.2.2 静态IP
如果一个设备支持持久性IP,那么它必须使用适当的引导寄存器来这样做,并且它必须提供一些非易失性内存来存储这些设置。
以下引导寄存器用于支持持久性IP:
- 网络接口功能(网络接口#0的地址0x0010):第31位表示此设备是否支持持久性IP(位设置)(已清除位)。
- 网络接口配置(网络接口#0的地址0x0014):第31位表示用户是否已激活持久IP(位设置)(位清除)。
- 持久IP地址(网络接口#0的地址为0x064C):这是用户分配的持久IP地址。它是由用户来确保这是一个有效的IP地址。
- 持久性子网掩码(网络接口#0的地址为0x065C):这是与持久性IP地址相关联的子网掩码。
- 持久性默认网关(网络接口#0的地址为0x066C):当激活持久性IP时,这为默认网关。
1.2.3 DHCP
一个 DHCP 可用标志存储在非易失内存中,如果没有储存介质,设备必须决定 DHCP 是否可用。设备应支持 DHCP 选项:子网掩码和路由选项。
DHCP 重传策略:使用 DHCP,设备发送一个 DHCPDISCOVER 消息,DHCP 服务器返回一个 DHCPOFFER 消息;设备发送一个 DHCPREQUEST 消息,服务器返回一个 DHCPACK 或 DHCPNAK 消息。若设备没有从服务器接收到任何回应,需要重传上述消息,至多允许 2 次重传(因为最坏情况下设备分别发送3 个上述消息)。如果没有 DHCP 服务器可用,设备在 DHCP 阶段一般会等待 12s。
DHCP 租借到期:设备停止使用 IP 地址,并重启 IP 配置循环。
1.2.4 链接本地地址 LLA
即私有 IP。IP 地址范围从 169.254.1.0 – 169.254.254.255。必须一直被激活。
1.3 设备枚举
在设备获得一个 IP 后,PC 端程序需要收集网络上所有设备相关信息,如设备 id、制造商、制造日期等。通过单播或组播 UDP 命令方式分别得到已知或未知 IP 的设备信息,并使用 GVCP 协议实现信息交互。
GigE Vision 提供了两种机制来枚举设备:
- GVCP 设备发现(必备)
- 多播DNS / DNS服务发现(可选)
1.3.1 GVCP设备发现
广播设备发现消息可以被应用程序用来查找驻留在同一子网上的设备。它可以使用目标IP地址为255.255.255.255的UDP广播消息来实现。这被RFC1122(对互联网主机的要求——通信层)定义为一个“有限的广播”。请注意,此消息将不会跨路由器发送。这就是为什么只有在同一子网上的设备才会接收到它。使用广播设备发现,不可能枚举与应用程序的网卡)不同的子网上的设备。
☆