李铭煜,胡江云,戴俊勉,钟毓浩
随着铁路数据网的发展,铁路用户对业务种类的需求越来越多。对于特定用户,需要访问多个不同业务,单业务的使用已经不能满足正常的工作需求,急需不同业务之间特定路由互通。而修改业务中MPLS VPN(基于多协议标签转换的虚拟专用网)的RT 值(路由目标)是实现路由互通的一种常见方法,但存在安全隐患。如果网络规划不合理或路由指向配置错误,这种错误会扩散到全网,从而影响业务网络的正常使用[1]。因此有必要分析并设计跨VPN路由的优化方案。
通常MPLS VPN 中,定义RT 值来控制VPN路由信息在不同站点的发布和接收[2]。根据运电通信函[2016]369 号《铁路数据通信网编号规则及路由规范》的规定:MPLS VPN 设置规范,RT值一般格式为Y∶Y,其中“Y”为业务的VPN 编号[3]。如在铁路通信网中存在a业务和b业务,其业务编号分别为1 和2,则a 业务和b 业务的RT 值分别为1∶1和2∶2。为实现a 业务和b 业务下特定铁路用户能够相互访问,对a 业务和b 业务MPLS VPN中的RT值进行修改,见表1。
表1 a业务和b业务RT值变化表
a 业务和b 业务特定铁路用户能实现互通[4]。但除此之外,a 业务和b 业务的其他普通用户也能相互访问,这存在着极大的安全隐患。当a 业务用户设置错误的IP 地址时,可能与b 业务用户IP 地址造成冲突;或当a 业务用户配置错误的路由指向时,可能收到大量的b 业务发来的垃圾路由信息,影响业务的正常使用。
为保证多种不同业务中特定用户实现路由互通,同时禁止业务间路由信息相互影响,有必要设计合理的优化方案,控制路由信息的发布。
为实现跨VPN 的特定用户路由互通,同时避免对业务内其他路由造成影响,可以采取部署路由策略(Route-policy) 的方式[5]。Route-policy是一种实用的过滤器,用于过滤路由信息和为路由信息设置路由属性,已被广泛用于各种路由协议之中,通过控制路由的引入、发布、接收,来对路由进行优化和调整[6]。
Route-policy 中包括N(N≥1) 个 node (节点),每个node由多个If-match和Apply子句组成。其中If-match 子句定义该节点路由的匹配条件,Apply 子句定义该节点对过滤路由执行的行为。路由在执行路由策略后,将按照节点序号从小到大依次检查各节点是否匹配,若路由与该节点内全部的If-match 子句都匹配成功,则进入匹配选择模式,否则进入下一个节点;若路由不能匹配Route-policy 中任何一个节点,则路由将无法通过该路由策略[7]。
If-match子句定义匹配条件,其匹配对象为路由信息的一些属性,例如路由的目的地址、源地址、出接口等。因此If-match子句经常与ACL(访问控制列表)和IP-prefix(前缀列表)配合使用。
ACL是一组顺序排列的过滤器,每条过滤器均由匹配条件和动作组成,动作分为permit(允许)和deny(拒绝),应用在数据层面过滤数据包或路由控制层面匹配路由[8]。使用ACL虽然可以很好地匹配路由的前缀信息,但却无法识别前缀相同、掩码不同的路由,不能对路由进行精确的控制,这是ACL的隐形缺陷,这就需要采用IP-prefix[9]。相比于ACL,IP-prefix 用于匹配的对象为路由信息的目的地址或直接作用于路由器对象,通过过滤IP前缀,能够同时匹配前缀和网络掩码。IP-prefix对路由信息的筛选和控制方面优于ACL。因此,在铁路数据网中,为控制特定用户路由互通,对路由策略选择IP-prefix与Route-policy来配合使用。
Apply 子句定义需执行的行为,主要是对所匹配路由的某些属性进行修改,例如修改路由的优先级、开销值、标识等。若一个节点中不包含任何Apply 子句,则该节点只用于路由过滤,不能设置路由属性。
假设a 业务下特定的用户终端需要访问b 业务下特定的用户服务器,同时禁止a 业务和b 业务其余网段下用户相互访问,设计铁路数据网跨VPN路由优化组网如图1所示。
图1 铁路数据网跨VPN路由优化组网
AR01/02/03/04 形成“口”字型组网,AR01和AR03、AR02 和AR04 通过业务子接口建立EBGP(外部边界网关协议)连接,其中AR01/02为位于铁路数据网AS(自治系统)内的PE 设备,其AS号为1,且AR01/02上需配置a业务和b业务VPN 实例;AR03/04 为位于用户自定义AS 内的CE 设备,其AS 号为2,且AR03/04 上禁止配置a 业务和b 业务VPN 实例。考虑到铁路数据网网络安全的重要性和必要性,在实际建设中,应在AS:1 和AS:2 间增设防火墙等安全防护设备,防止铁路数据网路由信息泄漏,或错误的路由信息进入铁路数据网内,对铁路数据业务造成影响。
铁路数据网在AS 内,采用IS-IS(中间系统到中间系统)承载设备路由,MP-IBGP(多协议内部边界网关协议)承载业务路由,以帮助AS内路由器发现本AS 各个网段的路由,从而实现AS 内部的数据互通。AR01/02 位于铁路数据网AS 内,通过IS-IS 和MP-IBGP 协议,可以学习到铁路数据网内a 业务和b 业务全部的路由信息,但由于业务的RT 值不同,所以a 业务和b 业务路由信息无法互通,AR01/02 通过EBGP 协议将a业务和b 业务路由通告给AR03/04,由于AR03/04 为CE 设备,且未设置VPN 实例,所以AR03/04 的a 业务和b 业务路由承载在公共网络中,可相互访问。
在AR03/04上部署控制策略,控制AR03/04发布给AR01/02的路由信息。通过IP-prefix筛选出需要不同业务间特定用户互通的路由网段,结合Route-policy 对筛选出的路由网段添加路由属性标识,并控制路由发布去向。如图1所示,AR01/02学习到a业务全部路由信息后,通过EBGP协议发布给AR03/04,AR03/04 通过 IP-prefix 筛选出 a 业务特定用户终端的IP 地址,使用Route-policy添加路由属性值community(团体)标识,用于标记该路由是从a 业务发布至b 业务,并用Route-policy 控制AR03/04发布给AR01/02的b业务路由,为a业务特定网段路由,则铁路数据网中b业务网段将存在a业务特定网段路由。由于铁路数据网中a业务路由还不存在b业务特定网段路由,还需将铁路数据网中b业务特定网段路由发布至a业务中,以此实现a业务下特定的用户终端访问b业务下特定的用户服务器。
以图1 为例,在华为数通模拟器中搭建组网,通过对AR03/04进行路由控制策略,实现a业务用户终端1.0.0.1 和b 业务用户服务器2.0.0.1 能够相互访问,同时禁止a 业务和b 业务网段下其余用户相互访问,具体操作如下。
1)创建一条名为a-To-b的前缀列表,只允许IP 前缀的前32 位为1.0.0.1 用户终端通过,命令:ipip-prefix a-To-b index 5 permit 1.0.0.1 32greater-equal 32 less-equal 32。
2)创建一条node 为10、名为b 的路由策略,命令:route-policy b permit node 10。
3)在route-policy 节点视图下,创建If-match子句,用于匹配名为a-To-b 的前缀列表,命令:if-match ip-prefix a-To-b;创建Apply 子句,标识community 属性是从a 业务发布至b 业务网络中的,命令:apply community 1:2。将创建的路由策略应用到AR03/04 的BGP 中,控制AR03/04 的路由发布,就可以将a 业务终端1.0.0.1 的路由信息发布至铁路数据网b 业务网段中,同时禁止a业务其他网段发布至铁路数据网b 业务网段,有效控制了路由信息的传递。同理创建将b 业务特定服务器2.0.0.1 发布至a 业务网段的控制策略,实现特定业务路由互通。
通过在模拟器上仿真试验,控制策略可以有效对路由进行筛选,达到预期效果。
铁路数据网发展越来越迅速,各业务用户间信息交互越来越频繁。为实现不同业务间路由互通,同时保证铁路数据网网络安全,探讨以IP-prefix 和Route-policy 相结合的路由控制策略,设计跨VPN 路由优化组网,并通过仿真模拟,验证多业务特定路由互通的可能性,同时有效避免因修改MPLS VPN 的RT 值来实现多路由互通存在的安全隐患,为铁路数据网工程建设和网络优化提供参考与借鉴。