TCP UDP
IP
以太 PPP
以上都是转发面技术 MPLS也是转发技术
OSPF 、BGP、ISIS都是控制面技术
MPLS VPN的组网方式
Intranrt:站点与站点之间的访问,最基本的。
Extranrt:分支与总部访问,分支与分支不访问。
Hub&Spoke:分支与总部访问,分支与分支访问需经过总部。
MCE:可以划分多个VPN实例,每个实例对应一个VPN用户或VPN业务,不同VPN之间相互隔离,把不同的接口与VPN绑定,就不用再为每个VPN用户单独买一台CE设备了。
Hub&Spoke场景的MPLS VPN
方式一:Hub-CE与PE,Spoke-CE与PE使用EBGP
方式二:Hub-CE与PE,Spoke-CE与PE使用IGP
方式三:Hub-CE与PE使用EBGP,Spoke-CE与PE使用IGP
无法Hub-CE与PE使用IGP,Spoke-CE与PE使用EBGP来部署Hub&Spoke
PE-CE之间的路由选择问题
环路问题:
ISIS:
如果1-4和2-4使用ISIS协议,如果5产生一条路由5.5.5.5,那么会发给R3,R3会发给R1和R2。然后R1和R2又会通过ISIS发给R4。 ——R5-R3-R1(R2)-R4
假设R1先发给了R4,那么R4又会发给R2,那么R2会从BGP和ISIS同时学到R5的一条路由,R2因为优先级的原因,下一跳为R4。那么R2又会通过ISIS发给了R1,R1此时会存在两个去往5.5.5.5的路由。R1-R3-R5,R1-R2...
假如R5的5.5.5.5路由失效,会通告给R3,R3通告给R1和R2。但是此时R1还有通过ISIS获取到的路由,是R2发来的,R2也有通过ISIS获取到的路由,是通过R4发来的。那么此时如果R2去pingR5的路径会造成环路:R2-R4-R1-R2-R4-R1。
OSPF:
为了保留OSPF的路由信息,BGP新增了携带OSPF属性的团体属性:
Domain ID:域标识符,区分不同的域
Route Type:包含被引入到BGP的OSPF路由的区域ID和Route Type
- Area ID:PE的VPN实例的OSPF进程与CE建立邻接关系的区域号。
- Route Type:被引入的路由类型
Domain ID:
域ID包含在该进程生成的路由中,在把OSPF的路由引入进BGP的时候,域ID会被附加到VPNv4路由上,作为BGP的扩展属性传递出去。
在PE把BGP的路由引入OSPF时,BGP路由携带的Domain ID如果相同,则认为两个站点属于同一个OSPF域。若不同,则认为不在同一个域。缺省值为0。
Domain ID如果相同,1类2类的LSA,在远端收到后会变为3类LSA。5类7类LSA,远端收到后依然为5类7类。
Domain ID如果不同,1类2类的LSA,在远端收到后会变为5类LSA。5类7类LSA,远端收到后依然为5类7类。
防环:
DN位防环:
PE将3类、5类、7类LSA发布给CE时,都会把DN位置位为1,其他PE收到置位的LSA时,会直接忽略。
dn-bit-set disable 命令仅支持在OSPF私网进程下配置,并且只在PE上生效。意思是不生成置位了。
dn-bit-check disable 命令可以控制对端的PE路由器不检查DN位是否置位了。
Route-Tag:
防止5类,7类路由环路。
PE在根据收到的BGP的私网路由生成5/7类LSA时,携带VPN路由标记。当PE发现LSA的VPN路由标记和本地配置的一样,就会忽略这条LSA,因此可以避免上述环路。
Sham Link
为了一些冗余,在CE和CE之间专门拉了一根专线,连接起来,通过OSPF发布,但由于这是通过1类,2类LSA学习到的,MPLS VPN学到的是通过3类学到的,由于1类,2类优于3类LSA,所以CE之间会一直走这条链路,为了能够让CE之间继续走MPLS VPN网络,可以通过配置Sham Link来实现
Sham link被看成是两个VPN实例之间的链路,链路的两端是PE上的端点地址,伪连接的源地址和目的地址使用32位掩码的Loopback接口地址,该Loopback接口需要绑定到VPN实例中,并通过BGP发布。
BGP
AS号替换
假设两台CE站点是同一公司,使用同一个AS号,那么CE与PE之间部署EBGP,传递到对端CE时,会因为AS号重复而丢弃该路由。所以可以在部署EBGP时使用peer x.x.x.x substitute-as命令,使能AS替换功能,可以把重复的那个AS号替换成PE自己的AS号,这样对端CE就不会因AS号重复丢弃路由了。
peer allow-as-loop也可以实现这种功能。
peer allow-as-loop命令用来配置本地AS号的重复次数。可以让AS号重复出现多少次。
注意:在Hub&spoke架构中,如果CE-PE之间部署EBGP,由于hub站点需要收到路由之后,第二次发给hub-PE的路由表中,所以在这个场景下,需要配置peer allow-as-loop来实现hub站点的AS号可以出现多次。
SoO
由于AS号替换和允许AS号出现多次的功能,造成了AS_Path防环功能的丢失,造成了环路隐患。
在CE双归属的场景中,假如两台CE都在同一个站点内,为IBGP邻居关系。CE1通过EBGP传递给PE路由,PE又会发给CE2,而CE2已经通过IBGP邻居CE1获取到了该路由,那么就会造成环路。可以在PE上使用peer x.x.x.x soo 100:100命令,给路由标识上起源站点100:100,那么再通告给CE时,会检查起源站点soo属性是否与配置的soo相同,如果相同不通告,不同则通告。
Hub&Spoke架构的路由环路问题
在这张拓扑图上,R1有两张VRF表,一张in方向的,一张out方向的。
in方向的路由表:
out方向的路由表
在out方向路由表中,没有25.1.1.0和36.1.1.0的路由?而in方向有,这是因为在MCE(多CE)设备上部署OSPF VPN多实例时,如果有Type3、Type5或Type7 LSA中设置DN Bit,就会导致这些路由无法计算,因为OSPF进行路由计算会进行防环路检测。所以在out方向没有这两条路由。
通过在ospf out实例视图中,配置vpn-instance-capability simple命令,用来禁止路由环路检测,直接进行路由计算。之后就可以在out方向中看见这两条路由了。
undo vpn-instance-capability命令用来使能DN位检查,以防止发生路由环路。缺省情况下,使能路由环路检查。
一般不建议配置,配置之后会有一定的影响,详情参见手册 1