MPLS VPN Extranet 模型
一、Extranet模型
1.1、相互覆盖型
需求一:绿色站点为公司A
粉色站点为公司B
公司A、B内部可以通信、公司A、B之间的站点不允许通信
需求二:额外实现R3可以和R4通信
注意:PE-CE全部使用bgp
1.1.1、思路分析
需求一:
先将3个粉色站点看成一个mpls vpn,3个绿色站点看成一个mpls vpn
如何实现同色站点之间互通?只需要控制三个站点对应的PE vrf 里导出导入的RT值相等即可(相等就可以允许导入导出路由,有路由就通)
R3、R5、R7 RT = 100:357(RD三个站点必须不同,为了区分相同私网路由)
R4、R6、R8 RT = 100:468
注:同公司三个站点看成3对 1站点对1站点的intranet 模型,不是hub-spoke模型,hub spoke只有中心到两个分支的vpn,没有分支之间的vpn
需求二:
在需求一配置不变的基础上,通过在PE连接R3和R4的vrf里增加新的导入导出RT值,实现R3和R4可以额外互访(每一个vrf可以导出导入多组RT值)
R3、R4增加导入导入RT值 100:34
核心网IGP、mpls、mpls ldp、MP-bgp邻居配置(省略)
CE bgp配置省略(全按照路由器的ID起bgp as号指邻居,宣告环回口路由)
1.1.2、配置PE vrf、bgp
R1
ip vpn-instance r3 //创建vrf r3
ipv4-family
route-distinguisher 100:3 //vrf r3导出的ipv4路由 RD值100:3
vpn-target 100:357 100:34 //vrf r3 导入导出的RT 100:357 + 100:34
interface GigabitEthernet0/0/1
ip binding vpn-instance r3 //接口进入vrf r3
ip address 13.1.1.1 255.255.255.0
bgp 100
ipv4-family vpn-instance r3
peer 13.1.1.3 as-number 3 //bgp 100的vrf r3 指定R3 ebgp邻居
ip vpn-instance r5
ipv4-family
route-distinguisher 100:5
vpn-target 100:357
interface GigabitEthernet0/0/2
ip binding vpn-instance r5
ip address 15.1.1.1 255.255.255.0
bgp 100
ipv4-family vpn-instance r5
peer 15.1.1.5 as-number 5
ip vpn-instance r6
ipv4-family
route-distinguisher 100:6
vpn-target 100:468
interface GigabitEthernet2/0/0
ip binding vpn-instance r6
ip address 16.1.1.1 255.255.255.0
bgp 100
ipv4-family vpn-instance r6
peer 16.1.1.6 as-number 6
R2
ip vpn-instance r4
ipv4-family
route-distinguisher 100:4
vpn-target 100:468 100:34
interface GigabitEthernet0/0/1
ip binding vpn-instance r4
ip address 24.1.1.2 255.255.255.0
bgp 100
ipv4-family vpn-instance r4
peer 24.1.1.4 as-number 4
ip vpn-instance r7
ipv4-family
route-distinguisher 100:7
vpn-target 100:357
interface GigabitEthernet0/0/2
ip binding vpn-instance r7
ip address 27.1.1.2 255.255.255.0
bgp 100
ipv4-family vpn-instance r7
peer 27.1.1.7 as-number 7
ip vpn-instance r8
ipv4-family
route-distinguisher 100:8
vpn-target 100:468
interface GigabitEthernet2/0/0
ip binding vpn-instance r8
ip address 28.1.1.2 255.255.255.0
bgp 100
ipv4-family vpn-instance r8
peer 28.1.1.8 as-number 8
1.1.3、验证连通性
R3查看路由表
R4查看路由表
R3上访问R5、R7 – 通
R3访问R6、R8 – 不通
R3访问R4– 通
1.1.4、总结
1、mpls vpn各站点能否通信主要取决于CE能否学到路由
2、能否学到路由主要依靠RT值设计,RT相等的vrf对应的CE之间可以学到路由
3、覆盖型vpn:相同公司vpn可以通信 – 设计相同公司的站点RT值相同
额外分支之间通信需求 – 单独设计多导出导入一对RT值即可
4 RT:vpn-target 100:1 相当于这个vrf可以导入 100:1的路由,同时也导出100:1的路由
1.2、中心服务型
需求:绿色站点之间可以及通信,粉色站点之间可以通信(粉绿之间不能通信)。
紫色站点(中心)可以和任意其余站点通信
PE-CE之间全部使用bgp
1.2.1、思路分析
通过RT设计,完成需求,并使后续有一定扩展性:
将各路由分成3部分:
A、粉色站点R5、R7设计一组导入、导出的RT:100:57 – 实现R5、R7互通
B、绿色站点R6、R8设计一组导入、导出的RT:100:68 – 实现R6、R8互通
上述实现分支站点彼此通信和隔离
C、所有分支(R5 – R8)设计单独导出RT:100:100 – 给总部发送分支路由
D、总部(R3、R4)设计导入导出RT:100:34 – 给所有站点发送总部路由
E、所有分支站点(R5-R8)单独导入RT 100:34 – 接受总部路由
F、总部(R3、R4)单独导入RT:100:100 – 接受分支路由
简单说明:绿色站点看成标准1对1的 mpls vpn
粉色站点看成标准1对1的mpls vpn
绿色、粉色站点单独导出一个RT给总部,再导入总部导出的RT
总部导出一个RT给分支,再导入分支导出的RT
实验最终状态:
R5、7:导入导出 100:57,单独导入100:34(收总部),单独导出100:100(给总部自己路由)
R6、8:导入导出 100:68,单独导入100:34(收总部),单独导出100:100(给总部自己路由)
R3、4:导入导出100:34(给分支自己路由),单独导入100:100(收分支)
核心网IGP、mpls、mpls ldp、MP-bgp邻居配置(省略)
CE bgp配置省略(全按照路由器的ID起bgp as号指邻居,宣告环回口路由)
1.2.2、配置PE vrf、bgp
R1
ip vpn-instance r3
route-distinguisher 100:3
vpn-target 100:34 export-extcommunity //为所有站点发送自己路由
vpn-target 100:34 100:100 import-extcommunity //接受R4、所有分支路由
interface GigabitEthernet0/0/1
ip binding vpn-instance r3
ip address 13.1.1.1 255.255.255.0
bgp 100
ipv4-family vpn-instance r3
peer 13.1.1.3 as-number 3
ip vpn-instance r5
route-distinguisher 100:5
vpn-target 100:57 100:100 export-extcommunity //给R7、R3、R4发送路由
vpn-target 100:57 100:34 import-extcommunity //接受R7、R3、R4的路由
interface GigabitEthernet0/0/2
ip binding vpn-instance r5
ip address 15.1.1.1 255.255.255.0
bgp 100
ipv4-family vpn-instance r5
peer 15.1.1.5 as-number 5
ip vpn-instance r6
route-distinguisher 100:6
vpn-target 100:68 100:100 export-extcommunity
vpn-target 100:68 100:34 import-extcommunity
interface GigabitEthernet2/0/0
ip binding vpn-instance r6
ip address 16.1.1.1 255.255.255.0
bgp 100
ipv4-family vpn-instance r6
peer 16.1.1.6 as-number 6
R2
ip vpn-instance r4 //创建vrf 对接R4
route-distinguisher 100:4
vpn-target 100:34 export-extcommunity
vpn-target 100:34 100:100 import-extcommunity
ip vpn-instance r7 //创建vrf 对接r7
route-distinguisher 100:7
vpn-target 100:57 100:100 export-extcommunity
vpn-target 100:57 100:34 import-extcommunity
ip vpn-instance r8 //创建vrf 对接r8
route-distinguisher 100:8
vpn-target 100:68 100:100 export-extcommunity
vpn-target 100:68 100:34 import-extcommunity
interface GigabitEthernet0/0/1
ip binding vpn-instance r4
ip address 24.1.1.2 255.255.255.0
interface GigabitEthernet0/0/2
ip binding vpn-instance r7
ip address 27.1.1.2 255.255.255.0
interface GigabitEthernet2/0/0
ip binding vpn-instance r8
ip address 28.1.1.2 255.255.255.0
bgp 100
ipv4-family vpn-instance r4
peer 24.1.1.4 as-number 4
ipv4-family vpn-instance r7
peer 27.1.1.7 as-number 7
ipv4-family vpn-instance r8
peer 28.1.1.8 as-number 8
1.2.3、验证连通性
R3(中心)查看路由表 – 有所有站点路由
R5(粉色)站点查看路由表 – 有R7、R3、R4路由
R6(绿色)站点查看路由表 – 有R8、R3、R4路由
R3 访问R4(总部)、R5(粉色)、R6(绿色)
R5访问R7(粉色内部通信)
1.3、网管中心型
需求:绿色站点之间可以随便互访
粉色站点之间可以随便互访
R3、R4(总部)之间可以互访
R3、R4可以访问所有分支loopback0,但不能访问loopback1
1.3.1、思路分析
通过RT值的控制实现需求
相比上一个实验的中心服务型实现R3、R4能够访问分支所有路由的基础上,需要修改的地方就是PE vrf接受到CE的所有路由时,不要将所有CE路由都导出成给总部接收的RT(100:100) — 不能vrf下vpn-target 100:100
PE vrf 使用route-policy导出,实现vrf 接受到的CE路由,只有被route-policy匹配的路由打上100:100导出,不匹配的剩余路由正常放行。
最终RT状态:
R3、R4(中心) – 所有路由 导入 100:100(接收分支路由)
所有路由 导入/导出100:34(发送总部路由)
R5、R7(绿色) – 所有路由 导入/导出100:57 (同公司站点通信)
所有路由 导入 100:34 (接受总部路由)
route-policy匹配路由 导出 100:100 (发送loopback0 给总部)
R6、R8(粉色) – 所有路由 导入/导出100:68(同公司站点通信)
所有路由 导入 100:34 (接受总部路由)
route-policy匹配路由 导出 100:100 (发送loopback0 给总部)
注:相比中心服务型总部到分支全通,仅仅需要修改分支导出的RT 100:100,用route-policy控制导出,其他配置与中心服务型相同
1.3.2、基础配置(省略)
核心网IGP、mpls、mpls ldp、MP-bgp邻居配置(省略)
CE bgp配置省略(全按照路由器的ID起bgp as号指邻居,宣告环回口路由)
PE bgp 指定邻居配置(省略)
1.3.3、PE VRF RT 配置
R1
ip ip-prefix 5.5 permit 5.1.1.1 32 //匹配R5 lo0
ip ip-prefix 6.6 permit 6.1.1.1 32 //匹配R6 lo0
route-policy r5 permit node 10 //创建route-policy 动作放行
if-match ip-prefix 5.5 //被前缀列表5.5匹配的路由
apply extcommunity rt 100:100 additive //增加rt属性(原有导出值保留)
route-policy r5 permit node 100 //剩余路由放行
route-policy r6 permit node 10
if-match ip-prefix 6.6
apply extcommunity rt 100:100 additive
route-policy r6 permit node 1000
ip vpn-instance r5
ipv4-family
route-distinguisher 100:5
export route-policy r5 //调用route-policy 匹配的路由导出rt 100:100
vpn-target 100:57 export-extcommunity
vpn-target 100:57 100:34 import-extcommunity
ip vpn-instance r6
ipv4-family
route-distinguisher 100:6
export route-policy r6 //调用route-policy 匹配的路由导出rt 100:100
vpn-target 100:68 export-extcommunity
vpn-target 100:68 100:34 import-extcommunity
R2
ip ip-prefix 7.7 permit 7.1.1.1 32
ip ip-prefix 8.8 permit 8.1.1.1 32
route-policy r7 permit node 10
if-match ip-prefix 7.7
apply extcommunity rt 100:100 additive
route-policy r7 permit node 100
route-policy r8 permit node 10
if-match ip-prefix 8.8
apply extcommunity rt 100:100 additive
route-policy r8 permit node 100
ip vpn-instance r7
ipv4-family
route-distinguisher 100:7
export route-policy r7 //调用route-policy 匹配的路由导出rt 100:100
vpn-target 100:57 export-extcommunity
vpn-target 100:57 100:34 import-extcommunity
ip vpn-instance r8 //进入vrf 8
ipv4-family
route-distinguisher 100:8
export route-policy r8 //调用route-policy 匹配的路由导出rt 100:100
vpn-target 100:68 export-extcommunity
vpn-target 100:68 100:34 import-extcommunity
1.3.4、验证连通性
R2的mpbgp路由表中查看R1传过来的5.5.5.5的路由RT值
display bgp vpnv4 route-distinguisher 100:5 routing-table 5.1.1.1
注:5.1.1.1有两个RT值:
RT - 100:100 是R1的vrf r5中 的route-policy匹配,执行了导出100:100动作。
RT – 100:57是R1的vrf r5下面的vpn-target 100:57 export命令来的
说明 route-policy中的“addtive”是添加新RT,保留原有RT的含义
R2的mpbgp路由表中查看R1传过来的5.5.5.5的路由RT值
display bgp vpnv4 route-distinguisher 100:5 routing-table 5.5.5.5
注:5.5.5.5路由是怎么来的?为什么R2都收到了,而R3、R4收不到此跳路由?
5.5.5.5是因为R1的vrf route-policy 放行空语句放行的,而R1的vrf 里面有vpn-target 100:57 export,所以会携带100:57
R2收到了,但R3,R4对应的PE vrf里面没有导入100:57的路由
R3(中心)查看路由表 – 有总部路由,有所有分支lo0路由,没有lo1的
R5(粉色)查看路由表 – 有粉色站点所有路由,有总部路由
R6(绿色)查看路由表 – 有绿色站点所有路由,有总部路由
R3 访问R5(粉色站点)lo0 – 通,lo1 – 不同,R4 – 通
R5访问R7(分色站点)lo0 – 通,lo1 – 通,R6(绿色站点)- 不通