技术文件
技术文件名称:网络通信模块故障定位手册技术文件编号:
版本:V2.0
文件质量等级:
共24 页
(包括封面)
拟制
审核
会签
标准化
批准
深圳市中兴通讯股份有限公司
前言
SDH是一个将复接、线路传输及交换功能结合在一起的综合信息网,其丰富的功能和优越的性能只有通过先进的网管系统才能体现出来。SDH强大而灵活多变的组网能力,必然带来网络结构的复杂,作为网管信息通道的ECC协议栈自然成为SDH网管系统中最复杂也是最核心的技术。
在使用ECC协议栈时,通常会出现不通的现象,如何快捷方便的定位故障,我们提供了一系列的TELNET调试命令,可以很好的定位故障或有助于故障的分析。
?本手册的读者
主要是为采用ECC协议栈模块在嵌入式领域进行底层板级通讯应用程序开发的人员提供故障定位的方法。
?本手册的结构
本手册分为两大部分。
第一部分介绍了网络通信模块的体系结构。从这一部分大家可以对ECC 协议栈有一个整体了解,便于理解定位故障的手段。
第二部分详细介绍了ECC通信模块故障定位的常用命令。此部分主要涉及2500C设备的ECC调试命令,详细说明了各个命令的用法并举例说明,能够对开发人员正确快捷的使用各个TELNET调试命令来定位故障打下了基础。
第三部分介绍ECC通信模块故障定位的常用方法,并举例说明了如何利用调试命令来定位故障。
目录
第一章网络通信模块的体系结构 (4)
第二章ECC通信模块故障定位的常用命令 (5)
第三章ECC通信模块故障定位的常用方法 (22)
第一章网络通信模块的体系结构
目前中兴的SDH设备的网络通信模块主要由ECC模块实现,采用的是TCP/IP协议来实现各个网元之间的互联。
从硬件角度来看,后台网管到各个网元的之间的通信硬件体系如图1.1。后台网管通过网口与网元1相连,通过SOCKET套接字实现后台网管与前台软件之间的信息交互;网元1和网元2之间是通过光纤相连,物理上是通过SDH的帧结构中的DCC1-DCC3(DCC1-DCC12)字节,采用TCP/IP协议来实现网元之间的互联,各个网元相当于一个简单的路由器,能够独立的实现路由选择。
在各个网元内部,ECC模块涉及两块单板,一块是NCP板,一块是光板,NCP板与光板之间采用总线或点对点方式实现连接,NCP板的网管信息、链路层协议维护信息及OSPF路由协议信息,都要通过光板实现存储转发,由FPGA 将这些信息嵌入到SDH的帧中。
网元1网元2
图1.1 ECC通信模块体系结构
在实际中,将NCP到光板186侧的通讯口称为ECC口,186到FPGA侧的
通讯口称为DCC口,NCP发送的数据信息经过HDLC总线,由186的ECC
接
口实现接收,然后采用SDMA方式送给FPGA,FPGA收到的数据信息经过HDLC 总线,由186的DCC接口实现接收,然后采用SDMA方式送到ECC侧的HDLC 总线上。详细的186侧转发模块的结构如图1.2。
图1.2 186转发模块结构
从上图可知,由于环节较多ECC故障比较难定位,我们又缺乏有效的测试仪表,目前的仪表只能测试线路上与开销有关的错误,无法测试上图所示环节的故障,故利用软件编写了一个ECC维护、调试模块希望对定位和解决相关故障有所帮助,特别提醒大家注意接收帧错误的类型,在实际调试中出现的比较多,在上电、复位和拔插光纤的过程中偶尔出现错误是正常现象不用理会,只有当错误的记数在较长的时间内持续增长时才表明有错,超时和CTS类的错位只要出现的频
率不是很高可以不理会。
第二章ECC通信模块故障定位的常用命令
对于不同的SDH设备,ECC通信模块故障定位的常用命令也不尽相同。2.12500C设备主要的命令
1.help命令
命令用途:
显示所有的TELNET调试维护命令;
命令格式:
help;
命令示例:
图2.1 help命令
示例说明:
显示了ECC的所有调试和维护命令,可以方便查询ECC调试和维护命令。
2.ifconfig命令
命令用途:
用于查看那些端口已经建立连接;
命令格式:
ifconfig -a;
命令示例:
图2.2 ifconfig命令
示例说明:
图2.2中,1、2、3、4、37表示该网元的所有端口序号;
1端口表示以太网;
2、3、4端口表示串口(光口或电口,对应于通道PPP0、PPP1、PPP2),
37端口表示本地环回地址。
其中POINTTOPOINT,UP表示点到点协议已经运行,端口已经被打开(及已经和对端建立点到点连接),若此时本端和对端的端口地址一样通常表示此端口的收与发相连(即端口被环回),利用端口环回通常可以检测端口的好坏(二型机特别要注意2.5G 的光板和LP板,尤其是在做中继时,二型机有极少数的光板插在槽位上会导致此网元所有光方向的ECC都不通),若无UP则表示PPP端口未被打开,PPP通道的连接未建立。
若协议的地址分配管理模块发现存在底层的PPP通道,即会给其分配一个通道号(如1、2、3等),并分配一个IP地址,在此通道未被打开(即UP)之前IP地址分配为0.0.0.0,若被打开则根据其所在槽位,由地址分配管理模块给其分配一个有效的IP 地址,通常有如下几种情况:
a、端口2(即PPP0),表示PPP0通道存在(相应槽位有单板在位),但从未打开
过。
b、端口3(即PPP1),表示PPP1通道存在(相应槽位有单板在位),并且被打开,
本端的通道地址为193.193.200.43(通常对应的网元地址为193.193.200.18),
对端的通道地址为193.193.201.44(通常对端的网元地址为193.193.201.18)。
c、若本端和对端的端口地址一样,但端口未被打开,则表示此通道以前被打开过,
但目前已被关闭。若端口被打开则表示此端口被环回。
d、若本端地址为0,对端端口地址非0,则表示则表示此通道以前被打开过,但
目前已被关闭,而且相应槽位的单板已被拔掉。
注意:可以将ifconfig –a 简化为if –a使用,只要前面字符没有重复的命令可以利用简写输入。
3.ppptable命令
命令用途:
利用此命令可以查看端口配置表;
命令格式:
ppptable;
命令示例:
图2.3 ppptable 命令
示例说明:
PPP0、PPP1、PPP2表示已经创建的PPP通道(与之对应的端口序号为2、3、4),HDLC 的收发地址表示光板或其它对应处理板的槽位号,HDLC的收发端口表示光板或其它对应处理板上的相应的端口号。一般情况下HDLC的收发地址都是一样的,若是中继则不一样,
状态表示此通道是否被禁止(0表示允许,1表示禁止)。通常将ifconfig和ppptable命令结合起来使用。
4.sccinfo命令
命令用途:
显示NCP板ECC通讯口状态;
命令格式:
sccinfo;
命令示例:
图2.4 sccinfo命令
示例说明:
channel:逻辑通道号,其与单板的关系科利用ppptable命令查看
tx_packets:正确发送的数据包记数
tx_dropped:等待发送超时主动丢弃的数据包记数
tx_errors:发送错误的数据包记数
rx_packets:正确接收的数据包记数
rx_errors:接收错误的数据包记数
注意:如果某通道不能正确收发数据则此通道对应的ECC处理单板可能有问题,利用ppptable可以查找ppp通道与单板的对应关系
5.route 命令
命令用途:
可以查看路由配置表;
命令格式:
route -a;
命令示例:
图2.5 route命令
示例说明:
如图2.5,127.0.0.1表示本地环回的路由,192.0.0.0和195.0.0.0表示到区域192和195的聚合路由,193.193.0.0、193.193.198.0、193.193.199.0表示区域193内部的网络路由,193.193.199.43和193.193.201.44表示端口的路由。通常有到端口的路由就应该有到此网络的路由。结合图2.3和图2.4我们可以发现到193.193.201.0有端口相连但却无路由,肯定不对,可以检测一下是否与193.193.201.44连接的通道是否不稳定,或通过date等命令检查一下定时器(时间)是否运行正常,或检查一下网络中是否有重复培植的网络地址。
6.qxinfo命令
命令用途:
可以查看与网元相连的网管的IP地址,及其连接状态、最近断链的原因;
命令格式:
qxinfo n (0-15);
命令示例:
图2.6 qxinfo命令
示例说明:
如图2.6,表明与网元相连的网管的IP地址是193.193.198.8。
其中自定义错误码如下:
#define CONNECT_CLOSE 0x20000001 /* 连接被对端关闭*/
#define TX_CHECKERR 0x20000002 /* 连接由于发送错被强制关闭*/
#define RX_CHECKERR 0x20000003 /* 连接由于接收错被强制关闭*/
#define TXRX_CHECKERR 0x20000004 /* 连接由于发送和接收错被强制关闭*/
其它错误码请查pSOSystem操作系统的相关手册。
7.ping命令
命令用途:
用于查看ppp通道的稳定性;
命令格式:
ping –s host [count/timeout];
命令示例:
图2.7 ping命令
示例说明:
如图2.6,ping的过程中,如果发现丢包很严重,则此通道有问题,可能是光纤未插好。
8.date命令
命令用途:
用于查询系统和修改时间,注意修改系统时间时要慎重,防止由于8中所述问题导致ECC路由不通;可以查询NCP运行的时间,通过NCP运行的时间可以判断NCP是否复过位。
命令格式:
date ;
命令示例:
图2.8 date命令
示例说明:
注意:
由于路由协议在计算路由时需要根据相对时间来判断信息是否失效,所以同一网络中各网元之间的系统时间不能在运行中随意变化且相差很大(目前我们是根据系统时间而不是时钟芯片的时间计算,各网元之间的时间不能超过35年)。要注意目前我们的NCP程序在设置NCP时间有些版本在设置小于2000年的时间时可能会存在正确的设置了时钟芯片的时间,但却没有正确设置NCP上的系统时间从而导致ECC路由不通。这里时钟芯片的时间就是后台网管取上来的时间,而NCP上的系统时间是指NCP上所运行操作系统的时间,可通过调试和维护命令中的date设置和查询。
9.netstat命令
命令用途:
用于查看网络连接情况;
命令格式:
netstat;
命令示例:
图2.9 netstat命令示例说明:
10.arp命令
命令用途:
用于查看MAC地址表。;
命令格式:
arp -a;
命令示例:
图2.10 arp命令示例说明:
11.open命令
命令用途:
打开特定的PPP接口;
命令格式:
open PPP接口号;
命令示例:
open ppp0;
图2.11 netstat命令示例说明:
12.close命令
命令用途:
关闭特定的PPP接口;
命令格式:
close PPP接口号;
命令示例:
图2.12 close命令示例说明:
13.enableppp命令
命令用途:
启用某个PPP端口。;
命令格式:
enableppp 槽位号端口号;
命令示例:
图2.13 enableppp命令示例说明:
14.disableppp命令
命令用途:
禁用某个PPP端口;
命令格式:
disableppp 槽位号端口号
命令示例:
图2.14 disableppp命令
示例说明:
禁用端口,首先关闭该槽位号和端口号所对应的PPP端口,然后将PPP端口的使能状态置为1,除非用enableppp打开该端口,否则不能自动或手动打开该PPP端口。该功能主要用于和其他公司的设备对接时使用,因为可能各个公司所用的网元间的通信协议不一定相同,为了避免其他的设备的ECC信息对我们的系统造成不必要的影响,需要将该端口禁止掉。
15.sccreset命令
命令用途:
先将所有的PPP通道DOWN掉,然后再初始化所有的PPP通道,相当于对所有的PPP通道进行复位;
命令格式:
sccreset;
命令示例:
图2.15 sccreset命令
示例说明:
sccreset命令是由底层没有准备好的状态,来启动LCP状态机进入到starting,然后底层驱动口关闭,接着重新初始化驱动口和PPP通道,sccreset涉及了驱动层和PPP层的重新初始化和启动。
16.sccclose命令
命令用途:
关闭所有的PPP通道;
命令格式:
sccclose;
命令示例:
图2.16 sccclose命令
示例说明:
sccclose 命令是由上层(管理者)来关闭PPP的LCP链路通道,只对链路层协议进行了关闭。
17.sheap命令
命令用途:
检查单板的堆使用情况;
命令格式:
sheap子架号槽位号 CPU号;
命令示例:
sheap 1 3 1
图2.17 sheap命令
示例说明:
Total:总内存字节
Used:已分配字节
Unused:未分配字节
通常可利用此命令来判断是否存在内存泄漏。
18.memstat命令
命令用途:
检查单板内存分配情况;
命令格式:
memstat 子架号槽位号 CPU号;
命令示例:
图2.18 memstat命令
示例说明:
App_ReqCount:应用模块申请分配内存次数(目前和S口放在一起)
App_MemCount:应用模块分配的内存总字节(目前和S口放在一起)
Sport_ReqCount: S口模块申请分配内存次数(目前包括应用模块)
Sport_MemCount: S口模块分配的内存总字节(目前包括应用模块)
Ecc_ReqCount: ECC口模块申请分配内存次数
Ecc_MemCount: ECC口模块分配的内存总字节
通常可利用此命令来判断是否存在内存泄漏,和各模块的内存使用情况。
19.ds命令
命令用途:
检查通讯口的状态;
命令格式:
ds 子架号槽位号 CPU号端口号命令码 0
其中端口为0表示S口,1表示ECC口(ECC模块与NCP相连的通讯口),端口为2到5表示DCC口(与相应光端口的FPGA相连的通讯口);
命令示例:
a、在Telnet的命令窗口输入没ds 1 12 1 0 0 0,回车,则输出显示窗口显示如下:
b、在Telnet的命令窗口输入ds 1 12 1 2 0 0,回车,则输出显示窗口显示如下:
图2.19 ds命令
示例说明:
1、186侧数据显示,ECC口产生了1017422次接收和549864次发送,其中在发送中出现了102326次帧错误、接收溢出次数260478,发送中出现117次超时错误。
2、186侧数据显示,DCC口产生了556945次发送和550264次接收,其中发送没有出现错误;接收出现了141次错误帧,120次接收缓冲区溢出,1次帧接收长度错,4次接收缓冲区溢出。
其中:
Rx:接收正确记数
RxErr:接收错误记数
RxErrOv:BD表接收缓冲区地址错记数
RxErrLe:接收长度错记数
RxErrRa:接收地址错记数记数
RxErrFe:接收错误帧记数(包含帧错误、CRC校验错、OverFlow等,详见附件)。
RxErrRfo:接收缓冲区溢出记数;对扩展控制器表示Receive Frame Overflow
RxErrRfs:接收阻塞自动恢复记数;对扩展控制器表示Receive Frame Start记数
Tx:发送正确记数
TxCts:发送冲突记数
TxErr:发送错误记数
TxErrTo:发送超时记数
TxErrBa:BD表发送缓冲区地址错记数
TxErrRa:BD表发送环地址错记数
TxErrXmr:内存分配失败;对于扩展控制器表示Transmit Message Repeat记数
TxErrXdu:发送端口号错误;对扩展控制器表示:Transmit Data Underrun记数。
TxErrNb:发送阻塞自动恢复记数;对扩展控制器表示:发送缓冲区不可用
注意:在目前采用接收溢出丢包的策略下发送超时不一定会引起丢包的发送错,以前采用发送超时丢包会引起丢包的发送错。
如果发送或接收正确记数一致保持不变,则可能出现吊死情况
20.commreset命令
命令用途:
复位通讯模块;
命令格式:
commreset 子架号槽位号 CPU号通讯模块标识
其中通讯模块标识为1表示复位S口模块,为2表示复位Ecc模块。
命令示例:
图2.20 commreset命令
示例说明:
单板186侧S口模块和ECC口模块复位,用于确定是否是S口或ECC口模块程序的问题。
21.sid命令
命令用途:
读HDLC寄存器;
命令格式:
sid 子架号槽位号 CPU号 HDLC寄存器地址
命令示例:
在Telnet的命令窗口输入 sid 1 12 1 fc80,回车,输出显示窗口显示地址为fc80的寄存器的值
示例说明:
22.sod命令
命令用途:
写HDLC寄存器;
命令格式:
sod 子架号槽位号 CPU号 HDLC寄存器地址
其中通讯模块标识为1表示复位S口模块,为2表示复位Ecc模块。
命令示例:
在Telnet的命令窗口输入 sod 1 12 1 fc80 4,回车,输出显示窗口显示地址为fc80的寄存器的值
图221 sid sod 命令
示例说明:
在ECC定位故障中该命令还是比较有效的,186侧置外部环回(即将186的收接到发上),就相当于860侧外部环回,这样可以用EPING命令查看是否故障出现在NCP侧,可以将NCP侧的问题和186侧的问题分离开。
23.show mem命令
命令用途:
显示NCP板与pNA模块有关的内存;
命令格式:
show mem
命令示例:
在Telnet的命令窗口输入 show mem 回车,输出显示窗口显示如下:
图2.22 show mem命令
示例说明:
此命令是由PNA模块通过IOCTL(SIOCGDBSTAT,SIOCGMBSTAT)调用提供对BUFFER 和MESSAGE block的统计,
图2.22中:
20509 20487 0 0
表明了消息块总数为20509 ,空闲20487,等待次数为0,失败次数为0
32: 2048 2047 0 0
表明了缓冲区类型为32,总数为2048 ,空闲2047,等待次数为0,失败次数为0。
利用此命令可以查协议中内存使用情况,来判断sys_config,h中NC_MBLKS和NC_BUFS_n(n=0,32,64,128,512,1024,2048,4096…)是否配置合理。
24.show al命令
命令用途:
显示与ECC口通讯模块有关的内存;
命令格式:
show al;
命令示例:
图2.23 show al命令
示例说明:
0/1:0表示目前分配的块数,1示最大分配块数;
x/y:x代表从y中PPP协议层分配的内存块的数量,y数值越大,说明PPP的ZBUF 缓冲池中分的内存块越多,如果太多,说明有可能存在内存碎片,导致内存泄漏。
25.show ser命令
命令用途:
显示NCP板ECC底层通道的收发是否存在错误信息;
命令格式:
show ser;
命令示例:
在Telnet的命令窗口输入 show al 回车,输出显示窗口显示如下
图2.24 show ser命令
示例说明:
在图2.24中各个项的代表的意义:
低层通道号:PPP通道号
校验错:接收校验错
发送错:发送Underrun
接收错:接收Overrun
中断:Break Received
丢弃:Frame aborted
可用于查看是否驱动层存在接收和发送数据错误的信息,如果大量存在接收帧错误,一般应定位为时钟的问题。
26、eping 命令
命令用途:
在ECC口实现PING命令,用于测试光纤环回和186侧外部环回及860自环的稳定性