GIGE 协议摘录 —— 设备发现(一)

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: GIGE 协议摘录 —— 设备发现(一)

GIGE 协议官网

引言

    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 种不同的物理链路配置:

  1. 单链路配置( SL 配置)
  2. 多链接配置(ML配置)
  3. 静态链路聚合组配置(静态LAG配置,sLAG)
  4. 动态链接聚合组配置(动态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 配置协议的执行顺序必须为:

  1. 静态 IP (如果已得到支持和启用)
  2. DHCP(如果已启用)
  3. 链接-本地地址

    设备的出厂默认值必须禁用静态 IP 并启用 DHCP 。 LLA 总是启用的。

ARM-Linux配置 DHCP 自动获取 IP 地址

Arm Linux配置 DHCP

    注意,GVCP还提供了一个命令 FORCEIP_CMD,将静态 IP 地址强制进入设备的接口 #0 ( interface #0 )。此地址覆盖使用本节中描述的普通 IP 配置选择获得的 IP 地址。但此地址在电源循环或设备重置时丢失。

    为设备分配有效的 IP 地址后,必须将其相关信息复制到以下引导寄存器中:

  1. 当前的 IP 地址(网络接口 #0 的地址为 0x0024 )
  2. 当前子网掩码(网络接口 #0 的地址为 0x0034 )
  3. 当前默认网关(网络接口 #0 的地址为 0x0044 )

1.2.2 静态 IP

    如果一个设备支持持久性 IP ,那么它必须使用适当的引导寄存器来这样做,并且它必须提供一些非易失性内存来存储这些设置。

    以下引导寄存器用于支持持久性 IP :

  1. 网络接口功能(网络接口 #0 的地址 0x0010 ):第31位表示此设备是否支持持久性 IP (位设置)(已清除位)。
  2. 网络接口配置(网络接口 #0 的地址 0x0014 ):第31位表示用户是否已激活持久 IP (位设置)(位清除)。
  3. 持久 IP 地址(网络接口 #0 的地址为 0x064C ):这是用户分配的持久 IP 地址。它是由用户来确保这是一个有效的 IP 地址。
  4. 持久性子网掩码(网络接口 #0 的地址为 0x065C ):这是与持久性 IP 地址相关联的子网掩码。
  5. 持久性默认网关(网络接口 #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 提供了两种机制来枚举设备:

  1. GVCP 设备发现(必备)
  2. 多播 DNS / DNS 服务发现(可选)

1.3.1 GVCP设备发现

广播设备发现

   广播设备发现消息可以被应用程序用来查找驻留在同一子网上的设备。它可以使用目标 IP 地址为 255.255.255.255 的 UDP 广播消息来实现。这被 RFC1122(对互联网主机的要求——通信层)定义为一个“有限的广播”。请注意,此消息将不会跨路由器发送。这就是为什么只有在同一子网上的设备才会接收到它。使用广播设备发现,不可能枚举与应用程序的网卡)不同的子网上的设备。

单播设备发现

    单播设备发现消息只能在应用程序事先知道设备 IP 地址时使用。通过直接向设备 IP 地址发送 UDP 包来实现。

将设备关联到枚举表

    为方便将一个设备关联到设备发现列表的对于条目中,设备外壳上应有一个序列号和 MAC 地址标签。

1.3.2 零配置发现

   在 GigEVision1.x 中, GVCP 仅被定义为侦听 UDP 端口 3956 。这一限制意味着,要在单个物理盒中有多个独立控制的设备,至少需要使用多个 IP 地址和 GVCP 堆栈。一个 GigE Vision 产品可以在一个以太网端口后面有几个虚拟 MAC 地址(就好像前面有一个交换机一样),但这种方法不能很好地扩展。


   GigEVision2.0 版本定义了设备如何使用多播 DNS 和 DNS-SD 的组合来进行广告和发现彼此,称为 Zeroconf 发现。除了提供一个更标准和更健壮的发现机制之外,还有一个特性是它本机地提供了对各种类型的多服务配置的支持。


   首先,这种机制将“主机”(通常是插入网络的单个硬件)的概念与“服务”(通过网络提供一些服务的某些应用程序的一个实例,如 HTTP 服务器)区分开来。单个主机可以有多个以太网接口,以及多个 IP 地址(以及 IPv4 和 IPv6 )。服务有三个主要组件:类型( GVCP 固定)、名称(标识特定实例)和服务正在运行的 UDP/TCP 端口号。每个服务还可以有一个唯一的 TXT 记录列表,其中可以包含关于特定实例的详细信息。这允许单个主机有 N 个 IP 接口和 M 个服务,而两者之间没有明确的关系。在 GigE Vision 中,每个服务实例对应一个 GVCP 控制通道。


  • 标准设备这是 SL 配置。它用单一的服务来宣传单个主机。配置:
  • 1 个以太网端口
  • 1 个 IP 地址
  • 1 个 GVCP 通道(在 GVCP 端口 3956 上)
  • 具有链路聚合的标准设备
    这声明单个服务(多个链接被视为一个逻辑链接)。
  • 多个以太网端口(通过链接聚合、sLAG 或 mLAG 绑定)
  • 1 个 IP 地址
  • 1 个 GVCP 通道(在 GVCP 端口 3956 上)
  • 具有多个链路的无链路聚合的标准设备

这可以发布具有多个 IP 地址和单个服务的单个主机,并映射到 ML 配置。然后,将由应用程序来决定连接到哪一个(它总是可以使用列出的第一个),并将实现定义哪些链接用于任何特定的流。这相当于 GigE Vision 1.x中的行为。

  • N 个以太网端口
  • N 个 IP 地址
  • 1 个 GVCP 通道(在 GVCP 端口 3956 上)
  • 具有单链路的多控制器装置
    这将使用多个 GVCP 服务来发布一个主机。每个服务都被视为一个共享相同物理接口的 SL 配置。
  • 1 个以太网端口
  • 1 个 IP 地址
  • 多个 GVCP 通道(使用不同的 UDP 端口,第一个通道必须使用 GVCP 端口 3956 )
  • 具有多个独立链路的多控制器设备

每个链接将发布一个不同的主机( mDNS 规范允许),每个主机将发布一个服务。通常每个链接只会响应查询匹配唯一的主机/服务名称对应的链接,所以主机链接的另一端只会看到他们连接的接口以及能够推断哪些服务是可以通过特定的链接(大多数 mDNS 响应客户端能够指示本地链接服务通过)。这将映射到 SL 配置,但对每个服务都有不同的物理接口。

  • N 个以太网端口
  • N 个 IP 地址
  • N 个 GVCP 通道(所有通道必须使用 GVCP 端口 3956 )
组播 DNS( mDNS )

   查询类型如 A/AAAA 记录( IPv4 / IPv6 名称解析),查询服务为 SRV 记录。在组播 DNS Internet 草案中,为 mDNS 分配的 IPv4 组播地址为 224.0.0.251,IPv6 链路本地组播地址为 FF02:FB,使用 UDP 端口 5353,仅用 UTF-8 编码资源记录名,采用 DNS 顶级域名 “.local.” 。设备主机名由设备制造商名+设备名+设备 MAC 地址(大写十六进制)+“.local.” 构成。

DNS 服务发现

   使用 DNS 来查找特定的服务名称。主要任务是列举服务名称列表,及将服务名翻译成相关联的 IP 地址。合法的服务名需为 “_gvcp._udp” 。若支持 DNS-SD,其 TXT 记录必须至少支持如下键:规范版本号、设备模式、MAC 地址、设备供应商名、模型名、具体制造商版本信息、具体制造商串名、序列号、自定义名和实例号。

1.4 设备添加和删除

    程序应能够动态响应设备网络拓扑结构变化(在网络上添加或删除一个设备)。

1.4.1 删除

    现场删除主要由控制协议处理,然后程序暂停其发送的消息命令,或者一个控制与接收程序可暂停不再到来的 GVSP 发送端视频流。

1.4.2 添加

有三种方法:

  1. 程序发送 DHCP 请求给服务器,后者做出响应并通知添加设备的程序,但要求客户端与服务器端联系密切:
  2. 程序定时发送一个 DISCOVERY 命令,但这会消耗一定的网络带宽,尤其是每次有很多设备需要回应,一种解决方案是提供给用户一个控件来刷新设备列表:
  3. 执行组播 DNS 或 DNS 服务发现来发现新设备。
    除了网络带宽要分配给新设备外,原来的设备不受新添加设备的影响。

目录
相关文章
|
3月前
|
监控
GIGE 协议摘录 —— GVCP 协议(二)(上)
GIGE 协议摘录 —— GVCP 协议(二)
101 2
|
3月前
|
XML 存储 网络安全
GIGE 协议摘录 —— GVCP 协议(二)(下)
GIGE 协议摘录 —— GVCP 协议(二)
62 3
|
3月前
|
传感器
GIGE 协议摘录 —— GVSP 协议(三)(上)
GIGE 协议摘录 —— GVSP 协议(三)
136 1
|
3月前
|
传感器 XML 编解码
GIGE 协议摘录 —— GVSP 协议(三)(中)
GIGE 协议摘录 —— GVSP 协议(三)
80 1
|
3月前
|
存储
GIGE 协议摘录 —— GVSP 协议(三)(下)
GIGE 协议摘录 —— GVSP 协议(三)
63 1
|
3月前
|
XML 传感器 测试技术
GIGE 协议摘录 —— 照相机的标准特征列表(五)
GIGE 协议摘录 —— 照相机的标准特征列表(五)
35 2
|
3月前
GIGE 协议摘录 —— 引导寄存器(四)(中)
GIGE 协议摘录 —— 引导寄存器(四)
40 1
|
3月前
|
存储 XML 前端开发
GIGE 协议摘录 —— 引导寄存器(四)(上)
GIGE 协议摘录 —— 引导寄存器(四)
40 1
|
3月前
GIGE 协议摘录 —— 引导寄存器(四)(下)
GIGE 协议摘录 —— 引导寄存器(四)
40 1
|
4月前
|
传感器 数据采集 监控
LabVIEW开发中的常见通讯协议详解
LabVIEW开发中的常见通讯协议详解
37 0