沈 昀,张岩凯
(中国电信股份有限公司无锡分公司,江苏 无锡 214000)
当数据网中的设备或者业务配置不能满足业务发展需要,影响到网络的健康运行,就需要对网络进行物理结构或者业务逻辑上的修改,也称为风险操作。风险操作时会影响到承载业务,所以需要提取受影响设备以及接入号,并提前通知用户。以 2019年为例,某百万规模城域网一年风险操作总数为849次,其中数据专业 145次,光缆专业 597次,动力专业 87次,其他专业 20次,每天平均 2-3次。
城域网风险操作流程大致分为 4步,具体如下:
(1)风险操作内容整理:包括名称、原因、设备和网络现状、影响范围、执行时间、割接时长、人员安排、实施步骤、测试方案、回退方案等。
(2)风险操作审批:根据风险等级,提前 7-20天发起风险操作审批。
(3)风险操作发布:通过网站、电话、营业厅、短信、报纸等方式提前 3天发布风险操作公告,通知政企客户。
(4)风险操作实施。其中,风险操作分析占据了风险操作内容整理的大部分时间,以 XL局7750设备主控板升级为例,数据专业操作步骤如下:
步骤1:整理 XL-7750设备的上下联拓扑结构,其中下联方向需要包含汇聚层和接入层 2个层级。
步骤2:将拓扑中的设备名称,转换为网管告警屏蔽系统可以识别的 IP地址清单。
步骤3:导出拓扑的中的专线交换机下的专线接入号码。
步骤 4:导出拓扑中的 OLT下的专线接入号码(目前只有单台导出Web界面)。(目前只有单台导出 Web界面)。
以上涉及业务端口 805个,交换机 15台,OLT72台,专线用户 1,357个。从设备清单整理,到通过 Web界面导出专线用户整理成表格,共需花费时间约2小时。
除分析时间长,消耗大量人力外以外,人工方式还存在错漏隐患。一旦发生,目前检查手段不直接,人工重查过程繁复。
在风险操作分析 4的步骤中,拓扑结构整理需要半小时; Web接口导出 72台OLT对应的专线用户,每台需要 1分钟,总共需要 1小时12分钟左右。这两个环节占据了总时长的 85%左右。而在目前的城域网设备中,接口下有规范化的描述字段,字段包括了连接方向、对端设备名称、对端设备端口以及光路编码。通过规划端口描述,理论上可以推导出网络拓扑结构。因此,风险操作分析工具关键功能需求设定如下:
步骤1:根据目标设备以及端口描述,实现上下联拓扑结构的自动发现,下联方向需要发现到接入层。
步骤2:设备名称和 IP地址自动匹配,如果涉及到物理交换机和虚拟交换机,需要对它们的名称进行转换。
步骤3:OLT专线用户通过 Web接口批量,免人工干预导出。
步骤4:根据拓扑表生成风险操作影响范围屏蔽表。
以某南方电信分公司为例,风险操作原始输入一般有两种形式:
(1)形式 1:电子表格形式。在一般的光缆割接中,缆线维护部门通常提供一张光缆割接表。表中包括风险操作涉及的光路编码、光路名称、对端设备名称、对端端子、线缆名称、缆段编码等。其中,光路编码和实际光路一一对应,其他字段由于人工更新不准确、不及时等关系,不能作为参考字段。
(2)形式 2:设备 IP形式。当设备版本升级、替换,此时风险操作分析的起点就是某台特定设备的 IP地址。
(1)城域网设备总表。端口描述表用来存放城域网所有设备的名称、 IP地址、端口以及端口描述。表结构设计如下:
device_name:设 备 名 称; device_ip:IP地 址;interface:端口编号; description:端口描述。
(2)拓扑表。拓扑表用来存放设备的上下联拓扑信息,表结构设计如下:
f_node:父节点设备名称; f_port:父节点接口名称; description:端口描述; peer_name:对端设备名称;peer_port:对端设备 IP地址; peer_ interface:对端设备端口; f_no:光路编码; level:设备层级。
(3)影响范围表。影响范围表是拓扑表的一个子集,表结构设计如下:
device_ip:被影响设备 IP地址; interface:被影响设备端口。
2.3.1 生成城域网设备总表
首先通过专业网管导出各型号设备清单,其次利用python的pexpect模块依次采集设备名称,端口,端口描述并保存。
2.3.2 生成拓扑表
步骤1:采集风险操作目标设备的端口和端口描述,存入风险操作拓扑表,层级设置为 0,代表此设备本身。
步骤2:分析端口描述,获得连接方向(上联、下联、同级),对端设备名称等信息。同时根据设备名称判断该设备的层级(核心层、汇聚层、接入层),上联设备层级设置依次加1,下联设备层级设置依次减 1。
城域网端口描述:“ uT:X X-X X-XX-CR-1. MAN.NE5000E:(F1303281XXX)10GE1/9/0/17”,正则表示式:“r e.c om pi le(r '.*[u p d]T:(.* . MAN..*):((.*))(.*)')”。其中组 1-3分别匹配了设备名称,光路编码以及端口。
步骤3:以城域网业务控制层设备为例,首先保存三个连接方向的端口描述,通过描述获得设备名称;其次查找城域网设备总表,获得设备 IP地址。
步骤4:比对每一条描述的设备层级,跳过接入层,继续采集汇聚层设备的端口描述,存入割接拓扑表,返回步骤 2,直至产生一张以某台风险操作目标设备为根,与其下汇聚层,接入层设备组成的树型拓扑表。
2.3.3 生成影响范围表
首先,根据风险操作需要,根据设备名称、层级,挑选出影响范围内的设备;其次,根据相关规范清洗端口编码,并和设备 IP组合成可导入网管的割接屏蔽表。
2.4.1 接口程序的编写
根据需求,需要编写两个接口程序:第一个用于导出光路编码对应的线路信息(包括光路编码,光路两端设备 IP,光路两端设备端口);第二个用于导出IP地址对应的专线用户信息(包括专线用户接入号,专线所属设备 IP和专线所属设备端口),涉及 urllib,requests,http,json等模块,大致步骤如下 :
步骤1:根据抓包结果或者网页源代码,获得目标url。
步骤2:获取网站 cookies。
步骤3:将目标 url、cookies,以及请求头封装并提交,获取结果并保存成字符串。由于 Web接口响应存在超时几率,每轮需要新建一个临时列表,保存非 200返回代码的请求,并循环发送,直到临时列表为空。
步骤4:分析结果字符串并提取可用信息,一般为json格式。
2.4.2 专线用户信息的获取
若原始输入为电子表格形式,第一步根据光路编码,通过接口获取编码对应的设备 IP,端口;第二步获取 IP对应的专线用户信息。若原始输入为 IP形式,第一步遍历端口描述生成下联网络拓扑表,第二步根据拓扑表中的 IP获取专线用户信息。
(1)在涉及部分端口的分险操作场景中,专线的提取需要精确到设备端口。此时需要对从 Web接口提取到的端口字段(光路两端设备端口,专线所属设备端口)清洗,去除多余前置零和前置端口类型,并将四段式端口编码转换为标准的三段式。清洗后,关联查找得到被风险操作影响到的专线用户信息。
(2)在涉及设备上联链路的风险操作场景下,如果风险操作涉及某台设备的所有上联,此时设备存在业务全阻可能,此时需导出整台设备下的专线用户信息,解决方法如下:
步骤1:根据城域网设备总表中的设备名称,端口描述,提取出所有设备上联方向的端口编号和光路编码;
步骤2:根据风险操作原始表中提供的光路编码或者设备名称 +端口编号,与步骤 1得到的设备上联表进行关联查找。如果某台设备的所有上联的光路编码,均出现在风险操作原始表中,则认为该设备存在业务全阻可能,并导出其下所有专线用户。
(1)风险操作拓扑表。程序会根据端口描述,提取其中的设备名称,并尝试找到设备的 IP地址,如果没有找到,则提示“ not found in total_df”;若描述本身不合法,则提示“ des not match”;若找到 IP,则把 IP写入。“level 1”代表为割接设备的直连设备,“ level 2”则代表为割接设备的二级设备。
(2)风险屏蔽结果列表,拨号设备列表,专线用户信息列表效果展示。程序输出每台 OLT的IP地址以及关联专线用户的数量。并把所有专线号码全部存入一个列表。最后将设备屏蔽,拨号用户屏蔽,专线用户存入电子表格,该表格可直接导入告警系统,起到告警屏蔽作用。部分结果如图 1所示。
图1 风险操作分析工具效果展示
本文从风险操作流程出发,分析了各环节耗时,针对其中风险操作拓扑整理以及专线用户提取环节,开发了基于Python的风险操作自动分析工具。相比人工方式,将分析时长从1小时缩短到了5分钟,同时提高了分析准确性。