基于BGP协议实现双多宿网络路由选择

2019-11-07 02:11孙光懿贾英霞
关键词:路由表校园网路由器

孙光懿,贾英霞

(1.天津音乐学院图书与信息中心,天津 300171;2.商丘经济贸易学校,河南 商丘 476000)

随着教育信息化的高速发展,校园网已成为各院校重要的教学基础设施,其能否安全稳定运行直接关系着学校正常的教学秩序。当前校园网所面临的问题主要集中体现在:1)有些校园网出口线路无冗余(校园网只有中国教育科研网一条出口线路),单线路出口一旦出现故障,校园网用户将无法正常访问互联网资源[1];2)出口带宽不足且前往某些目标地址时没有使用最佳路径,这必然会对校园网用户访问外网资源造成影响。为了有效解决上述问题,同时提高校园网用户的满意度,本文提出一种在校园网出口边界处的2台路由器中部署边界网关协议(border gateway protocol,BGP)[2-3],并引入双多宿ISP线路的方案(校园网使用2条链路与每家ISP相连)。部署BGP协议主要是为了实现对进入和离开校园网的数据流的路由方式和路由策略进行有效控制,从而使校园网用户的数据流能够按照最佳路径访问互联网资源。引入双多宿ISP线路不仅可提高校园网出口带宽与连接互联网线路的可靠性(当一条ISP连接线路出现故障时,校园网用户还可以通过另一条IPS连接线路对互联网资源进行访问),还可以为去往某些目的网络,提供更多控制路径的余地。

1 BGP协议

现实中的互联网是通过不同编号的自治系统(自治系统编号从1—65535,其中编号64512—65535预留给私用)互联互通而构成的。为了实现各自治系统之间的互联互通,网络管理者通常会在自治系统边界路由器中部署BGP协议,用以交换各自治系统内的网络可达信息。BGP协议是一种在大型网络中广泛使用的路径矢量路由协议。它是在EGP的基础上逐步发展起来的,目前最新的版本为1995年发布的BGP-4,它具有高可扩展性、高协调性,支持路由增量更新、路由聚合、CIDR、VLSM、IPV6以及身份验证等特点。其主要任务就是负责连接各自治系统,并确保它们之间交换的路由信息无环路存在。与其他常见的动态路由协议如RIP、EIGRP、OSPF、ISIS相比,BGP协议不同之处为:1)按照动态路由协议作用范围来划分,BGP协议属于外部网关协议(exterior gateway protocol,EGP)[4],而上述其他路由协议均属于内部网关协议(interior gatewary protocol,IGP)[5];2)度量值的选择依据不同,BGP协议的度量值是基于路径属性的,而RIP协议的度量值是基于跳数的,EIGRP协议的度量值是基于复合度量值的,OSPF的度量值是基于链路开销的;3)BGP协议的拓扑结构无须采用层次结构,而OSPF、ISIS等链路状态协议的拓扑结构则须采用层次结构,一方面是为了将大型网络小型化,另一方面是为了在网络扩展时便于进行IP地址汇总;4)动态路由协议中只有BGP协议使用传输控制协议(TCP)作为自己的传输协议(端口号为179),因此BGP路由信息的传输被认为是可靠的;5)BGP协议可按照策略对数据流的传输进行有效控制(可通过设置BGP属性来实现),以便提高带宽的使用效率;6)BGP协议的路由更新采用增量更新模式,而不像距离矢量路由协议一样周期性的对路由表进行更新;7)BGP协议的下一跳是以自治系统为单位的,而不像上述其他路由协议一样以路由器为单位。需要注意的是:BGP协议按照部署位置的不同,又可进一步分为IBGP和EBGP。位于同一自治系统中的2台路由器,它们之间运行的BGP协议称之为IBGP。IBGP主要用来在自治系统内部交换BGP信息,并将上述信息传播给其他自治系统(IBGP通告路由的管理距离为200,比任何一种IGP路由的管理距离都低)。在位于不同自治系统的路由器之间运行BGP协议时则称之为EBGP(EBGP路由的管理距离为20,比任何一种IGP路由的管理距离都高)。由于EBGP邻居之间没有运行任何内部网关协议,因此EBGP邻居之间必须是物理直连的。

2 BGP协议路径决策过程

在收到外部自治系统的路由更新信息后,BGP协议需要决定使用哪条路径前往目标网络(某些情况下,BGP表中存在不止一条可以到达某个目标网络的路径)。对于这个目标网络,BGP协议只能选择一条去往该网络的路径,并将其作为最佳路径,而那些没有被选中的路径依旧会被保存在BGP表中。需要明确的是:只有最佳路径才会最终被加入到BGP路由器的IP路由表中。BGP协议最佳路径选择[6-7]过程并不复杂,主要有以下几个步骤。第1步,选择拥有最高权重的路由(权重属性只能在思科路由器本地进行配置,并且不会向BGP邻居进行传播。当BGP路由器与多个自治系统相联时,可以依据权重属性来决定访问外部自治系统的数据流选择路由器中的哪一个出口);第2步,如果路由的权值相同,则选择本地优先级最高的路由(本地优先级属性只发送给自治系统内部的IBGP邻居路由器,主要用来确定哪条路径是去往外部自治系统的最佳路径);第3步,如果路由的本地优先级相同,则选择本地路由器所通告的路由;第4步,如果路由均不是本地路由器所通告,则选择穿越自治系统路径最短的路由;第5步,如果穿越自治系统路径长度相同,则按照(I

3 仿真实验

3.1 网络拓扑构建[8-9]

在GNS3网络仿真环境下,笔者通过4台思科3725路由器R1、R2、R3、R4以及1台思科2950二层交换机SW1,虚拟构建出拥有AS50、AS60、AS70 3个自治系统的大型网络。其中,AS50为校园网所在自治系统编号,AS60为中国教育科研网所在自治系统编号,AS70为中国联通所在自治系统编号,路由器R1、R2为校园网出口边界路由器,路由器R3为中国教育科研网边界路由器,路由器R4为中国联通边界路由器。网络拓扑如图1所示。可以看出,在AS50自治系统内部共有VLAN10、VLAN20、VLAN30、VLAN40 4个网段,各网段用户之间可以互相通信(VLAN10与VLAN20的三层网关建立在路由器R1中,VLAN30与VLAN40的三层网关建立在路由器R2中)。路由器R1、R2之间采用双链路全互联的方式运行IBGP,并禁用BGP同步。这样不仅可以最大限度地减少自治系统内IGP路由的传输、提高BGP的汇聚速度,还可以增加R1-R2链路的可靠性(即使有1条链路出现故障,也不会对IBGP分组的传输造成任何影响);而在AS50与AS60、AS50与AS70自治系统之间则采用 EBGP多跳来传递各自治系统内部网络可达信息(AS50所属路由器R1有2条前往AS60所属路由器R3的物理链路,AS50所属路由器R2也有2条前往AS70所属路由器R4的物理链路)。部署EBGP多跳既可提高自治系统之间链路的可靠性,又可在自治系统之间的2条链路上实现流量负载均衡。另外,由于校园网引入了多条ISP链路,因此有必要在AS50内部的IBGP路由器中部署路由映射表修改本地优先级属性,从而确保实现对校园网用户访问互联网资源的数据流进行有效控制,即当校园网用户访问中国教育科研网资源时,数据流需经校园网出口边界路由器R1访问目标地址;当校园网用户访问中国联通资源时,数据流需经校园网出口边界路由器R2访问目标地址。

特别需要注意的是,如果自治系统BGP中转路径中存在没有运行BGP协议的路由器,那么就必须启用BGP同步,否则无法保证自治系统中路由信息的一致性(容易造成路由黑洞)。启用BGP同步后,BGP协议只允许交换在IP路由表中已存在的BGP路由。禁用BGP同步以后,不论BGP路由是否存在于IP路由表中,BGP都可以对它进行通告。

图1 校园网网络拓扑图

3.2 相关网络设备IP地址分配

校园网内二层交换机SW1的f2/0与f2/1端口被划分为trunk端口(分别与路由器R1、R2的f0/0接口相连接),而f2/2与f2/3端口则被划分为switch端口。VLAN10网段所属终端计算机C1与二层交换机SW1的f2/2端口相连接,VLAN30网段所属终端计算机C2与二层交换机SW1的f2/3端口相连接。另外,在AS60中的边界路由器R3与AS70中的边界路由器R4上分别建立LOOPBACK10和LOOPBACK11环回接口,用以模拟中国教育科研网服务器地址和中国联通服务器地址。本次仿真实验相关网络设备接口及终端计算机IP地址分配方案如图2所示。

图2 相关网络设备接口及终端计算机IP地址分配方案

4 网络设备具体配置过程

4.1 网络设备接口配置

在校园网边界路由器R1、R2上采用单臂路由技术创建子接口,所创子接口IP地址即为校园网内各VLAN网关地址。另外,本次仿真实验所用4台思科3725路由器R1、R2、R3、R4,接口配置过程相类似,在这里仅以路由器R1为例给出相关主要配置过程。

配置路由器 R1:

R1(config-if)#int f0/0.1 //使用单臂路由技术创建子接口

R1(config-if)#encapsulation dot1Q 10 //封装802.1Q协议

R1(config-subif)#ip addres 192.168.10.1 255.255.255.0 //设置VLAN10网关地址

R1(config-if)#int f0/0.2

R1(config-if)#encapsulation dot1Q 20 //封装802.1Q协议

R1(config-subif)#ip addres 192.168.20.1 255.255.255.0 //设置VLAN20网关地址

4.2 配置BGP协议

在路由器上部署BGP协议时,需要预先知悉路由器所在自治系统的编号,只有这样在建立BGP邻居时,才可明确该路由器BGP邻居的类别(如果router bgp命令中的自治系统编号与neighbor remoteas命令中的自治系统编号相同,则该邻居为IBGP邻居,否则为EBGP邻居)。需要特别注意的是,每台路由器上只能运行一个BGP进程,且前往邻接路由器BGP分组的目标地址必须为可达。只有这样二者才可顺利建立TCP连接,进而交换BGP路由表。

4.2.1 配置EBGP多跳

AS50所属路由器R1与AS60所属路由器R2之间运行BGP协议,且存在2条物理链路,因此二者之间建立的BGP会话为EBGP[10]。另外,为了增加EBGP会话的弹性,也为了保证路由器与分组的源IP地址能够建立BGP关系,在路由器R1、R3中使用环回接口地址作为BGP更新的源地址[11-12](如果默认使用路由器出站物理接口地址作为BGP更新的源地址,GBP会话可能会在某些情况下被中断,例如物理接口出现故障,而众所周知,只要路由器自身不发生故障,环回接口是永远不会DOWN掉的)。由于路由器R1与R3之间无法运行内部网关协议,因此若想到达对方的环回接口必须借助于静态路由技术。相关具体配置过程如下所示。AS50所属路由器R2与AS70所属路由器R4之间EBGP多跳的配置过程与其相类似,故不再阐述。

1)配置路由器 R1。

R1(config)#router bgp 50 //进入BGP配置模式

R1(config-router)#neigh 172.19.1.1 remote-as 60 //指定BGP邻居及所在的自治系统

R1(config-router)#neigh 172.19.1.1 update-source loopback1 //指定BGP分组的源IP地址

R1(config-router)# neigh 172.19.1.1 ebgp-multi 2 //到BGP邻居地址需要两跳。第1跳到达路由器R2,第2跳到达路由器R2环回接口loopback1。

R1(config)# ip route 172.19.1.1 255.255.255.255 192.168.60.1 //配置到达路由器R2环回接口loopback1的静态路由

R1(config)# ip route 172.19.1.1 255.255.255.255 192.168.60.2 //配置到达路由器R2环回接口loopback1的静态路由

2)配置路由器 R3。

R3(config)#router bgp 60 //进入BGP配置模式

R3(config-router)#neigh 172.18.1.1 remote-as 50 //指定BGP邻居及所在的自治系统

R3(config-router)#neigh 172.18.1.1 update-source loopback1 //指定BGP分组的源IP地址

R3(config-router)# neigh 172.18.1.1 ebgp-multi 2 //到BGP邻居地址需要两跳。第1跳到达路由器R1,第2跳到达路由器R1环回接口loopback1。

R3(config)# ip route 172.18.1.1 255.255.255.255 192.168.60.1 //配置到达路由器R1环回接口loopback1的静态路由

R3(config)# ip route 172.18.1.1 255.255.255.255 192.168.60.2 //配置到达路由器R1环回接口loopback1的静态路由

4.2.2 配置IBGP[13]

AS50所属路由器R1、R2之间运行BGP协议,且存在2条物理链路,因此二者之间建立的BGP会话为IBGP。通过运行IBGP,可以使校园网内2台路由器R1、R2均拥有相同的外部自治系统BGP路由信息。需要注意的是,与EBGP邻居间必须直连不同,IBGP邻居间只需在逻辑上进行连接,以便能够顺利完成TCP 3次握手,从而建立邻接关系。如果在自治系统内的IBGP邻居间存在多条可达路径,通常专业技术人员会在IBGP路由器中建立环回接口,并将其IP地址作为BGP更新的源地址。路由器R1相关具体配置过程如下所示。

R1(config)#router bgp 50 //进入BGP配置模式

R1(config-router)#neigh 11.1.1.1 remote-as 50

R1(config-router)#neigh 11.1.1.1 update-source loopback2 //指定BGP分组的源IP地址

4.2.3 修改下一跳属性

修改 BGP下一跳属性[14]最主要的目的是为了解决下一跳可达问题。BGP协议虽然和IGP协议一样也属于逐跳路由协议,但是它的下一跳默认为下一个自治系统,而不是路由器。对于EBGP而言,下一跳为发送路由更新的EBGP邻居路由器IP地址。对于IBGP而言,去往目标地址的下一跳有可能为下一个自治系统入口IP地址,而不是发送BGP更新的IBGP邻居IP地址。这样一来就需要IBGP邻居路由器在其IP路由表中递归查找如何去往下一个自治系统入口IP地址的路由条目。如果路由表中不存在这样的路由条目,那么IBGP邻居路由器将丢弃去往目标地址的分组。在这里不允许BGP协议使用默认的下一跳地址,而是强制BGP协议将路由更新的源IP地址作为下一跳地址。各路由器相关具体配置过程如下所示。

1)配置路由器 R1。

R1(config-router)#neigh 11.1.1.1 next-hop-self //发送路由更新时,路由器R1自己作为下一跳地址

R1(config-router)#neighbor 172.19.1.1 next-hop-self

2)配置路由器 R2。

R2(config-router)#neighbor 10.1.1.1 next-hop-self

R2(config-router)#neighbor 172.20.1.1 next-hop-self

3)配置路由器 R3。

R3(config-router)#neighbor 172.18.1.1 next-hop-self

4)配置路由器 R4。

R4(config-router)#neighbor 172.21.1.1 next-hop-self

4.2.4 设定BGP将通告的网络

将网络通告到BGP中[15],通常使用network命令来进行(network命令支持VLSM与CIDR)。需要注意的是:1)如果在IBGP中禁用了同步,那么IBGP邻居路由器将被允许使用该命令通告未存在于本地IP路由表中的路由条目;2)如果使用network命令时指定了子网掩码,只有本地IP路由表中存在与该网络完全匹配的路由条目时,该网络才会被通告到BGP中。由于校园网内各网段用户均需对互联网资源进行访问,因此本次仿真实验,有必要将校园网内各网段地址及互联网资源地址通告到BGP中。以路由器R1为例给出相关具体配置过程。路由器R2、R4的配置过程与其类似,不再阐述。

配置路由器 R1:

R1(config)#router bgp 50

R1(config-router)# network 192.168.10.0 //将VLAN10网段通告到BGP中

R1(config-router)# network 192.168.20.0 //将VLAN20网段通告到BGP中

4.2.5 在AS50内部署EIGRP

为确保实现校园各网段用户间的互联互通,也为了路由器R1与路由器R2能顺利地进行BGP会话(路由器R1与路由器R2的BGP邻居地址分别为对方所建立的LOOPBACK2接口地址,但是2个环回接口处于不同的网段中),笔者在校园网中部署EIGRP动态路由协议(配置静态路由也可实现上述目标,但较为繁琐)。以路由器R1为例,给出相关具体配置过程。路由器R2的配置过程与其类似,不再阐述。

配置路由器 R1:

R1(config)#router eigrp 1

R1(config-router)# network 192.168.10.0

R1(config-router)# network 192.168.12.0

R1(config-router)# network 192.168.13.0

R1(config-router)#network 172.18.0.0

R1(config-router)# network 192.168.60.0

4.2.6 配置路由映射表修改本地优先级属性

本地优先级属性[16]只在自治系统内的IBGP路由器之间进行传播,而不会发送给EBGP邻居(如果EBGP邻居收到了本地优先级值,将忽略掉它)。其主要作用就是负责对离开自治系统的最佳路径进行选择,通常IBGP路由器本地优先级越高(本地优先级默认为100),路径越优先。为确保对校园网用户访问互联网资源的数据流进行有效控制,通过在校园网内2台IBGP路由器R1、R2中部署路由映射表进而修改本地优先级的方式来实现上述目标。在路由器R1中部署的路由映射表负责对来自路由器R3的网络192.168.90.0的BGP更新进行修改,将本地优先级设置为150,从而使其作为最佳路径。在路由器R2中部署的路由映射表负责对来自路由器R4的网络192.168.92.0的BGP更新进行修改,将本地优先级设置为600,从而使其作为最佳路径。为便于读者理解,在这里给出路由器R1、R2的相关具体配置过程。

1)配置路由器 R1。

R1(config-router)#neighbor 172.19.1.1 route-map sunchang in //将路由映射表关联到EBGP邻居

R1(config)#route-map sunchang permit 10 //建立路由映射表

R1(config-router-map)#match ip add 66 //是否与编号为66的访问控制列表相匹配

R1(config-router-map)#set local-prefer 150 //将本地优先级设置为150

R1(config)#route-map sunchang permit 15

R1(config)#access-list 66 192.168.90.0 0.0.0.255 //建立编号为66的标准访问控制列表

2)配置路由器 R2。

R2(config-router)#neighbor 172.20.1.1 route-map sunchang in //将路由映射表关联到EBGP邻居

R2(config)#route-map sunchang permit 10 //建立路由映射表

R2(config-router-map)#match ip add 66 //是否与编号为66的访问控制列表相匹配

R2(config-router-map)#set local-prefer 600 //将本地优先级设置为600

R2(config)#route-map sunchang permit 15

R2(config)#access-list 66 192.168.92.0 0.0.0.255 //建立编号为66的标准访问控制列表

完成上述配置后,IBGP路由器R1、R2的BGP路由表如图3、图4所示。

图3 路由器R1的BGP路由表

图4 路由器R2的BGP路由表

以路由器R1为例,BGP路由表中的第1栏“*”,代表下一跳的地址是有效的;第2栏“>”代表该路由被选为最佳路由;第3栏“i”代表该路由是由IBGP邻居通告的;第4栏Network代表路由器已获悉的网络;第5栏NextHop代表路由下一跳地址(如果为0.0.0.0,则表明该路由是本地路由器通告的);其余的4栏分别为路由的4个BGP属性:度量值、本地优先级、权重以及路径。从图3中可以看出,去往网络192.168.90.0的最佳路由的本地优先级已变为150,去往网络192.168.92.0的最佳路由的本地优先级已变为600。

5 网络试验与验证

5.1 网络正常的情况

首先使用PING命令测试校园网vlan10网段所属终端计算机C1与vlan30网段所属终端计算机C2之间的连通性;然后以终端计算机C2为例,使用TRACE命令分别对中国教育科研网服务器地址192.168.90.36和中国联通服务器地址192.168.92.10进行路由测试,并查看路由器R1、R2中的IP路由表。

1)使用PING命令测试终端计算机C1与C2之间的连通性。

VPCS[1]>ping 192.168.30.30

192.168.30.30 icmp_seq=1 ttl=254 time=150.651 ms

192.168.30.30 icmp_seq=2 ttl=254 time=120.101 ms

192.168.30.30 icmp_seq=3 ttl=254 time=56.091 ms

2)使用TRACE命令测试终端计算机C2访问192.168.90.36的路由过程。

VPCS[2]>trace 192.168.90.36

trace to 192.168.90.36,8 hops max,press Ctrl+C to stop

1 192.168.30.1 69.004 ms 19.001 ms 9.000 ms

2 13.1.1.1 57.003 ms 39.002 ms 29.002 ms

3 *192.168.60.1 87.005 ms

3)使用TRACE命令测试终端计算机C2访问192.168.92.10的路由过程。

VPCS[2]> trace 192.168.92.10

trace to 192.168.92.10,8 hops max,press Ctrl+C to stop

1 192.168.30.1 17.001 ms 9.000 ms 9.000 ms

2 *192.168.70.1 82.105 ms

4)查看路由器R1、R2中的IP路由表,如图5、图6所示。

通过上述测试不难发现:1)校园网各网段用户之间可以相互通信;2)实现了对校园网用户访问互联网资源的数据流进行有效控制。当校园网用户访问中国教育科研网资源时(例如访问地址192.168.90.36),数据流首先到达校园网出口边界路由器R1,然后再经AS60所属路由器R3到达目标地址(从路由器R1的BGP路由表图3中可得知,去往192.168.90.0网络的最佳路由的下一跳地址为172.19.1.1,路径为60 i;从路由器R2 的BGP路由表图4中可得知,去往192.168.90.0网络的最佳路由的下一跳地址为10.1.1.1,路径同样为60 i )。当校园网用户访问中国联通资源时(例如访问地址192.168.92.10),数据流首先到达校园网出口边界路由器R2,然后再经AS70所属路由器R4到达目标地址(从路由器R1 的BGP路由表图3中可得知,去往192.168.92.0网络的最佳路由的下一跳地址为11.1.1.1,路径为70 i;从路由器R2 的BGP路由表图4中可得知,去往192.168.92.0网络的最佳路由的下一跳地址为172.20.1.1,路径同样为70 i )。

图5 路由器R1的IP路由表

图6 路由器R2的IP路由表

5.2 网络故障的情况

关闭路由器R4,模拟中国联通出口链路发生故障。以终端计算机C2为例,使用TRACE命令分别对中国教育科研网服务器地址192.168.90.36和中国联通服务器地址192.168.92.10进行路由测试,并查看路由器R1、R2中的IP路由表。测试发现,即使中国联通出口链路发生故障,校园网用户依旧可以正常访问互联网资源。只是在路由器R1、R2的IP路由表中去往网络192.168.92.0的下一跳地址发生了改变,其中路由器R1的下一跳变为172.19.1.1,路由器R2的下一跳地址变为10.1.1.1。中国联通出口链路发生故障后,路由器R1、R2的IP路由表如图7、图8所示。

图7 路由器R1的IP路由表

图8 路由器R2的IP路由表

5.3 网络改造前与网络改造后校园网用户网速对比

以校园网vlan30网段所属终端计算机C2为例,测试其在本次网络改造前与网络改造后,访问中国联通服务器地址192.168.92.10的网速。如表1所示,经过本次网络改造,校园网用户访问外网资源的网速有了明显提升。

表1 终端计算机C2在网络改造前与改造后访问联通服务器网速对比

6 结束语

为解决当前校园网所面临的校园网出口线路无冗余、出口带宽不足且前往某些目标地址时没有使用最佳路径的问题,优化了校园网出口结构,引入了中国教育科研网与中国联通2条出口链路,并在校园网2台出口边界路由器中部署了BGP协议。上述解决措施,不仅有效提高了校园网出口链路的可靠性(即使某条校园网出口线路发生网络故障,也不会对校园网用户访问互联网资源造成影响),还使校园网用户的数据流能够按照最佳路径访问互联网资源。

猜你喜欢
路由表校园网路由器
买千兆路由器看接口参数
维持生命
路由器每天都要关
路由器每天都要关
数字化校园网建设及运行的几点思考
基于OSPF特殊区域和LSA的教学设计与实践
研究路由表的查找过程
试论最大匹配算法在校园网信息提取中的应用
基于VRRP和MSTP协议实现校园网高可靠性
NAT技术在校园网中的应用