好的,我们来说这个部署HUB-Spoke的MPLS这个场景。这个场景也是我们在广域网里面使用的MPLS VPN一个典型的案例,也是我们现在大家未来考过IE,甚至现在备考IE,我们锻炼的内容中,有第三部分,就是我们的MPLS广域网部分,用的也是这个场景。然后我们今天主要会去介绍一下MPLS VPN这个技术,它典型使用了哪些技术,然后我们还会去做一个实操,把理论和实操相结合,带大家把MPLS VPN的HUB-Spoke这个技术完整过一遍。然后我们首先来看一下前言,我们的前言说的是VPN,对吧?VPN它叫虚拟专用网络,是指在一个公共网络中实现虚拟的专用网络。然后我们今天说的这个MPLS VPN,主要是指三层的VPN技术。然后我们今天这节课主要会介绍什么是MPLS VPN的基本概念,以及它的工作过程,还有典型的配置方式。然后我们来看一下MPLS的定义。我们的MPLS IP VPN一般是由运营商搭建,然后我们去购买运营商的VPN服务,它可以实现我们这些用户之间的路由传递,我们可以实现不同站点之间通过MPLS VPN的骨干网进行通信。然后我们今天第一个要学习的就是MPLS VPN的网络架构。我们首先需要知道MPLS VPN这个网络架构中,这些设备的命名,一般就是我们的CE设备,也就是客户端设备,就是你的站点的边缘设备,连接着运营商MPLS VPN的边缘设备。这个边缘设备,一个是CE,就是站点的边缘设备;还有PE设备,就是MPLS VPN骨干网中连接CE的设备,我们叫它PE。然后还有P设备,这个P设备就是MPLS骨干网里面的设备。其中这个P设备和PE设备一般都是由运营商搭建的,而CE设备就是你自己,也就是客户这边自己的设备。然后我们这个MPLS VPN的一个优点就是,大家做实验的时候也能体会到,就是不同站点之间,想通过骨干网进行通信的情况下,基本上是感知不到MPLS VPN的存在的,因为它只需要将路由信息传递给MPLS VPN的骨干区域就可以了,然后由MPLS VPN将这个路由进一步传递。这一点我们做实验的时候还会给大家详细说。然后我们这个MPLS VPN的技术架构,主要会使用到哪些技术来实现呢?第一个就是,MPLS VPN不是单一的VPN技术,它是多种技术的融合,通过多种技术的结合,实现MPLS VPN。第一个就是我们学习的MP-BGP,对吧?MP-BGP在这里主要负责什么呢?就是负责不同站点之间路由信息的交换。比如说,我们这边有一个站点,你这边站点发送路由过来之后,这个路由如何传递给远端的站点呢?我们这里就可以使用MP-BGP。        因为MP-BGP的扩展性比较强,它可以传递非常多的路由信息,所以说使用MP-BGP是比较合适的。第二个就是LDP,这个LDP负责什么呢?它负责MPLS VPN中P设备之间隧道的建立,这个隧道就是基于LDP的,数据转发的时候,通过LDP隧道,实现站点之间的互访。第三个是VRF,我们的VRF负责PE设备上VPN用户的管理,也就是PE和CE之间,我们可以启用不同的VRF,这个VRF大家学习过的应该也知道,我们又把它简称为VPN实例。VPN实例,你也可以理解为,在PE设备这个路由器上,虚拟出了多个小路由器,每个小路由器对接不同的站点,并且不同的VPN实例之间,它们的路由表等都是完全独立的,所以不会相互影响。然后我们还需要使用哪些技术呢?还有静态路由,你可以使用静态路由、IGP和BGP,它们负责什么呢?就是负责CE站点,也就是客户站点和骨干网PE之间的路由传递。所以说,我们主要的部署重点还是在MPLS骨干网的搭建上,我们需要使用MP-BGP、VRF还有LDP来建立MPLS骨干网。然后是站点部分,你的用户站点和骨干网边缘的PE设备之间,只需要运行静态路由,或者IGP、BGP就可以了。所以说,对于我们运维人员来说,要求也是比较低的,无论是配置OSPF做对接,还是用静态路由做对接,都可以实现。然后我们今天主要会做整个HUB-Spoke的实验,我们会从CE设备到PE设备之间的路由传递,以及PE设备到远端PE设备的路由传递,再到路由传递到远端相同VPN的站点,最后实现整个网络的互通,一步步操作。然后我们MPLS常见的组网,不仅有HUB-Spoke组网,还有Intranet和Extranet这三种典型的组网,其中我们今天主要说的就是HUB-Spoke组网。第一个是Intranet组网,它的要求是,相同VPN内的用户站点之间,可以相互访问,不同VPN的站点之间不能相互访问。比如说,我们这里的CE1,它是用户X的站点A,上面的CE3也属于用户X,是站点B(分支站点),如果你使用的是Intranet组网方式,那么相同VPN的站点之间是可以直接互访的。但如果你CE1(用户X的站点A)想去访问CE4(用户Y的站点),因为属于不同VPN,就不能直接互访,也不能通过P设备直接访问,这就是Intranet组网,同一VPN用户站点可互访,不同VPN用户之间不能互访。第二个是Extranet组网,这个Extranet组网的特点是,我希望我这个站点里的部分资源,可以分配给其他VPN的用户访问。            比如说,我们这个站点C(CE4)是用户Y的站点D,这个站点内部有些资源,需要用户X的站点A访问,那么即使我们不属于同一个VPN,也可以通过Extranet组网,让部分资源实现跨VPN访问。第三个就是HUB-Spoke组网,我们HUB-Spoke组网的场景是,我们希望分支站点之间的通信,不直接进行,而是必须经过总部站点(HUB CE)。比如说,你有两个分支站点,都属于同一个VPN,我不希望这两个分支站点直接互访,它们的所有流量必须经过总部站点(HUB CE)转发一遍,这样做的好处是可以监控所有站点之间的流量,实现分支站点通过总部站点进行交互。这就是我们的HUB-Spoke组网。我们刚才说的这三种模型,它们的主要区别,等会儿我们会通过介绍路由的RT值来讲解,通过RT值来实现不同组网的需求。第一个,我们来学习一下MPLS VPN的路由发布。我们刚才简单介绍了三种模型,接下来要说的MPLS VPN路由发布,就是我们站点之间要实现通信,必须要有路由传递,所以我们现在需要将站点A里面的路由传递到远端的站点B,中间就是通过MPLS VPN里面的MP-BGP来实现传递的。我们这个路由的传递主要分为三个部分:第一个是本地CE设备到入口PE设备,将本地路由传递给入口PE;第二个阶段是入口PE到远端的出口PE的路由传递;然后第三个阶段是从出口PE到远端的CE设备。整个过程,我们的实操都会全部涵盖到。然后我们这里先说说本地CE到PE,以及远端PE到CE的路由交互,这里的路由交互是比较简单的,你使用BGP、IGP(比如OSPF)或者静态路由都可以,只需要将           路由能够传递给PE设备就可以了。所以说这里比较简单,我们的重点还是在MPLS VPN骨干网内部,路由信息是如何传递的。第一个问题就是,你通过OSPF将路由传递给PE1之后,可能会出现一种情况,就是地址重叠的情况。什么是地址重叠呢?就是用户X的站点和用户Y的站点,使用了相同的IP地址段,那么如果我在PE1上只使用一个路由表,是不是就会学习到两个相同的路由?如果你使用OSPF,它会进行优选比较,根据优先级、开销等,如果优先级和开销一样,就会做等价负载分担。然后,为了实现不同站点之间路由的隔离,解决地址重叠的问题,我们就会使用到VRF。我们的VRF可以实现什么呢?就是在PE1设备上,虚拟出两个VPN实例,一个VPN实例对接G0/0接口,一个对接G0/1接口,然后使用这个VPN实例与对应的站点之间运行OSPF、IGP、BGP或者静态路由都可以。我们的VRF,叫虚拟路由转发,又称为VPN实例,这是我们MPLS架构当中的一个关键技术,它可以实现路由的隔离,每一个VPN实例都有独立的路由转发表,所以可以实现PE设备上不同VPN实例的路由表独立,与公网的路由表也隔离开,并且互不影响。这样就可以解决地址重叠的问题,就好比在PE设备上虚拟出两台小路由器,分别对接不同的站点,各自管理自己的路由。这个应该是比较好理解的。然后我们也说了,通过VRF实例隔离路由表,就可以区分地址重叠的问题了。接下来我们还需要学习一个,就是RD值。这个RD值,是为了解决什么问题呢?就是路由在传递的过程中,比如传递给PE2的时候,我们主要使用MP-BGP来传递路由,如果你通过MP-BGP传递了两个相同的IP路由,那么PE2设备,大家学习过BGP的都知道,BGP会根据选路原则,选取更优的路由。为了在MP-BGP传递路由的时候,区分这两个相同的IP路由,我们就需要使用RD值,就是给这个路由打上一个RD值。这个RD值,我们叫它路由标识符,主要作用就是区分路由,用于区分不同VPN的相同IP路由。        然后它做了哪些扩展呢?就是MP-BGP在传统BGP-4的基础上,做了两个路径属性的扩展。第一个是MP_REACH_NLRI属性,它主要用于传递可达的VPNv4路由信息,发布下一跳可达的路由;第二个是MP_UNREACH_NLRI属性,它用于撤销不可达的VPNv4路由信息。这两个扩展属性,大家如果学习过MP-BGP,应该是非常熟悉的。然后我们刚才说了,我们可以通过VPN实例,实现CE设备到PE设备的路由区分,然后通过MP-BGP,将VPNv4路由从本地PE传递到远端PE。但远端PE也有不同的VPN实例,那么我如何将从远端PE学习到的VPNv4路由,正确导入到对应的VPN实例里面呢?是导入到上面的VPN实例,还是下面的VPN实例?为了解决这个问题,我们又引出来一个RT值。这个RT值主要用于什么呢?主要用于将路由正确引入到不同的VPN实例中。就是在MP-BGP传递VPNv4路由的时候,远端PE需要将收到的VPNv4路由,正确导出到对应的VPN实例,所以我们需要使用一个叫VPN标签(也简称路由标签,即RT值),来控制路由信息的发布和接收。也就是说,在本地PE发布路由的时候,给这个路由携带一个RT值,这个RT值需要和远端PE上对应的VPN实例所配置的RT值一致,这样远端PE才能将这个路由正确接收,并导入到对应的VPN实例中。