首页 > 代码库 > ECC协议栈学习总结

ECC协议栈学习总结

           

ECC协议栈学习总结

  

目录

1 前言   3

2 ECC通讯原理... 3

2.1  ECC通讯模型... 3

2.2  ECC通讯实现... 5

2.2.1 物理层实现......................................................................................................5

2.2.2 数据链路层实现...............................................................................................6

2.2.3 网络层实现......................................................................................................6

2.2.4 应用层实现......................................................................................................6

3 ECC售后文档学习... 9

3.1ECC售后文档学习中遇到的问题及其分析.................................................................9

3.2ECC售后文档学习建议.............................................................................................11

4 参考资料... 12

 


1 前言

前一段时间在分析老挝LTC传输项目设备监控方案的时候看了不少ECC售后文档,但这些文档讲的基本上是应用方面的问题,较少涉及底层实现,对一些问题还是没能具体阐述,所以看完后还是有些疑惑。为较系统理解ECC协议栈,于是网上查找了一些资料,进行分析总结。本文主要是对ECC协议栈的一些底层实现进行分析。

2      ECC通讯原理

2.1 ECC通讯模型

SDH网络中的通信主要有两种方式:第一种为SDH网元之间的ECC通信方式;第二种为网管系统(NMS)与SDH网元之间的以太网通信方式。ECC通信和以太网通信结合起来共同组成SDH管理网络。

图2-1  SDH网络中的通信方式

而SDH网元之间OAM信息的传递又可分为光纤连接方式(DCC通道)和网线连接方式(以太网),光纤连接方式在实际组网中最常见,网线连接方式主要用于拓展子架与主子架之间的通讯。

为了在SDH的网元之间传递OAM信息,SDH网络定义了基于OSI七层协议簇的ECC协议栈来满足应用需要,在ITU-T G.784中对协议模型进行了规定,但因为OSI协议栈在业界并不流行,所以很少有厂家的ECC协议栈按照G.784建议的这些OSI标准协议来做,而是自己定义了私有协议,其中,中兴公司开发的ECC协议栈是基于IP协议栈的,而华为开发的ECC协议栈是以DCC为物理层,自行设计实现数据链路层和网络层的三层协议栈。

 

 

 

 

 

 

STACK B : NE  (DCC)

 

STACK C : NE  (LAN)

应用层

TL1 / CMISE / ROSE / ACSE

TL1 / CMISE / ROSE / ACSE

表述层

ASN.1 / BER

ASN.1 / BER

会话层

Kernel / Full Duplex

Kernel / Full Duplex

传输层

TP4

TP4

网络层

CLNP

CLNP

ES-IS

IS-IS

ES-IS

IS-IS

数据链路层

LAPD

LLC1

CSMA/CD

物理层

DCC

DCC

 

图2-2  G.784定义的ECC协议栈

通信服务

 

通信服务

 

传输层 L4

 

传输层 L4

网络层 NET

维护整个网元路由表路由算法、路由广播

网络层 NET

信息管理

媒体接入层 MAC

维护网元相邻路由表定时检测相邻网元路由

媒体接入层 MAC

 

LAN

DCC

 

LAN

DCC

→物理接入部分

图2-3 华为ECC通信模块总体结构

 

 

 

应用层

SNMP

HTTP, CORBA, FTP, TL1, Telnet, SNTP, TL1 over Telnet

传输层

UDP

TCP

网络层

IP / IPCP / OSPF / ICMP / ARP

数据链路层

PPP over HDLC

802.2, 802.3

物理层

SDCC / LDCC

Ethernet

图2-4  中兴ECC协议栈(IP over DCC结构)

 

基于IP和基于OSI协议栈的ECC主要的不同在于二、三、四层,而物理层都使用同样的DCC通道。以OSI协议栈来构建SDH管理网并不被业界认同,一方面是OSI协议栈自身的弊端,另一方面基于SDH的新技术不断产生,如MSTP技术发展迅速,光网络向智能光网络ASON/ASTN发展已经成为趋势,而这些新技术的发展很大程度上要依赖IP技术,因此SDH网管平台使用IP技术构建也被人们认为是必然发展方向。

2.2 ECC通讯实现

2.2.1   物理层实现

在物理层有两种接口:DCC和以太网接口。

(1)      以太网接口,它是GNE和NMS的接口,在该接口上应该遵从Q3接口标准,可以看出该协议栈选中了Q.811中使用TCP/IP作为底层的相应可选规定,实际上这个接口只需要符合IEEE802.3要求即可

(2)      DCC接口,它是用来连接NE和NE, DCC是SDH帧中段开销(SOH)的字节组成,它分为两种SectionDCC (SDCC)和Line DCC(LDCC)。其中Section DCC由再生段的D1到D3组成,速率192Kbits/S(在STM一帧中一个字节固定64Kbits/S); Line DCC由复用段D4到D12组成,速率576 Kbits/S,在必要时两种通道可以合并以得到更高的速率。

SDH管理网传送给网元的管理信息的最终承载者是STM帧里的开销字节中的D字节。这些字节可以组合在一起形成一个逻辑上的通道,我们叫这种通道为DCC通道。DCC通道在光纤中传输时被放在STM-N帧的D字节里,但是当光纤接入NE的线路板(即光接口板)后,这些D字节就要被提取出来。对各网元,ECC模块涉及两块单板,一块是NCP板,一块是光板,NCP板与光板之间采用总线或点对点方式实现连接,NCP板的网管信息、链路层协议维护信息及OSPF路由协议信息,都要通过光板实现存储转发,由FPGA将这些信息嵌入到SDH帧中的D字节中。

图2-5  中兴ECC通讯模块体系结构

 

2.2.2   数据链路层实现

由于物理层有两种不同接口,所以数据链路层也相应的有两种。在以太网接口上遵从的是IEEE 802.3和802.2的有关规定,由于该接口只是负责GNE和DCN的通信,并不需要二层交换的功能,所以可以不加载802.1有关VLAN和安全接入的功能,认证的功能由上层完成,当然ARP是必须的。在DCC上运行的链路层协议是PPP,用PPP好处在于封装格式简单实现容易,可以加快处理速度并且减少系统负担。但由于PPP没有帧定界的功能,所以需要把PPP帧封装到类HDLC格式中(RFC1662 )。其实使用PPP来封装也是参考Packet Over SDH (RFC 1619,ITU-T G 707)的结果,对于SDH来说,光网络的特点就是NE之间的链路都是点对点的,利用PPP在这里就充分发挥了它的特点。

PPP协议:点对点的链路层协议,实现与相邻点实现参数的协商(LCP协议实现)和链路质量控制等功能;光板IP地址的分配(IPCP协议实现)。

注:可能有人对PPP协议还没什么概念,下面我就举个例子来简单介绍下:

假设有R0与R1两个路由器,相连接口S1/0的ip地址分别为10.1.2.1与10.1.1.1,但如果在链路层不封装PPP等协议,看看它们的路由表,如图2-7,你会发现,R0并没有到R1 S1/0口的路由。在链路层封装PPP协议后再看观察路由表,如图2-8,就会发现已经有到R1 S1/0口的

图2-6  GNS3下模拟路由器实验拓扑

路由了。对网元而言,只有封装了PPP协议,各光口才能知道与它相连的其他网元光口的IP地址,然后将其加进路由表。这样网元就有了到与它直接相连的各网元的路由。

图2-7  数据链路层未封装PPP协议实验结果图

图2-8  数据链路层封装PPP协议后实验结果图

2.2.3  网络层实现

各网元有了到与它直接相连的网元的路由,但没有到非直连的网元的路由信息,而网管信息通过网关网元要转发到目的网元则需要目的网元的路由信息,那怎么建立全网的路由信息呢?

中兴开发的ECC路由协议栈的三层和四层采用的是标准的TCP/IP协议,支持IP ,ICMP, UDP 和TCP 。特别说明的是路由协议用OSPF来和IP配套。有了OSPF动态路由协议,各网元的路由信息变自动建立起来。

网络层的路由表在开始时为空,当网元的数据链路层建立了连接表并通知了网络层之后,网元的网络层就会根据数据链路层连接表的内容建立初始的网络层路由表,即初始路由表中存放的是该网元与相邻的网元的路由信息。采用OSPF动态路由协议后,各网元之间会互相交换其路由表,建立全网的路由信息。

当然,因为路由表是存放于NCP中的,OSPF协议也是运行于NCP板的CPU中的,在大规模网络中使用OSPF路由协议,链路状态数据库比较庞大,会占用很大的存储空间,而且在执行路由算法时,要耗费较长的时间和很大的CPU资源,受NCP内存等硬件资源限制,路由表的大小也就是子网的网元数量必须受到控制,否则整个子网将处于“动荡”的不可用的状态。也就是说如果子网内网元数超过一定限制就必须分域。为什么分域了就可以解决这个问题呢?那还得从OSPF协议说起。

OSPF协议允许网络方案设计人员根据需要把路由器(网元)放在不同的区域(Area)中,两个不同的区域通过区域边界路由器(边界网元)相连。在区域内部的路由信息同步,采取的方法与上文提到的方法相同。在两个不同区域之间的路由信息传递,由区域边界路由器(边界网元)完成。此时,一个区域内的OSPF路由器(网元)只保留本区域内的链路状态信息,没有其他区域的链路状态信息。这样,在两个区域之间减小了链路状态数据库,降低了生成数算法的计算量。同时,当一个区域中的拓扑结构发生变化时,其他区域中的路由器(网元)不需要重新进行计算。OSPF协议中的区域划分机制,有效地解决了OSPF在大规模网络中应用时产生的问题。

2.2.4  应用层实现

在应用层,大多网管协议都可以运行在IP协议栈之上,所以应用层可以灵活选取:SNMP 、HTTP、CORBA, FTP、TL1, Telnet , SNTP、TL1 over Telnet等。我们开局与维护的时候经常用到的Telnet,Ftp就属于此层。

另外,我在物理层实现那节中提到的除DCC通道外,还有以太网接口这个物理实现。说到应用层应用,其物理实现主要还是以太网接入方式,即网管(NMS)与网元的通讯都要通过与网关网元的以太网连接来实现。

关于中兴ECC协议栈应用层的实现方式,我只查到中兴在2003年的时候起草过通讯行业标准《基于IP技术的SDH ECC通信协议技术规范》草案,但好像没了后文,所以也就无法再细究。但华为ECC协议栈在应用层的实现方式,网上还是有相关资料的。不过,在应用层各厂家的实现方式应该大同小异,下面就简单介绍下华为的实现方式。

网管接入网元的物理通道采用的是LAN,主要采用TCP/IP协议中的Socket通信方式。在建立接入连接时,网元作为Server,网元通过约定的端口等待网管发出建立连接请求。需要新建连接时,网管作为Client,向网元发送一个连接请求。网元监听到连接请求后接收下该连接请求,并对该请求回发响应。从而根据TCP/IP协议建立一个网管与网元之间的连接通道。在建立连接通道的同时给该通道分配一个端口号,每个连接通道所拥有的通道号是独立的。具体的方式可以用下图来表示:

 

图2-9 华为LAN接入连接过程图

对于该连接的监视是通过环回帧方式,即网管定时向网元发送一个检测帧,网元将该帧环回给网管,由网管检测。若在约定时间内检测不到,则说明该连接已中断。

 

3      ECC售后文档学习

3.1  ECC售后文档学习中遇到的问题及其分析

 (1) 网元间通过光纤连接时IP地址不能在同一网段,而使用网线连接时IP地址必须属于同一网段,这是为什么呢?

先说第一个问题,举个例子,如果网元A(IP为192.1.15.18)未和任何网元连接,你Telnet到NCP后查看它的路由表会发现有此类路由:

Destination            Gateway              Flags         Interface

127.0.0.1              127.0.0.1              U              37  ##本地环回路由##

192.1.15.0            192.1.15.18             U               1   ##QX口路由##

可以看出到192.1.15.0(与网元同一网段)这个网段需要通过192.1.15.18。

如果网元A与处于同一网段的网元B(假设IP为192.1.15.200)有光连接,确实它也能学习到此路由,但在所有的路由中,静态路由的优先级是最高的,但动态路由与静态路由发生冲突时,要以静态路由为准。也就是说,当一个分组进行寻径时,首先查找静态路由,如果查到则根据相应的静态路由转发分组;否则再查找动态路由。

很不幸,与本网元同一网段的路由已经被开发人员定死了,相当于已经给它添加了一条静态路由。那么这条路由有什么用呢?开发人员为什么要“提前预订”呢?我们知道,192.1.15.18这是NCP的IP地址,网管接入要通过NCP的Qx口,同时网关也要设为其IP地址。假设网管电脑IP地址为192.1.15.1,除了网元A(同一网段)可以直接访问195.1.15.1外其他非直连网元(正确配置时为不同网段)要与网管通讯都要通过网关网元A,那网元A上肯定要有一条到网管的路由,网关就是网元A与网管的接口,NCP的Qx口,即192.1.15.18。

然后第二个问题,两网元通过网线连接(拓展子架与主子架之间就是这种连接方式)为什么必须在同一网段呢?

我在数据链路层实验那节讲过,IP over DCC(通过光纤连接)采用PPP协议来做为2层封装,而以太网接入,数据链路层采用的是IEEE 802.2/802.3协议。

这里我们假设,网元A的ip地址为192.1.15.18,网元B的ip地址为192.1.16.18,它们之间通过Qx口用网线连接起来,但我们知道在以太网中,不同ip网段之间的主机不通过路由器而直接相连是无法通讯的。

(2) 不同域的网元直接相连能否通讯?

由于我们ECC路由协议采用的是OSPF协议,非骨干区域的ECC不能直接互通,必须通过骨干区域。但我们二层封装的是PPP协议,肯定有直连路由,不是可以到对端网元么?

下面做个实验,网元A 197.1.1.18,网元B 195.1.31.18, 两网元直接光纤连接,这时观察它的路由表,如下图:

图3-1  非骨干域网元之间直连实验图

你会发现,确实有直连路由,但没有到对端网元NCP(.18)的路由,只有到对端直连光口的路由。因为没有到对端网元NCP的路由,也就无法完成路由表的交换工作。对端直连光口可并没运行OSPF协议,也没路由表,只是物理接口。

(3)以太网中不同网段无法ping通? 这是为什么呢?

在广播型广域链路(PPP、HDLC、FR broadcast)上不同网段的设备也能通信!因为是广播的,所以不在一个网段也能通信。所以呢,就引出了这个有意思的话题!以太网也是广播的,为什么不在一个网段就能通信。

下面是做的一个小实验:

>1.两台pc (A,B)用网线直接连接,且配同一网段,可ping通。

>2.修改一台PC(A)的ip在不同网段,ping不通。
用抓包工具wireshark在A上抓包,没有任何报文。也就是此时PC发不出arp请求。A与B的mac地址表均为空(arp -a)

>3.把A的网关设为B。再抓包,有arp请求,并且可以收到arp应答,发出ping包,收不到回包。但此时,A与B均已获得对方的mac地址。

>4.再把B的网关设为A,此时可以ping通。

 

为什么在步骤2中,A发不出arp请求呢?查了RFC文档,得知由于ARP协议在工作的时候会进行检验!如果查询的3层地址和本地地址不在同一网段,又没有指定缺省网关的话。就不会工作!如果有网关的话,就会向网关转发,如果arp本地缓存中没有网关的mac地址,则会发arp请求,与之相连的B收到请求后发现与其IP一致,自然会响应,ping数据包有了目的mac地址自然能通。

所以,在以太网中,只要配置了相应路由,或配置有相应网关,不同网段也是能通讯的。

当然,我们网管接网关网元的时候,还是IP得配在一个网段,因为我们网管电脑的网关是可以设置,但网关网元的网关你能设置不?!

 

3.2  ECC售后文档学习建议

以我的习惯,最好从原理开始,从底层往上学,底层清楚了,应用方面的问题就简单多了。不过售后文档一般比较少讲到底层的知识,应用方面的比较多,当你对应用层面上的东西有所疑惑话,建议开始往较底层学习。

ECC学习文档推荐:

(1)       NCP路由表的组成,可参看《浅谈路由》中关于路由表构成部分

(2)       ECC路由建立过程与路由保护,可参看《ECC专题-路由结构与组网规范(部门版)》

(3)       网元网络地址定义,区域划分,以及ECC常用调试,维护命令方面,可参看《ECC协议栈维护使用手册》

(4)       如果想了解光传输网DCN模型,那《传输网管DCN优化原则研究(中兴)》肯定是最好的选择,文档质量很高。

 

4    参考资料

ITU-T G.784 RECOMMENDATION, The Point-to-Point Protocol (RFC1661), PPP in HDLC-like Framing(RFC1662), 《浅谈路由》, 《ECC协议栈维护使用手册》, 《同步数字体系(SDH)管理网管理功能、ECC和Q3接口协议栈规范》,《OSPF协议原理》, 《基于IP的SDH管理网协议栈物理层_数据链路层关键技术分析》

 

ECC协议栈学习总结