实验思路
步骤:
- 配置公网IGP互通,保证所有的设备的环回口互通: ospf1, 将loopback 0宣告进入net
- 配置公网mpls/mpls ldp 协议,存在其他PE的环回口的lsp :dis mpls ldp
- 规划公网MP-BGP协议架构: R2作为RR反射 (放在后面配置)
- 规划RD、RT实现VPN业务接入
- 配置CE-PE之间的路由协议:(R1,4使用bgp, R3,6使用ospf)
- 若PE-CE之间运行IGP协议,则需要配置路由双向引入(可选)
- 分析路由传递过程 (重要)
- 分析报文转发过程 (重要)
配置命令
// 注:只需要配置r1,2,3,4,6即可
# 基本网络IP地址配置, r1,2,3 ospf邻居建立,mpls ldp建立
>r1
int g0/0/0
ip add 10.0.12.1 24
int lo0
ip add 1.1.1.1 32
# 配置ospf
ospf 1 router-id 1.1.1.1
area 0
network 1.1.1.1 0.0.0.0
network 10.0.12.1 0.0.0.0
# mpls ldp
mpls lsr-id 1.1.1.1
mpls
mpls ldp
int g0/0/0
mpls
mpls ldp
# MP-BGP
bgp 123
peer 2.2.2.2 as 123
peer 2.2.2.2 connect-interface loopback 0
# vpn v4 业务接入,配置vpn实例、RD和RT
ip vpn-instance JD
ipv4-family
routing-distinguish 1:1
vpn-target 100:100 both
int g0/0/1
ip binding vpn-instance JD
ip add 10.0.14.1 24 // 配置vpn实例后,地址需要重新配置
# CE和PE连接协议配置,R1,4使用bgp, R3,6使用ospf
bgp 123
ipv4-family vpn-instance JD // 将指定的VPN实例与IPv4地址族进行关联,并进入BGP-VPN实例IPv4地址族视图
peer 10.0.14.4 as 4
>r2
int g0/0/0
ip add 10.0.12.2 24
int g0/0/1
ip add 10.0.23.2 4
int lo0
ip add 2.2.2.2 32
# ospf
ospf 1 router-id 1.1.1.1
area 0
network 2.2.2.2 0.0.0.0
network 10.0.12.2 0.0.0.0
network 10.0.23.2 0.0.0.0
mpls lsr-id 2.2.2.2
mpls
mpls ldp
int g0/0/0
mpls
mpls ldp
int g0/0/1
mpls ldp
# MP-BGP
bgp 123
peer 1.1.1.1 as 123
peer 1.1.1.1 connect-interface loopback 0
peer 3.3.3.3 as 123
peer 3.3.3.3 connect-interface loopback 0
# 开启RR反射
peer 1.1.1.1 reflect-client
peer 3.3.3.3 reflect-client
# 关闭RT过滤,否则R1的vpnv4路由过不来 (4.4.4.4 过不来)
bgp 123
ipv4-family vpnv4 // 表示进入BGP-VPNv4地址族视图
undo vpn-target policy
# 配置BGP-VPNv4 路由反射
peer 1.1.1.1 enable
peer 1.1.1.1 reflect-client
peer 3.3.3.3 enable
peer 3.3.3.3 reflect-client
>r3
int g0/0/0
ip add 10.0.23.3 24
int lo0
ip add 3.3.3.3 32
# ospf
ospf 1 router-id 1.1.1.1
area 0
network 3.3.3.3 0.0.0.0
network 10.0.23.3 0.0.0.0
# mpls ldp
mpls lsr-id 3.3.3.3
mpls
mpls ldp
int g0/0/0
mpls
mpls ldp
# MP-BGP
bgp 123
peer 3.3.3.3 as 123
peer 3.3.3.3 connect-interface loopback 0
# PE和CE之间的路由协议 ospf
ospf 2
a 0
net 10.0.36.3 0.0.0.0
# 配置vpn 实例接收
ip vpn-instance JD
ipv4-family // 使能VPN实例的IPv4地址族,并进入VPN实例IPv4地址族视图
route-distinguish 1:1
vpn-target 100:100
int g0/0/1
ip bingding vpn-instance JD
ip address 10.0.36.3 24
# 路由导入
bgp 123
ipv4-family vpn-instance JD //将指定的VPN实例与IPv4地址族进行关联,并进入BGP-VPN实例IPv4地址族视图
import-route ospf
ospf 2 vpn-instance JD
import-route bgp
# 查看命令
dis ospf peer brief
dis mpls ldp/lsp, dis bgp peer
dis ip routing-table vpn-instance JD // 查看vpn实例下的路由表
dis bgp vpnv4 all routing-table // 查看所有vpn实例下的bgp路由信息
display bgp vpnv4 vpn-instance vpn1 routing-table // 查看名为vpn1的vpn实例的所有bgp信息
dis ip routing-table // 查看普通的IPv4 路由表
dis bgp vpnv4 all peer //查看BGP VPNv4对等体的建立情况
display bgp routing-table peer xxx(ipv4 地址) received-routes // 查看BGP从对等体收
display bgp routing-table peer xxx(ipv4 地址) advertised-routes // 查看BGP发送给对等体的路由信息
dis bgp vpnv4 all routing-table 4.4.4.4 // 收到ipv4 转为vpn 实例地址,rt,rd,label 1026
dis ospf lsdb // 查看5类lsdb
>r4
int g0/0/0
ip add 10.0.14.4 24
int lo0
ip add 4.4.4.4 32
# bgp
bgp 4
peer 10.0.14.1 as 123
net 4.4.4.4 32 // 作为测试
>r6
int g0/0/0
ip add 10.0.36.6 24
int lo0
ip add 6.6.6.6 32
# ospf
ospf 1
a 0
net 10.0.36.6 0.0.0.0
net 6.6.6.6 0.0.0.0
// 测试
ping -a 4.4.4.4 6.6.6.6
ping -vpn-instance JD ipv4-address // ping vpn实例中的地址
// 有几个命令单独提出来
ip vpn-instance XX // 创建VRF:vpn实例
ipv4-family // 使能VPN实例的IPv4地址族,并进入VPN实例IPv4地址族视图。在边界PE创建vrf的时候配置
ipv4-family vpn-instance xx // 将指定的VPN实例与IPv4地址族进行关联,并进入BGP-VPN实例IPv4地址族视图。在PE和CE的路由协议上配置
ipv4-family vpnv4 // 进入BGP-VPNv4地址族视图。 在RR上配置
简要分析
- 路由传递过程:
- 4.4.4.4 (ipv4地址) ->经过R1变成vpnv4地址,加上RD, RT, label -> 经过R2,通过RR vpnv反射 -> R3查看bgp vpnv4路由表 发现这个路由来自bgp协议 --> 引入路由到ospf中,可以dis ospf lsdp 看到外部的4.4.4.4 -> R6通过ospf 协议也可以看到4.4.4.4 (dis ospf lsdp), 此时为普通的ipv4路由
- 报文转发过程:sip 6.6.6.6 dip 4.4.4.4
- 报文从R6出发-> 通过g0/0/1进入R3, R3绑定了vpn实例JD (dis ip routing-table vpn-instance JD) dis bgp vpnv4 all routing-table 4.4.4.4 发现被Mp-bgp打上私网标签1026, Relay token: 0x1 , dis mpls lsp -->下一条的地址为1.1.1.1, label 为1024 -> 到R2, dis mpls lsp 发现1024的出口为3,倒数第二跳弹出,只剩1026 -> 发送给R1,dis mpls ldp, 发现1026属于VRF为JD的vpn实例 (dis ip routing-table vpn-instance JD) --> 变成IP报文从R1的g0/0/1口发出
- 备注: CE和PE之间的地址都是IPv4地址,PE之间是VPNv4地址