周进松,李正宇,吴小艨
(中国电子科技集团公司第三十研究所,四川 成都 610041)
基于HDLC协议的通信通道设计
周进松,李正宇,吴小艨
(中国电子科技集团公司第三十研究所,四川 成都 610041)
为对在E1信道上采用HDLC(高级数据链路控制)帧格式传输的数据进行有效控制,信道两端的管理设备需要进行数据通信。通信通道均通过HDLC链路实现,不额外增加通信信道。目前的通信通道,大多通过解析HDLC帧,在HDLC净荷中加入通信数据的方法来实现。为降低设计难度,通过分析HDLC链路的特点,提出用通信数据替换标志字段的方法建立通信通道。这种方法不解析HDLC帧、不增加净荷开销。与目前的方法相比更优,能降低设计难度,同时降低对信道的干扰,并便于后期维护。
HDLC;管理;标志字段;通信通道;解析
HDLC是一个在同步网上传输数据、面向比特的数据链路控制协议,由国际标准化组织(ISO)提出。在通信领域中,HDLC协议是应用最广泛的协议之一[1],其工作方式可以支持半双工、全双工传送,支持点到点、多点结构,支持交换型、非交换型信道。
近年,在电信网中,随着SDH(同步数字体系)系统的大量普及,PDH(准同步数字体系)系统开始逐渐退役,为充分利用这些已有资源,通过PDH系统的E1资源来传输以太网业务成为广泛的应用[2]。该应用方式利用协议转换器将以太网数据进行HDLC协议封装,采用HDLC链路点到点的工作方式,为小型以太网交换提供服务。
根据使用需求,运营商在线路上增加管理设备,实现对传输数据的控制。管理设备的增加,要求对原线路的影响尽量小,且管理设备相互之间可以进行通信传输,以实现对线路数据的有效控制。本文即是根据这种需求,提出的一种在管理设备之间进行通信的方法。该方法为标志字段替代法,利用HDLC链路中标志字段的唯一性,通过替换,实现通信数据的交互,可满足在对线路影响很小的情况下进行管理设备通信的使用需求。
HDLC是面向位的链路控制规程,采用帧结构传输数据,HDLC的帧结构如图1所示[3]。
图1 HDLC帧结构
(1)标志(F):标志为01111110(7E)的比特模式,用以标志帧的起始和前一帧的终止。标志字段也可以作为帧与帧之间的填充字符。
(2)地址(A):每一接收端地址唯一,用于判断当前数据帧是否发给自己。
(3)控制(C):构成各种命令和响应,以便对链路进行监视和控制。HDLC帧中有信息帧、监督帧和无编号帧3种不同类型的帧[4]。
(4)信息(I):信息可以是任意的二进制比特串。比特串长度未作限定,其上限由通信缓冲器的容量决定,目前国际上用得较多的是1 000~2 000 bits。
(5)帧校验序列(FCS):帧校验序列可以使用16位CRC,对两个标志字段之间的整个帧的内容进行校验。
通过HDLC链路发送通信数据,现在普遍的做法是利用HDLC帧创建通信通道。即通过搜索或产生HDLC帧,将通信数据插入HDLC帧中发送,设计的基本流程如下:
发送端首先搜索并解析HDLC帧,然后将待发送的通信数据插入信息字段的特定位置,并重新进行校验和运算,形成新的HDLC帧发送(见图2);
接收端则在收到HDLC帧后,同样先进行解析,在预先设定的位置提取通信数据,然后进行校验和运算,恢复原HDLC帧(见图3)。
图2 向HDLC帧中插入通信数据
图3 从HDLC帧中提取通信数据
该方法的设计思路较简单,通信随时可以进行,通信完成后对原HDLC帧数据无损伤。但是该方法不仅收发端都需要对HDLC帧进行解析,校验值重新运算,而且HDLC帧的长度会随着通信数据的插入而发生改变,设计实现比较复杂。
本文提出创建通信通道的方法,为基于HDLC链路标志字段(7E)的替代方法。当管理设备有通信需求时,持续对标志字段进行搜索和定位,将通信数据通过替换特定标志字段的方式进行传输。本设计不仅不需要对HDLC帧进行解析,甚至数据长度也不发生改变,设计难度大为降低。
3.1标志字段的利用
HDLC链路要求所有的帧必须以字段“7E”标志开始和结束,所有帧中不能有“7E”出现。接收设备通过不断搜寻标志字段“7E”,实现帧同步,从而保证接收部分对后续字段的正确识别。另外,在帧与帧的空载期间,连续发送标志字段“7E”,用来作时间填充。如图4所示。
图4HDLC帧中标志字段的传输
在HDLC帧中,有可能产生与标志字段的码型相同的比特组合。为了防止这种情况产生,保证对数据的透明传输,采取了比特填充技术。当采用比特填充技术时,在数据位中如果有5个连续“1”,那么就在后面增加一个“0”[5];接收端则去除5个“1”以后的“0”,恢复原来的数据序列。
比特填充技术的采用排除了在HDLC帧中出现的“7E”的可能性,保证了“7E”只能在链路空闲时出现。由于“7E”的特殊性,因此通信通道利用替代“7E”的方式建立,在发送端用通信数据替代“7E”传输到对端,接收端根据“7E”提取通信数据,并插入“7E”恢复线路数据。具体为每连续3个“7E”,用通信数据替代中间的一个“7E”。采用该方法有以下一些好处:
(1)对链路同步影响小:替换后标志字段依旧保持较高比例,不会造成链路失步。
(2)通信数据容易判断:每两个“7E”中间仅1字节通信数据,与HDLC的帧结构差别大,易于识别。
(3)便于链路恢复:通信数据完成接收后,固定用“7E”替换,不需额外计算,而且数据长度未变,HDLC链路的恢复操作简单。
(4)对HDLC帧无影响:由于“7E”只在非帧时出现,因此通信数据也只会在非帧期间传递,不会对HDLC帧数据进行操作。
即使由于干扰等意外原因,通信数据未能被对端正确识别,对HDLC链路来说,也仅仅是在空闲时段产生的一些误码,对HDLC帧无影响。因此,标志字段替代方法对HDLC链路的代价,仅仅是由于通信数据的收发过程,需要对链路数据先进行缓存再处理,增加了链路时延。不过该部分时延对终端设备几乎无感,运营商对此完全可以接受。
3.2硬件设计
硬件设计,包括发送端和接收端两部分,分别进行处理。
发送端首先对线路中是否有连续的3个字符“7E”进行检测,即对线路中是否有字符串“7E-7E-7E”进行检测。一旦检测到,就将中间的一个“7E”进行标识,设计代码主要如下:
if ((cnt_7e == 0) && (bit24_temp[23:0] == 24'h7e7e7e))
begin
cnt_7e <= 1;
cnt_7e_ton <= 1;
end
else
begin
if (cnt_7e_ton == 1)
begin
if ((cnt_7e >= 1) && (8 >= cnt_7e))
begin
cnt_7e <= cnt_7e + 1;
flag <= 0;
end
else if ((cnt_7e >= 9) && (16 >= cnt_7e))
begin
cnt_7e <= cnt_7e + 1;
flag <= 1;
end
else if ((cnt_7e >= 17) && (24 >= cnt_7e))
begin
cnt_7e <= cnt_7e + 1;
flag <= 0;
end
else
begin
flag <= 0;
cnt_7e <= 0;
cnt_7e_ton <= 0;
end
end
当发送端在有数据待发送时,即在标识位置用待发送数据“X”对字符“7E”进行替代,设计代码主要如下:
if (flag_7e & flag_insert )
send_data <= insert_data;
else
send_data <= user_data;
整个通信数据的插入过程如图5所示。
图5 通信数据的插入
接收端对接收到的数据持续进行检测,每当检测到接收数据中存在字符串“7E-X-7E”时,一旦检测到,就将中间的一个“X”进行标识,设计代码如下。
if ((cnt_7e == 0) &&(bit24_temp[23:16] == 8'h7e) && (bit24_temp[7:0] == 8'h7e))
begin
cnt_7e <= 1;
cnt_7e_ton <= 1;
end
else
begin
if (cnt_7e_ton == 1)
begin
if ((cnt_7e >= 1) && (8 >= cnt_7e))
begin
cnt_7e <= cnt_7e + 1;
flag <= 0;
end
else if ((cnt_7e >= 9) && (16 >= cnt_7e))
begin
cnt_7e <= cnt_7e + 1;
flag <= 1;
end
else if ((cnt_7e >= 17) && (24 >= cnt_7e))
begin
cnt_7e <= cnt_7e + 1;
flag <= 0;
end
else
begin
flag <= 0;
cnt_7e <= 0;
cnt_7e_ton <= 0;
end
end
即将“X”判为通信数据取出并放入缓存中。同时将“7E”插入,恢复HDLC链路数据,设计代码主要如下:
if (flag_7e & flag_insert )
begin
comm_buf[127:0] <= {comm_buf[126:0], din};
send_data <= insert_7e;
end
else
send_data <= din;
通信数据是否接收完成,由硬件通过对接收数据的帧结构解析,根据长度字段来判定数据是否接收完成。整个通信数据的接收过程如图6所示。
图6 通信数据的提取和HDLC帧恢复
3.3通信帧结构
为准确进行数据的收发,通信数据也必须以成帧结构的形式进行传递,以明确每帧数据的开始和结束。
通信帧由帧头字段(F)、长度字段(L)、信息字段(I)、帧校验序列字段(FCS)、结束字段(E)等组成,帧结构定义如图7所示。
图7 通信帧结构
1)帧头字段(F)
由于“7E”的特殊性,在HDLC链路空闲时期,非“7E”码型的数据不会出现。在这种状态下,帧头字段的码型选择可较随意,只需避开“7E”码型即可。为保证数据接收的可靠性,帧头字段采取16 bit,用以标志通信数据帧的开始。
图8通信帧帧头字段的插入
2)长度字段(L)
通信帧的总长度,用于判定帧接收是否完成。
3)信息字段(I)
由于通信数据以8 bit为单位提取,因此信息字段需要是8 bit的倍数,不足需补充,倍数自定义。
4)帧校验序列字段(FCS)
帧校验方式本处选择普遍使用的16位CRC进行校验。
5)结束字段(E)
为保证通信数据接收的可靠性,定义结束字段,用以标志通信数据帧的结束。当接收通信数据的长度与长度字段一致时,对该通信数据进行判断,若与结束字段不一致,即判断本次通信失败。
4.1通信数据中有“7E”
由于“7E”用以标志帧的起始和前一帧的终止,若在帧数据中出现,将会破坏帧数据的接收,因此HDLC链路采取了比特填充技术来改变帧数据中出现的“7E”的码型,以避免“7E”的出现。
同样,当通信帧数据中有“7E”存在时,可能会形成“7E-7E-7E-7E-7E”的情况,此时接收端将无法对通信数据进行准确定位,造成通信失败。
由于通信数据的接收,通过判断线路中是否有字符串“7E-X-7E”来进行,即对接收的数据缓存中,固定以24 bit长度为标准进行比较。若采取HDLC链路的比特填充技术,数据长度将会变为25 bit,不仅给链路增加了额外的开销,而且使得设计难度加大。
因此,对通信数据中有“7E”的情况,没有采取比特填充技术进行破坏,而是通过硬件传输状态的判定,改变对通信数据的判断流程,达到准确接收“7E”的目的。
接收端在接收数据时,判定方式为每1 bit判断1次。只要判断到通信帧的帧头“F1F2”,便置起相应的标志。在标志置起期间,若线路中有字符串“7E-7E-7E”出现,通信处理流程将中间的一个“7E”判定为通信数据,提取到缓存中。同时对数据的接收改为每16 bit判断一次,以防止连续的“7E”出现。当线路中无“7E-7E-7E”出现时,恢复为每1 bit判断1次。通信数据接收完成后,将标志清零,此时线路中的字符串“7E-7E-7E”将不再处理。
4.2满带宽
HDLC链路中,“7E”用以标志帧的起始和前一帧的终止。在业务量小时,链路中有大量“7E”存在,对通信通道不造成任何障碍。但是当满带宽传数据时,会出现HDLC帧连续发送的情况,链路中将没有足够的字符串“7E-7E-7E”出现,即无法建立通信通道。
针对该情况,设计了两种工作模式来进行处理,由使用人员根据具体情况来配置。
1)等待模式
顾名思义,等待模式就是等待满带宽传输状态停止,字符串“7E-7E-7E”出现。在此期间,即使有字符串“7E-7E-7E”的出现,也不能保证能长期稳定的出现,因此,通信设计流程必须具备超时和重传机制。
在通信遇到传输无法启动、启动后超时无法完成传输或传输完成后超时无法收到响应等情况时,控制软件将自动触发重传机制,直至通信成功。该模式适用于对实时性要求不高的数据传递。
2)强插模式
若通信数据的实时性要求高,也可不等待满带宽状态的停止就传递数据。强插模式即有通信数据待传时,若在设定阀值内字符串“7E-7E-7E”不能出现时,即将字符串“7E-7E-7E”强行插入用户数据中,为通信通道的建立创造条件。
强插模式会对正在传输的数据造成破坏,因此要求数据传输量要少,以对正常传输的HDLC链路的破坏尽量小,非紧急情况不使用。
根据上述方法,设计实现相应的功能,并搭建相应的实验环境进行测试。测试环境如图9所示,由两台计算机通过协议转换器,在PDH系统中进行通信传输测试。
图9 实验环境
测试通过ping包和飞秋传输的方式进行,测试结果如图10和图11所示。
图10 ping包测试结果
图11 飞秋传输文件测试结果
将测试结果与没加实验设备的测试结果进行比较后,二者几无差别,实验结果证明了设计方法的可行性和对用户的影响小,可满足管理设备在HDLC设备上的通信使用需求。
本文设计的标志字段替代方法,针对采用HDLC链路点到点的使用模式,通过E1信道和传输协议转换器进行通信的信道管理设备。通过本设计,在已有帧数据传输的HDLC链路通道上,成功开辟了一条新的通信通道,使管理设备能够在对链路影响较小的情况下完成通信数据交互。目前该设计
方法已成功应用到产品中,在大量用户中使用稳定可靠,收到了满意的效果。
由于本文设计主要面对通信数据量小,占用信道时间短,对通信的实时性要求不高,且通信设备需为点对点成对使用的情况。因此在使用方式上有一定的限制,我们下一步的研究方向将改进为通信设备为点对多点情况使用时,如何在不增加或少量增加开销的情况下,通过HDLC链路完成通信数据的传递。
[1]张文博,左勇,徐浩然等.支持HDLC协议的紫外通信系统设计[J].光通信技术, 2012(09):53-56.ZHANG Wen-bo,ZUO Yong,XU Hao-ran,et al. Design of HDLC-Enabled Ultraviolet Communication System[J].Optical Communications Technology,2012(09):53-56.
[2]刘宇,张斌,徐东明.符合中国移动标准协议转换器中的HDLC协议的FPGA设计与实现[J].电子产品世界, 2011(06):58-60.
LIU Yu,ZHANG Bin and XU Dong-ming. FPGA Design and Implementation of HDLC Protocol for China Mobile Standard Protocol Converter[J].Electronic Engineering & Product World, 2011(06):58-60.
[3]王雅荣,鲍民权,邱智亮.HDLC协议控制器IP核的设计与实现[J].电子技术应用, 2007(02):33-35.WANG Ya-rong,BAO Min-quan and QIU Zhi-liang.Design and Implementation of HDLC Protocol Controller IP Core[J].Application of Electronic Technique,2007(02):33-35.
[4]彭圻平,胡国庆,王立莹.基于FPGA的HDLC规程模块实现[J].计算机与网络, 2013(10):64-67.
PENG Qi-ping,HU Guo-qing and WANG Li-yingl. Implementation of HDLC Procedures Module based on FPGA[J].Computer & Network, 2013(10):64-67.
[5]高希权.异步传输方式的HDLC协议的实现[J].通信技术, 2008,41(11):78-90.
GAO Xi-quan. Implementation of HDLC based on the Asynchronous Transmission Mode[J]. Communications Technology, 2008,41(11):78-90.
周进松(1976—),男,工程师,主要研究方向为通信网络;
李正宇(1981—),男,工程师,主要研究方向为通信网络;
吴小艨(1971—),女,高级工程师,主要研究方向为通信网络。
Communication Channel based on HDLC Protocol
ZHOU Jin-song, LI Zheng-yu, WU Xiao-meng
(No.30 Institute of CETC, Chengdu Sichuan 610041, China)
In order to effectively control the transmitted data on E1 channel in HDLC(High-level Data Link Control) frame format, data communication is required of between the channel management equipment at both ends. Communication channels are all realized by HDLC link, without additional channels. Current communication channels are mostly realized by parsing HDLC frame and adding communication data to the HDLC payload. For reducing the design difficulty and based on the characteristics of HDLC link, a method for constructing communication channel by replacing flag filed with communication data is proposed. This method parses no HDLC frame, and has no increase of payload overhead. Compared with the current method, the proposed method is fairly better in reducing design difficulty and channel interference, and also enjoys convenient later maintenance.
HDLC;management;flag field;communication channel;parse
10.3969/j.issn.1002-0802.2016.03.022
2015-10-02;
2016-01-16Received date:2015-10-02;Revised date:2016-01-16
TP393
A
1002-0802(2016)03-0368-06