骨干网是属于当仁不让的大型网络,所以骨干网内使用的技术也就要比局域网复杂一些。
除了局域网内常用的二层技术VLAN、Trunk,三层技术OSPF、静态路由,骨干网还包含一些链路监测技术,IP监测技术,还有交换路由技术内比较难以掌握的BGP、MPLS VPN等高级技术。
你可以把局域网理解为是你家所在的小区,把骨干网理解为是城市道路或者高速公路。一般来说,小区里面供汽车走的路基本都比较窄对吧?但是如果你把城市道路也修得那么窄?你那城市那不天天堵车啊?那些人不天天骂人啊?
骨干网如何传递路由
第一个,骨干网因为范围大,承载的业务量多,所以路由在骨干网内传递的时候,你不可能让它完全收敛,因为那也是不可能的。所以,骨干网内传递路由,使用的协议是BGP。
BGP(Border Gateway Protocol,边界网关协议)是一种外部网关路由协议,该路由协议可以用于AS之间的路由传递。BGP与IGP相比有一个不同点:IGP着重与发现和计算路由,用于路由收敛;但是BGP的主要功能是路由的传递和最优路径的选择,并不负责路由收敛。所以,再AS内部需要将路由收敛好了以后,才能用BGP传递出去,这样才能达到全网互通的效果。
BGP有着如下特点:
✔ BGP是一种增强型的距离矢量路由协议;
✔ BGP有可靠的路由更新机制,BGP邻居的建立需要建立TCP连接;
✔ 支持CIDR和VLSM,有非常丰富的Metric度量方法;
✔ 从设计上就可以避免环路;
✔ 有灵活多变的路由策略和路由过滤方法。
如图所示的两个AS(自治系统autonomous system,简称AS)内,AS1可以选择OSPF,AS2可以选择EIGRP,它们之间是相互不干扰的,但同时,AS1内的路由和AS2的路由默认是不会相互传递的。但是互联网又需要全网通信呢?如何让AS1内部的路由和AS2内部的路由相互传递呢?这里就必须事先说明以下:AS内部使用的路由协议和AS之间使用的路由协议是不一样的。
在一个AS内部运行的路由协议称为“内部网关路由协议”,简称IGP。IGP包括静态路由、RIP、OSPF、EIGRP、IS-IS等,它的功能着重于发现路由与计算路由,负责网络的收敛。
在AS之间运行的路由协议称为“外部网关路由协议”,简称EGP,目前有且仅有一种外部网关路由协议,就是BGP。
所以说,在一个AS内部,使用IGP将网络收敛以后,再通过BGP传递给其他的AS,就可以实现以下两个需求了:
1.网络可以快速有效的收敛;
2.可以让一个超大网络(例如Internet)的所有路由器都获得全部路由。
学过OSPF的朋友可能知道,OSPF中有ASBR(自制系统边界路由器)的说法。OSPF中的ASBR指的是一台路由器既运行了OSPF又运行了其他路由协议,即AS是用路由协议进行区分——一个AS里只运行一个路由协议。可以说,OSPF中的AS概念是非常模糊的。
但是BGP里面的AS不同,BGP里的AS指的是网络的收敛范围。在一个AS内部可以用多种IGP,只要能收敛即可,BGP的AS是一个相对清晰的概念。
每个BGP路由器都只能属于一个AS,不同的AS用AS号码来进行区分。这个AS号码是有IANA进行分配的。AS号码的长度是2个字节,即十进制的范围是1—65535。其中1—64511为公网的AS号码,只能用于互联网,并且全球唯一;64512-65535为私有的AS号码,可以被企业重复使用,但是不能传递到互联网。
这类似与公网IP地址与私有IP地址,如果一台使用私有IP地址的电脑想要访问Internet,需要用NAT将私有IP地址转换为公网IP地址;而使用了私有AS号码的BGP路由器要与公网AS号码的BGP路由器建立邻居,需要使用BGP内的特殊技术,即过滤掉私有的AS号码。
需要注意的是:一台BGP路由器只能属于一个AS。
骨干网在划分BGP的AS
目前骨干网在划分BGP的AS时,大部分都会采取如下思路:分级划分,层次包围
分级划分这个概念比较容易理解,我们以一个省内的骨干网为例:
1.省级的骨干网为一级骨干网使用的AS号码,都会采用100的倍数。例如AS 65100,AS 65200;
2.地区级的二级骨干网使用的AS号码,可能根据电话区号也可以根据车牌顺序。
比如,贵州省级骨干网的AS号码是65100,那么根据电话区号的排列顺序,依次是贵阳0851,遵义0852,安顺0853……,于是,AS号码便可以做这样的分配:贵阳 AS 65101,遵义 AS 65102,安顺AS 65103……
3.那么层次包围又是什么意思呢?那就是一级骨干网在中心的位置作中枢,然后下挂二级骨干网。二级骨干网必须和一级骨干网互连,二级骨干网之间没有直接联系。
BGP是需要建立手动邻居后才能传递路由的,在建立BGP邻居的时候,如果两个运行BGP的路由器,用的是相同的AS号码,那它们之间建立的邻居就叫做iBGP邻居;反之如果两个运行BGP的路由器,用的是不同的AS号码,它们之间建立的邻居就叫做eBGP邻居。
骨干网的路由隔离与传递
先说一下这个场景:
在这个图上,客户站点1要和客户站点3交互路由,客户站点2要和客户站点4交互路由。
但是呢,客户站点1和客户站点2存在10.112.10.0/24路由冲突的问题。这个时候,肯定不能把路由直接发给骨干网,否则一定是通信故障。
要解决这个“路由重叠”的问题,其中一个解决方案就是“V PN,虚拟专网”。但是使用V P N的话,如果直接让客户站点1和客户站点3建立,客户站点2和客户站点4建立。对这几个客户站点来说,未免太复杂了一些,这会大大降低客户的体验值。
而且,让客户直接在出口站点上建“V PN”,也是一种“静态的V PN”,无法根据变化多端的骨干网环境及时作出调整。
所以,为了解决客户的易用性问题,同时又能解决地址重叠,IP冲突的问题,MPLS V PN技术就应运而生了呗。MPLS V PN解决了三个问题
等会!不是BGP还没说完,怎么又说到MPLS V PN上了呢?
实际上,要实现MPLS V PN,还真的就需要BGP,而且还是iBGP呢!为什么呢?这里捷哥一点一点的给大家解析出来。
先说第一个,重叠的路由如何隔离的问题。
路由要实现隔离,使用的是一个技术,VRF( Virtual Routing and Forwarding )虚拟路由转发表,华为和H3C把它叫做V PN-instance。每个VRF可以理解为一台虚拟逻辑路由表,每个VRF内,维护一个和其他VRF逻辑隔离的路由表。
当路由从一个不带VRF的设备传递到带VRF的设备,并成功进入到对方的VRF路由表后,就会变成这个样子。看下方的图:
OK,地址重叠和冲突的问题,用VRF就可以解决。但是下面要解决的一个问题,路由在骨干网中用什么协议传最好呢?
首先大家要明白一个道理:骨干网中路由数量多,又有VRF来进行业务区分,而且这些VRF还要相互隔离,保证一个相对的“私密性”。所以,骨干网中最佳的路由协议是BGP,而MPLS标签功能正好也可以起到V PN隧道封装的功能。
当路由传递到带VRF的PE设备上时,都会在路由前部插入该VRF所配置的RD值,从而变成V PNv4路由前缀。而进入VRF的路由,也被称为“私网路由”。
私网路由要通过BGP,从一个PE设备传递到另一个PE设备,并且保证不会被传递错误(也就是不会从VRF A传递到VRF B里面去),就需要给私网路由打上一个标记。这个标记就是RT(Route-TAG)。
RT值的格式和RD一样,但是性质完全不一样。RD是用来区分不同VRF内的路由的,而RT是BGP的扩展Community属性。
同一个VRF的路由,要在PE之间正确被传递,必须满足下图的条件:
简单的说,在骨干网并且跑MPLS V PN的环境中。不同的网络业务放在不同的VRF内,由RD值负责防止路由冲突,由RT值负责PE-PE之间的路由传递。这样,让不带VRF的CE设备接入骨干网时,只要选择好业务,接入到PE相应的VRF接口上就可以了。用户不会感知到VRF的存在,这样,也大大提升了用户对网络的体验感。
而且,骨干网内的标签交换转发功能,也大大提示了数据的传输效率。
关于这些技术细节,在正文里面会详细说明。但是有一句话可以对大家说的是: