1.预备知识

①理解BGP工作原理

②理解单域MPLS ×××的工作原理

③BGP传递×××v4路由时的属性

④理解NAT基本工作原理

⑤理解Tunnel工作原理


2.前言

2.1 网络模型

MPLS ××× Internet Access Under Hub-Spoke Model_第1张图片

2.2 需求

①公司分为主站点、远程站点,并在公司内部采用私有IP地址实现互访

②主站与远程站点间的互访通过MPLS ×××实现

③远程站点出于安全等因素考虑,欲访问外网必须先将流量发向主站,并由主站通过相关检测后再发向Internet

④出站时需要NAT以保证流量能够返回


3.分析

3.1 需求划分

①主站点与远程站点的互访

②将远程站点流量导向主站点

③主站点访问Internet

④流量的返回

3.2 实现

(1)主站点与远程站点互访

MPLS ××× Internet Access Under Hub-Spoke Model_第2张图片

①VRF相关参数

由于这里只要求远程站点能够与主站点互访,因此RD、RT值配置相同即可

PE连接CE的接口都需要加入VRF中,以确保customer network路由能够进入VRF路由表

这里可以使用动态路由协议或静态路由注入PE端的VRF路由表

②×××路由传递

R2、R3间需要建立×××v4 BGP对等体关系,以确保×××路由能够传递

BGP VRF转发表可以通过重分发路由协议、宣告的方式注入

③MPLS

Provider网络需要运行MPLS

(2)远程站点流量导向主站点

为了实现远程站点访问Internet,流量必须先抵达主站点,主站点需要向远程站点下发×××缺省路由

具体实现方式为:

主站点PE上写一条VRF缺省路由,出口指向VRF接口(连接主站点接口),并将该路由带入×××v4 BGP转发表中

此时远程站点PE将学习到下一跳指向主站点PE的×××v4缺省路由,并加入到本地VRF路由表中

此外,远程站点customer网络必须配置IPv4缺省路由指向PE

MPLS ××× Internet Access Under Hub-Spoke Model_第3张图片

(3)主站点访问Internet

①CE访问Internet流量导向PE

由于Internet的路由众多,在主站CE上,应当使用缺省路由使得主站流量可以抵达外网

②PE识别非×××流量

主站对应的PE物理接口由于加入了VRF,因此对于从该接口收到的流量都将查询VRF路由表,而不再查看Global Routing Table。Internet路由此时可以有两种选择:

一种是以×××路由的形式(将整个Internet看成一个×××)进入PE设备的VRF路由表

还有一种是通过某种方式使得PE设备收到非×××流量查看Global Routing Table

前者对于资源消耗往往较大,尤其是一个PE连接多个站点时,因此这里建议采用后者实现需求

由此,此时主要需解决的问题便是PE如何识别非×××流量

这里较好的解决办法是,PE与CE间建立Tunnel,CE上对于去往非×××网络的流量(缺省路由)出站接口指向tunnel,由于tunnel接口在PE端并未加入VRF,因此对于接收到的流量将查询Global Routing Table

③PE获得Internet路由

PE上写一条去往当前AS出口设备的缺省路由,或当前AS出口设备通过BGP下发缺省(或Internet路由)以实现

④NAT

由于customer网络往往会使用私有IP地址,因此作为customer的出口设备,PE上需要配置NAT

这里NAT必须以tunnel为inside,指向AS出口方向接口为outside

⑤出口路由器

出口路由器由于与其它AS建立eBGP对等体关系,因此能够获得Internet路由

MPLS ××× Internet Access Under Hub-Spoke Model_第4张图片

(4)流量返回

为了使得Internet中的目标设备能够回包,NAT后的地址所在网络需要通过BGP通告给其它AS

由此,流量基本可以确保能够返回到主站点PE上,PE NAT转换后,此时查看的是Global Routing Table,因此,还会造成远程站点路由不可达的问题

解决办法为,PE设备上配置静态路由,将远程站点网络出口指向tunnel,使流量先导回到主站点设备(CE)上

由于主站点设备上此时只需要确保拥有远程站点的路由即可(该路由以物理接口为出口)


4.实验

4.1 实验拓扑

MPLS ××× Internet Access Under Hub-Spoke Model_第5张图片

4.2 实验说明

①R1扮演远程站点,拥有×××路由10.10.10.10/32。以10.10.10.10为源的流量访问外网必须先经过R5,返回时亦然

②R5扮演主站点,能够与远程站点相互通信、访问Internet,并负责转发来自远程站点的流量

③R3为AS 234的出口路由器,负责AS 234与AS 6之间的通信

④Customer网络使用私有IP地址,在公网不可路由

4.3 配置

(1)基础IP配置

R1(config)#interface fa0/0

R1(config-if)#ip address 31.31.12.1 255.255.255.0

其它路由器接口编址遵循类似规律

(2)主站点与远程站点互访

①VRF

R2(config)#ip vrf ONE

R2(config-vrf)#rd 1:1

R2(config-vrf)#route-target 1:1

R2(config-vrf)#interface fa0/0

R2(config-if)#ip vrf forwarding ONE

!

R2(config)#ip route vrf ONE 1.1.1.1 255.255.255.255 fa0/0 31.31.12.1

!

R2(config)#router bgp 234

R2(config-router)#address-family ipv4 vrf ONE

R2(config-router-af)#redistribute static

②MPLS

R2(config)#interface fa1/0

R2(config-if)#mpls ip

③×××v4 iBGP

R2(config)#router bgp 234

R2(config-router)#neighbor 4.4.4.4 remote-as 234

R2(config-router)#neighbor 4.4.4.4 update-source lo 0

R2(config-router)#address-family ***v4 unicast

R2(config-router-af)#neighbor 4.4.4.4 activate

R4类似配置

(3)远程站点流量导向主站点

R1(config)#ip route 0.0.0.0 0.0.0.0 fa0/0 31.31.12.2


R4(config)#ip route vrf ONE 0.0.0.0 0.0.0.0 fa1/0 31.31.45.5

R4(config)#router bgp 234

R4(config-router)#address-family ipv4 vrf ONE

R4(config-router-af)#redistribute static

(4)主站点访问Internet

①Tunnel建立

R5(config)#interface tunnel 0

R5(config-if)#ip address 45.45.45.5 255.255.255.0

R5(config-if)#tunnel source 31.31.45.5

R5(config-if)#tunnel destination 31.31.45.4

!

R4(config)#interface tunnel 0

R4(config-if)#ip address 45.45.45.4 255.255.255.0

R4(config-if)#tunnel source 31.31.45.4

R4(config-if)#tunnel destination 31.31.45.5

R4(config-if)#tunnel vrf ONE

这里配置tunnel vrf ONE是因为当R4收到再封装的以31.31.45.4为目标的IP包时,需要查看VRF路由表确定该数据包是发送给R4本地的

②静态缺省路由

R5(config)#ip route 0.0.0.0 0.0.0.0 tunnel 0


R4(config)#ip route 0.0.0.0 0.0.0.0 fa0/0 31.31.34.3

③NAT

R4(config)#interface fa1/0

R4(config-if)#ip nat outside

R4(config-if)#interface tunnel 0

R4(config-if)#ip nat inside

!

R4(config)#access-list 1 permit 10.10.10.10 0.0.0.0

R4(config)#ip nat inside source list 1 interface fa1/0 overload

(5)流量返回

①BGP路由通告

R3(config)#router bgp 234

R3(config-router)#network 31.31.34.0 mask 255.255.255.0

②PE转发返程流量

R2(config)#ip route 10.10.10.10 255.255.255.255 tunnel 0

这里需要注意的是,经过NAT后的IP packet将检查Global Routing Table而不会查看VRF路由表

③CE转发返程流量

R5(config)#ip route 10.10.10.10 255.255.255.255 fa0/0 31.31.45.4