陈学亮,庄一嵘,陈 戈,海锦霞
(中国电信股份有限公司广州研究院 广州510630)
内容分发网络(content delivery network,CDN)是一种新型的网络构建方式,通常采用中心、区域、边缘多层架构,在不同的网络位置部署多个节点服务器,将视频、音频、图文等内容推送到各级节点,并根据IP地址、网络流量、节点负载、响应时间等综合信息将用户调度到离其最近的节点服务器,为其提供服务。目前CDN技术已广泛应用于IPTV、PC视讯、移动流媒体、网页加速、文件下载等互联网应用。
CDN使用户可以就近获取所需的内容,减轻了骨干网络带宽压力,优化了网络流量,并且CDN缩短了用户的访问距离,可以大幅度提高用户访问的响应速度,能够有效保证用户体验和服务质量。CDN很好地解决了传统网络架构骨干网络压力大、用户访问集中、响应时间较长导致用户体验不佳的问题。
全局负载均 衡 (global server load balance,GSLB)是CDN的核心技术之一,GSLB作为全局的调度系统,负责在CDN的所有节点之间实现流量调配,保证将用户调度到最近的节点。当用户访问CDN中的内容时,本地DNS进行域名解析,将CDN的GSLB服务器地址返回给用户,用户访问GSLB服务器,GSLB服务器根据用户的IP地址查询路由表进行调度。
目前的GSLB路由表通过人工方式更新,由系统管理员将BAS/SR(宽带接入网关)分配的IP地址池信息定期保存到GSLB路由表中,这种方式效率低下、更新速度慢,导致GSLB路由表存在大量黑洞、准确性不高,不在GSLB路由表中的IP地址会被默认调度到CDN中心节点,对CDN中心节点形成了集中访问压力,严重影响了CDN性能和服务质量,调度流程如图1所示:
(1)用户发起PPPoE拨号请求;
(2)BAS/SR为用户分配地址池中的IP地址;
(3)用户向CDN发起服务请求(本地DNS将域名解析成CDN的GSLB地址);
(4)由于用户IP地址未及时更新到GSLB路由表中,GSLB默认将用户调度到CDN中心节点;
(5)用户向CDN中心节点发起服务请求;
(6)CDN中心节点为用户提供服务。
图1 目前的GSLB调度流程示意
简单网络管理协议 (simple network management protocol,SNMP)是一种用于网络通信管理的标准协议,工作于应用层,由IETF(Internet Engineering Task Force,Internet工程任务组)RFC标准组于1990年正式发布了第一版,目前最新版为第三版。目前,基本上所有的路由器、交换机、服务器等网络设备均支持该协议。
从通用架构上看,SNMP框架由管理站和代理站组成,管理站通过SNMP对代理站进行管理,双方通过UDP进行通信,其中管理站UDP端口为162,代理站UDP端口为161。SNMP中指定了5种核心的协议数据单元(protocol data unit,PDU):get request、get next request、get response、set request、trap,管理站和代理站通过这些PDU进行信息传递。SNMP的代理站通过管理信息库(management information base,MIB)保存网络管理的数据,其中包含了该设备的所有可管理对象,每个对象都有唯一的编号,称为OID,以Juniper路由器为例,表1所示是和IP地址池相关的一组OID。
表1 Juniper地址池OID
通过SNMP网管协议可以实现GSLB和BAS/SR之间的网络通信,GSLB定期向BAS/SR发起轮询请求,查询BAS/SR中的IP地址池信息,得到BAS/SR返回的数据后更新到GSLB路由表中,优化路由调度策略,解决GSLB路由黑洞的问题,提升CDN的整体效率。具体实现方法如下。
GSLB作为SNMP管理站,而BAS/SR作为SNMP代理站,GSLB通过SNMP相关命令获取BAS/SR中的IP地址池信息,例如:
#snmpwalk-v 2c-c public 125.86.54.9.1.3.6.1.4.1.4874.2.2.21.1.1.1.1
其中-v 2c指的是SNMP协议版本,-c public指的是SNMP通信密码(默认为public),125.86.54.9指的是请求访 问 的BAS/SR地 址,.1.3.6.1.4.1.4874.2.2.21.1.1.1.1是juniAddressPoolEntry的OID(其他BAS/SR设备制造公司如思科、华为技术、中兴通讯等也有自己的OID)。
BAS/SR返回的消息如下:
enterprises.4874.2.2.21.1.1.1.1.2.1:1
enterprises.4874.2.2.21.1.1.1.1.3.1:“pool1”
enterprises.4874.2.2.21.1.1.1.1.4.1:IpAddress:131.1.1.0
enterprises.4874.2.2.21.1.1.1.1.5.1: IpAddress:131.1.10.255
enterprises.4874.2.2.21.1.1.1.1.6.1:2560
说明该BAS/SR可分配的IP地址池有1个,名称为pool1,起 始IP地 址 为131.1.1.0,结 束IP地 址 为131.1.10.255,可分配IP地址数量为2 560个。
GSLB将IP地址池信息更新到路由表中,结束本次会话请求。
GSLB和BAS/SR通过SNMP协议交互示意如图2所示。
图2 GSLB和BAS/SR通过SNMP交互示意
更新后的GSLB路由表如表2所示。GSLB获取BAS/SR返回的IP地址池信息后,会将BAS/SR和IP地址池信息更新到路由表中,同时由于CDN边缘节点已和BAS/SR作了静态对应,CDN边缘节点信息也被更新到路由表中。
表2 更新后的GSLB路由表
图3 优化后的GSLB调度流程示意
优化后的GSLB调度流程如图3所示:
(1)用户发起PPPoE拨号请求;
(2)BAS/SR为用户分配地址池中的IP地址;
(3)GSLB通过SNMP网关协议向BAS/SR发起轮询请求,查询BAS/SR中的IP地址池信息;
(4)BAS/SR将IP地址池信息上报给GSLB;
(5)GSLB更新路由表;
(6)用户向CDN发起服务请求(本地DNS将域名解析成CDN的GSLB地址);
(7)由于用户IP地址已更新到GSLB路由表中,GSLB在路由表中查询到用户的IP地址,确定用户所属的BAS/SR,再将用户调度到与BAS/SR静态对应的最近的CDN边缘节点;
(8)用户向最近的CDN边缘节点发起服务请求;
(9)最近的CDN边缘节点为用户提供优质高效的服务。
目前CDN和GSLB技术已广泛应用于视频流媒体、网页加速、文件下载等领域,为用户提供优质高效的互联网服务。但是目前CDN中的GSLB调度机制不够灵活,需要系统管理员人工更新GSLB路由表,效率较低而且准确性不高,导致GSLB调度性能较差从而影响了CDN的整体效率。以广东电信的IPTV业务为例,约有15%的用户IP地址被GSLB默认调度到CDN中心节点,增加了CDN中心节点负载,而且影响了用户体验,如果能将这些用户调度到相应的CDN边缘节点,既能减轻CDN中心节点压力,也能缩短用户访问时间,优化用户体验。
本文介绍了一种基于SNMP网管协议对CDN中GSLB调度机制进行优化的方法。首先介绍了SNMP的特点,然后在此基础上描述GSLB(SNMP管理站)和BAS/SR(SNMP代理站)通过SNMP进行通信的方法及相应流程,实现了GSLB调度机制的优化。
本文介绍的方法无需改动现有网络架构和硬件设备,具有良好的实用性,可为CDN服务提供商,尤其是中国电信等运营商优化CDN、降低CDN建设成本、进一步发挥智能管道作用提供有效的帮助。
1 王焕然,徐明伟.SNMP网络管理综述.小型微型计算机系统,2004(3)
2 王薇薇,李子木.基于CDN的流媒体分发技术研究综述.计算机工程与应用,2004(8)
3 杨磊,叶小荣.全局服务负载均衡策略的常见技术及应用.景德镇高专学报,2004(4)