您现在的位置:首页 > 技术服务 > 技术资料

同步HDLC-UDP协议转换应用


1.  概述


本文以亚册SDLC-ETH协议转换器为例,描述HDLC、UDP协议转换应用。

SDLC-ETH提供2、4路高速多协议同异步串口,1路10/100/1000M自适应以太网口,实现串口与以太网之间的协议转换。

 

2.  UDP基础


2.1  UDP Client & Server

不同于TCP协议,UDP协议不是以Client/Server模式工作,也没有Client端、Server端的说法。

UDP是一种无连接的协议,当HDLC协议转换器要发送UDP报文的时候,只需要知道对方计算机的IP地址和端口号就可以发送数据。

但是在工作中,为了便于理解和说明,我们往往把UDP接收方称为UDP Server,发送方称为UDP Client。按照这个说法,HDLC协议转换器充当了UDP Client的角色,计算机或服务器充当了UDP Server的角色。

作为UDP Server,并不需要知道Client的地址、甚至端口。

UDP Client必须配置UDP Server的地址或端口,即目的IP地址、目的UDP端口。

2.2  UDP报文结构

UDP报文由IP包承载,用户关心的是应用数据。

IP首部

UDP首部

应用数据

20~60字节

8字节

可变长

 

 

2.3 单播、广播与组播


2.3.1 单播

当目的IP地址为单播地址时,UDP数据采用点到点的方式传输,即只有IP地址与目的IP相符的计算机才能够收到数据。

UDP单播的优点:

●  可以跨越路由器和网关传送数据

●  非目标计算机收不到数据

单播的缺点是无法实现点到多点的数据传输。

 

2.4 广播

当目的IP地址为255.255.255.255,或者为所在网段的子网广播地址时(如192.168.1.255),本广播域内的所有设备,均能够收到协议转换器发出的UDP报文。

广播的优点:

●  是以最低的开销,实现一对多的数据传输

●  当目标计算机的IP地址调整修改时,协议转换器的目的IP地址一般不需要重新配置

 

UDP广播的缺点:

●  非目标计算机也能收到UDP报文

●  UDP报文不能跨越网段(路由器)传输。

 

2.5 组播

如果目的IP为D类地址,即224.0.0.0至239.255.255.255之间的IP地址,加入该组播地址的计算机能够收到数据,能够比较好的实现一对多的传输。

除非经过特别的设置,组播同样不同跨越路由器传输。



3.  HDLC帧结构

HDLC帧结构如下表所示,包括地址字段、控制字段、信息字段及CRC校验字段。

一般在行业通信应用中,HDLC基本用于点-点的透明传输,用户数据往往占用了地址字段、控制字段。

开始标志

Opening Flag

地址字段

Address Field

控制字段

Control Field

信息字段

Information Field

帧校验序列

FCS Field

结束标志

Closing Flag

0x7E

1字节

1字节

可变长

CRC 2字节

0x7E

0x7E

用户数据

CRC 2字节

0x7E


4.  HDLC转UDP


4.1 应用框图

HDLC转UDP功能示意图如下,SDLC-ETH协议转换器通过同步串行接口,接收来自其他设备的HDLC帧,将其转换为UDP报文,通过以太网发送给计算机或服务器。



4.2 协议转换

为了确保用户数据的完整性,SDLC-ETH协议转换器,把完整的HDLC帧置于UDP应用数据中,转发给UDP Server。


4.3 发送UDP报文


4.3.1  UDP单播发送

SDLC-ETH协议转换器,能够提供多个转发项,把一个串口的数据转发至多个目的,从而实现一对多的传输。

SDLC-ETH单播配置示例如下,该配置能够把源自串口S1的数据转发至4个不同计算机:

UDP Server编程提示:

●  绑定目的UDP端口到接收以太网口

 

4.3.2   UDP广播发送

亚册SDLC-ETH协议转换器设备的广播配置示例如下:

UDP Server编程提示:

●  绑定目的UDP端口到接收以太网口

●  使能UDP广播接收选项

 

4.3.3  UDP组播发送

亚册SDLC-ETH协议转换器设备的组播配置示例如下:

UDP Server编程提示:

●  绑定目的UDP端口到接收以太网口

●  启动接收时,加入到组播地址对应的group

●  退出接收时,退出组播地址对应的group

 

4.4 UDP Server如何识别源串口

在很多应用中,例如空管自动化(ATC)应用,需要把源自多个不同串口的HDLC帧,转发给一台服务器或计算机,进行统一处理。

在这种情况下,需要有一种策略,让计算机能够知道所收的UDP报文,源自哪个串口。

 

4.4.1  根据目的UDP端口区分源串口

如下图所示,为每个串口设置不同的转发目的UDP端口。UDP Server计算机在不同的UDP端口接收数据,在8001端口所收报文来自串口S1,8004端口所收报文来自串口S4。



4.4.2  根据源UDP端口区分源串口

当采用目的UDP端口识别源串口方案的时候,UDP Server需要在多个UDP端口上监听和接收数据。当串口数量很多的时候,不仅UDP Server的端口资源占用过多,配置及编程的复杂度也提高不少。

为了简化UDP Server侧的实现,我们可以采用下例的配置,把每个转换都转发至UDP Server的同一端口。亚册HDLC协议转换器在转发时,会自动根据源串口调整UDP报文的源端口号,其中串口S1转发的UDP报文源端口为8001、串口S2的为8002,以下逐渐递增。

这样,UDP Server仅需在一个端口(下例为8000)监听和接收数据,然后根据源UDP端口区分源串口。如果存在多台协议转换器,UDP Server可以通过源IP区分源设备。



5.  UDP转HDLC


5.1 应用框图

借助于亚册HDLC协议转换器、网关产品,计算机或服务器能够实现同步HDLC串口发送功能。

典型的应用如下图所示。计算机作为UDP Client通过以太网接口发送UDP报文,协议转换器将收到的UDP报文转换为HDLC帧,然后从同步串口发送出去。

5.2  协议转换-CRC使能

最典型的UDP转HDLC应用如下图所示,协议转换器把UDP的应用数据装入HDLC帧的用户数据区,然后计算CRC并填充FCS字段,形成一个完整的HDLC帧进行发送。

为了减轻计算机的计算负荷、降低用户编程的复杂性,一般情况下,UDP报文中不包含HDLC的FCS字段,该字段由HDLC协议转换器计算填充。



5.3  协议转换-CRC关闭

在有些情况下,用户不需要协议转换器进行CRC计算,仅需要组装为HDLC帧发送。

此时,串口的HDLC配置,需要关闭CRC功能。



5.4  UDP报文接收


5.4.1  接收单播报文

如果计算机发出的UDP报文,目的地址为协议转换器的IP地址,则为单播传输方式。

单播实现点-点的数据传输,UDP报文能够跨越路由器。

配置示例如下,使能从UDP端口8001收到的报文,转发至串口S1:



5.4.2  接收广播报文

亚册HDLC协议转换器,不需要特别的配置,能够接收广播UDP报文。

 

5.4.3  接收组播报文

当计算机采用组播发送UDP报文时,协议转换器需要配置该组播地址,从而能加入该group,并收到相应的组播报文。

如下图所示,UDP接收的组播地址为224.10.10.10: