Intranet组网
- 一个VPN中所有用户形成闭合的群体,只能进行VPN内的相互访问,不同实现不同VPN之间的通信。
- 如下图:VPN1中的Site1与Site2为一个群体,VPN2中的Site3、Site4为一个群体。
- Site1不能与Site3互通,只能与同VPN中的Site2通信。
Extranet组网
- 在多个VPN中,可将部分站点中的网络资源给其它VPN站点使用。
- 如下图:VPN2中的将部分网络资源传递给VPN1中的SIte2站点,由此Site2学习到了Site3的路由。
- 此时Site1是无法将Site3的路由加入Site1路由表的,因为Site3路由中携带了RT值从而使得Site1因无法匹配上IRT从而无法加入路由表。
Hub-Spoke组网
- 可将其中一个站点设置为Hub站点,其它站点为Spoke站点。Spoke站点互访必须通过Hub站点,常用于主公司与多个分公司网络规划中,起到主公司集中管控的效果。
- 其中Hub-PE与Hub-CE连接的两个传输通道属于不同的VPN实例,Hub-CE上不需要创建VPN实例,正常配置EBGP即可,Hub-PE上才需要进行绑定VPN实例并配置相应EBGP操作。
- 该组网中有许多注意的坑点需要注意:
- Hub-PE与Hub-CE之间需要至少存在两条链路或者两个及以上传输通道。
- Hub-PE与Hub-CE建立的EBGP邻居需要配置allow-as-loop命令,允许AS重复。
- Hub-PE与Hub-CE建立使用BGP建立邻居传递路由,使用非BGP建立邻居将有遇到其它小问题。
第一点
- 至少存在两条以上的传输通道是因为在Hub-Spoke组网中,需要有一条链路负责传入路由,另一条链路传出路由。
第二点
- 因为Spoke站点的路由来回经过Hub-PE与Hub-CE设备,已知BGP中路由传递出AS时会携带AS号,同时默认不会接收已经携带了本地AS号的BGP路由。
- 所以为了解决Hub-PE将BGP路由传递给Hub-CE之后路由无法返回的问题,需要在Hub-PE的“传出”路由的邻居上配置allow-as-loop命令,使得允许该邻居接收AS重复路由。
如何判断哪个是“传出”邻居?
- 如下图,VPN out所对应的邻居即为“传出”邻居。
第三点
- 当Hub-PE与Hub-CE之间使用IGP协议对接,将会丢失BGP路径属性最后造成网络环路情况。
- 如使用IGP-OSPF为例:
- Hub-PE建立VPN实例in与out,in实例绑定在A口,out实例绑定在B口。
- Hub-PE创建两个OSPF进程,分别绑定in与out VPN实例与Hub-CE 的OSPF进程建立OSPF邻居。
- 最终Hub-CE的OSPF进程与Hub-PE的两个OSPF建立了OSPF邻居,Hub-PE不管从in实例还是out实例向Hub-CE发送路由,都会从另一个VPN实例中学习到路由。如:Hub-PE向A口传递路由,Hub-CE从A口收到路由之后,就会从B口发出,最终Hub-PE就能从B口收到A口发送的路由,完成传递。
- 而环路的原因也正是在这里,当PE1向Hub-PE发送CE1路由。Hub-PE从in实例收到CE1路由并从A口向Hub-CE传递。
- Hub-CE从A口收到CE1路由,从B口发出。最终Hub-PE从out实例的B口收到路由向PE1、PE2发送CE1路由。
- 但是Hub-PE与Hub-CE之间是OSPF邻居,Hub-PE收到Hub-CE传来的CE1路由是不携带BGP路径属性的,故Hub-PE会把该路由当成新的BGP路由(即该CE1路由其BGP路径属性AS-Path值是空的)。
- 因为Hub-PE向PE1、PE2传递的CE1路由AS-Path值为空,故对于PE1找来去找CE1的时候,走Hub-PE比直接走Spoke-CE1更优先,而Hub-PE又得找PE1才能去CE1,故就出现了环路问题。
解决方法
- 于Spoke-PE对接Spoke-CE的BGP邻居上启用bestroute as-path-ignore命令,使得在选择最优路由时忽略AS-Path路径属性。
MAC多实例组网
不同实例路由相互引入组网
关于BGP网络的一些特殊场景
1、同VPN实例下同AS号的BGP路由传递问题
场景1:单CE情况
- 同实例下的Site1与Site2所分配的AS号相同,常规MPLS VPN组网并不能解决该路由传递问题。
- 该特殊情况下造成路由无法正常传递的原因是:AS-Path重复问题,即Site2默认不接收AS-Path已存在本地AS号的BGP路由。
- 为了解决该问题,可在两端PE上配置“AS号替换”,使得PE在将路由传递给CE时将指定AS号替换成PE本地AS号。
- ”指定AS“如何理解?
- 如下图,PE1在vpn1实例与CE1的65001建立EBGP,其”指定AS“指的就是65001。
- 除了该技术能解决之外,还有”allow-as-path“命令也能解决该问题,因为核心原因是AS重复问题,通过在CE上配置该命令忽略AS重复也能实现相同效果。
场景2:双CE情况
- 在双CE下的同实例同AS号路由传递,仅使用AS号替换将可能出现环路风险。
- 环路风险:CE1将内部路由A发送给PE1,由于PE1替换了路由A的AS-Path信息,故CE3将可以学习到路由A。对于CE3来说去往CE3不仅可以直接从内部访问,还能从EBGP的PE1上访问。当内部网络故障之后,CE3概率选择PE1为下一跳造成环路风险。
- 但这种情况发现概率较小但不代表不存在,故为了防止CE3从PE1上重新学习到内部路由,需要于PE1上配置SoO。
- Source-of-Origin 网络来源(SoO),假设PE1在对接两个CE的邻居上进行设置SoO(peer CE1 Soo 65001:1)之后。
- 此时PE1收到CE1的路由A将打上SoO=65001:1的属性,想再传递给CE2时就会因为CE2邻居也属于SoO=65001:1而不再向CE2发送CE1传来的路由A,从而阻止了路由环路的风险。
[PE1-bgp-a]
ipv4-family vpn-instance a
peer 10.1.113.1 as-number 65001
peer 10.1.113.1 substitute-as # 解决路由学习
peer 10.1.113.1 soo 65001:1 # 解决环路风险
peer 10.1.223.2 as-number 65001
peer 10.1.223.2 substitute-as
peer 10.1.223.2 soo 65001:1
2、CE侧使用OSPF组网存在的问题
场景1:两端CE侧均使用OSPF组网
- 两端均使用OSPF组网的情况下,不免会有环的问题出现。但OSPF内部也已经默认开启了一些防止环路的保护,如:DN比特位防环。
- 默认情况下已经启用了3类LSA的DN比特防环,可在OSPF进程下通过
dn-bit-set disable summary
取消该功能。 - 除了DN比特防环机制外,还有许多隐性的防环机制,可通过
vpn-instance-capability simple
命令,禁止路由环路检测,直接进行路由计算。
场景2:一端BGP一端OSPF组网
- 如图所示,缺省情况下PE2在将PE1传来的BGP vpnv4路由转换成OSPF的type5路由时,会默认打上VPN路由标签,其标记缺省情况下,标签值的前面两个字节为固定的0xD000,后面的两个字节为本端BGP的AS号(前两字节已知且固定,所以默认route-tag就是本端BGP的AS号)。
- 当PE3收到route-tag为本端BGP的AS号时,接收type5路由但不进行计算。从而防止环路风险。
3、Sham Link 后门链路
- 该OSPF VPN组网中,除了通过PE的MPLS VPN传递路由,还通过CE之间的专线建立OSPF邻居传递路由。
- 由于OSPF之间建立的OSPF邻居传递的路由优先级要高于经过MPLS VPN骨干网的区域间路由,这将导致VPN流量总是通过后门路由转发,而不走骨干网。
- CE之间专线建立的OSPF邻居,通常称为后门链路,一般只用作备份链路。
- 为了避免上述问题,可以在PE之间建立OSPF伪连接(Sham link),使经过MPLS VPN骨干网的路由也成为OSPF区域内路由,并且被优选。
- 操作思路:
- 以上图为例,于两端PE上创建一个绑定了CE用户VPN实例 1的环回口地址(PE1=1.1.1.1,PE2=2.2.2.2)
- 在PE与CE对接的OSPF VPN进程中,进入区域0,配置
shm-link 1.1.1.1 2.2.2.2
。 - 修改后门链路开销大于PE1至PE2之间的链路开销之合
ospf cost 10000
。 - 通过
display ospf sham-link area 0
检查sham link是否成功建立。
4、BGP扩展团体属性,对接OSPF属性
- 与BGP路由引入OSPF进程中一样,OSPF引入BGP中也存在属性丢失的问题。
- 当PE-CE间部署OSPF交互路由信息时,若在PE上使用标准BGP/OSPF过程(简称为BGP/OSPF互操作)互来传递路由信息,则远端PE在将BGP引入VPN实例的OSPF进程时,会直接产生Type5 LSA,不同站点都会将其他站点的路由视为自治系统外部路由(AS_external)。
- 通俗点说:CE1与CE2同属一个区域,但中间跨越了BGP如果相关OSPF属性丢失将会让CE认为对方属于不同的区域,从而影响所学习到的OSPF路由优先级。
- 为了解决标准BGP/OSPF的互操作导致的OSPF路由信息丢失的问题,BGP和OSPF都做了相应的拓展。
- Domain ID:标识和区分不同的域。
- •Domain ID需要在绑定到VRF的OSPF进程视图下使用命令domain-id配置。
- 缺省情况下,Domain ID的值为0(NULL)。
- Route Type:标识OSPF路由的Area-ID以及Route Type。
- Area-ID:PE与CE建立邻接关系的区域号。
- Route Type:被引入的OSPF路由的类型。会根据上图的规律生成相应的类型。
举个例子:
- 如上图,CE1与CE2同属一个domain ID,其次CE1与CE2相互发布各自内网的路由,故生成3类LSA传递给PE。
- PE根据上图的规律,将只生成3类LSA传递给各自的CE。