×××中的角色:
CE/PE/P
overlay ***:隧道建立在CE上
在ce和ce之间建立隧道,并直接传递路由信息。典型代表是GRE、IPSEC
overlay ***:隧道建立在pe上
在pe上为每一个***用户建立相应的GRE隧道,路由信息在pe和pe之间传递。
不同的***用户不能共享相同的地址空间,并且需要大量的ACL和策略路由,在实际中不具备可行性
overlay ***的本质是一种静态***
1,所有的配置与部署都需要手工完成
2,由于是静态***,则无法反应网络的实时变化
peer-to-peer ***
ce和pe之间建立***,也就是要在ce和pe之间交换私网路由信息。
共享pe方式:
所有***用户的ce都连到同一台pe上,pe与不同的ce之间运行不同的路由协议(或者相同协议,不同进程),由始发pe将这些路由发布到公网上,在接收端的pe上将这些路由过滤后再发给相应的ce设备。
需要配置大量的ACL。
专用pe方式:
为每一个***单独准备一台pe路由器。pe和ce之间可以运行任意的路由协议。pe和p之间运行BGP,并使用路由属性进行过滤。EBGP邻居、community属性
每一个***用户都要新增一台专用的PE
peer-to-peer ***的本质:
1,私网泄露到公网上,安全性差
2,***的私有特征完全靠路由来保证,导致在ce设备上无法配置缺省路由(路由有去有回,公网用户可以直接访问内网)
3,仍旧存在所有的设备无法共享相同的地址空间问题
1,网络中×××路由数目可能非常大,BGP是唯一支持大量路由的路由协议
2,BGP是基于TCP来建立连接,可以在不直接相连的路由器间交换信息,这使得p路由器中无须包含***路由信息
3,BGP可以运载附加在路由后的任何信息,作为可选的BGP属性,任何不了解这些属性的BGP路由器都将透明的转发它们。这使得在PE路由器间传播路由非常简单
1,本地路由冲突问题,即:在同一台pe上如何区分不同***的相同路由。
可以通过在同一台路由器上创建多个路由表解决,而不同的接口可以分属不同的路由表中,这就相当于将一台共享PE模拟成多台专用PE
2,路由在网络中的传播问题,两条相同的路由,都在网络中传播,对于接收者如何分辨彼此
可以在路由传递过程中为这条路由再添加一个标识,用以区别不同的×××
3,报文的转发问题,即使成功的解决了路由表的冲突,但是当pe接收到一个ip报文时,他又如何能够知道该发给哪个***?因为ip报文头中中唯一可用的信息就是目的地址。而很多***中都可能存在这个地址。
可以在IP头之外加上一些信息,由始发的×××打上标记,这样PE在接收报文时可以根据这个标记进行转发
VRF:×××路由转发实例
每一个VRF可以看做虚拟的路由器。好像是一个专用的PE设备。包括以下元素:
1,一张独立的路由表
2,一组归属于这个VRF的接口的集合
3,一组只用于本VRF的路由协议
对于每个PE,可以维护一个或多个VRF。同时维护一个公网的路由表。多个VRF实例相互分离独立。
RT(Route Target)
扩展的community有如下两个格式:其中type字段为0x0002或者0x0102时表示RT
type(0x0002) as(16bit) value(32bit)
type(0x0102) ip address(32bit) value(16bit)
RT的本质是每个VRF表达自己的路由取舍及喜好的方式。RT分为:export target和import target;前者表示了我发出的路由的属性,而后者表示了我对那些路由感兴趣
专用PE方式:
发出路由:使用BGP的community属性,将本×××的路由打上特殊标记
接收路由:在P路由器上接收所有路由,根据community属性发给特定×××的PE设备
VRF方式:
发出路由:在一个VRF中,在发布路由时使用RT的export规则,直接发送给其他的PE设备
接收路由:在接收端的PE上,接收所有的路由,并根据每个VRF配置的RT的import规则进行检查,如果与路由中的RT属性match,则将该路由加入相应的VRF中
RD(Route Distinguisher)
1,RT不是与IP前缀放在一起的
2,BGP的Route withdraw报文不携带属性,这样在这种情况下接收到的路由就没有RT了
所以需要定义RD。格式如下:
8byte route distinguisher(2byte type field+6byte value field)+ 4byte ipv4 address
在ipv4地址加上RD之后,就变成×××-IPV4地址族了。通常为每个×××都配置相同的RD,不同的×××配置不同的RD。但是实际上只要保证存在相同地址的两个VRF的RD不同即可。不同的×××可以配置相同的RD。相同的×××也可以配置不同的RD
同一台PE上的不同VRF不能配置相同的RD
RD不会影响不同VRF之间的路由选择以及×××的形成,这些事情由RT搞定
PE从CE接收的标准的路由时IPV4的,如果需要发布给其他的PE路由器,此时需要为这条路由附加一个RD。
在穿越供应商骨干时,在×××数据流量的包头中不会携带×××-IPV4地址
由于公网的隧道已经由MPLS来提供,而且MPLS支持多层标签的嵌套。这个标记定义成MPLS标签的格式。这个私网的标签就由MP-BGP来分配,与私网的路由一同发布出去
一个扩展之后的NLRI增加了地址族的描述,以及私网label和RD
MP_REACH_NLRI:
address-family:***-ipv4地址族
next-hop:就是pe路由器自己,通常是loopback地址
nlri:
label:24bit,与MPLS标签一样,但没有ttl
prefix:RD:64BIT+IP前缀
跟随之后的是RT的列表
RT1
RT2
RT3
使用扩展属性MP_REACH_NLRI的BGP,我们称之为MP-BGP
VRF在PE上配置
PE维护独立的路由表,包括公网和私网(VRF)路由表
1,公网路由表:包含全部PE和P路由器之间的路由,由骨干网IGP产生
2,私网路由表:包含本×××用户可达信息的路由和转发表
PE和CE通过标准的EBGP、OSPF、RIP或者今天路由交换路由信息
PE路由器需要对一条路由进行如下操作:
1,加上RD(手工配置)。变为一条×××-IPV4路由
2,更改下一跳属性为自己(通常是loopback地址)
3,加上私网标签(随机生成)
4,加上RT属性(手工配置),携带的是EXPORT属性
发给所有的PE邻居
×××-V4路由变成IPV4路由,并且根据本地VRF的import RT属性加入到相应的VRF中,私网标签保留,留作转发时使用。再由本VRF的路由协议引入并转发给相应的CE
公网标签分配过程:
1,PE和P路由器通过骨干网IGP学习到BGP邻居下一跳地址
2,通过运行LDP协议。分配标签,建立LSP通道
3,标签栈用于报文转发,外层标签用来指示如何到达BGP下一跳,内层标签表示报文的出接口或者属于哪个VRF(属于哪个×××)
4,MPLS节点转发时基于外层标签,而不管内层标签是多少
报文转发-从CE到INGRESS PE
1,CE将报文发给与其相连的VRF接口,PE在本VRF的路由表中进行查找,得到了该路由的公网下一跳地址(对端PE的loopback地址)和私网标签
2,在把该报文封装一层私网标签后,在公网的标签转发表中查找下一跳地址,再封装一层公网标签后,交与MPLS转发
INGRESS PE->EGRESS PE->CE
1,该报文在公网上沿着LSP转发,并根据途径的每一台设备的标签转发表进行标签交换
2,在倒数第二跳处,将外层的公网标签弹出,交给目的PE设备
3,PE设备根据内网的私网标签判断该报文的出接口和下一跳
4,去掉私网标签后,将报文转发给相应的VRF中的CE
私网路由及标签转发:
PE接收到路由后四件工作:
RD:为了区别VRF中相同的路由
NEXT-HOP
RT:为了区别不同的×××
LABEL
其他PE接收到后,只修改NEXT-HOP
需要通信的两个用户网络之间,VRF和RD值保持一致
公网LSP的建立:
跟私网的差不多,只不过没有next-hop字段
私网数据包的转发:
首先根据私网路由转发表为数据包打上私网标签,然后再根据next-hop查找公网转发表,为数据包打上公网标签
公网标签是LDP分配的,私网标签是MP-BGP分配的
CE上:普通路由协议
PE:MP-BGP、MPLS和普通路由协议
P上:普通路由协议和MPLS
RD和RT是手工配置的,私网标签和公网标签是随机生成的
只需要为所有PE的loopback地址分配标签即可,不必为其他的任何公网路由分配标签
方式一:静态路由
1,PE上直接对某个VRF写静态路由
ip route 0.0.0.0 0.0.0.0 14.1.1.4
2,在PE上将静态路由重分布进MP-BGP
route bgp 100
address-family ipv4 vrf ***1
redistribute static
3,CE上要有默认路由指向PE
ip route 0.0.0.0 0.0.0.0 14.1.1.1
方式二:RIP路由
1,在PE上配置RIP
route rip
version 2
address-family ipv4 vrf ***1
network 14.0.0.0
redistribute bgp 100 metric 1
2,将RIP重分布进MP-BGP
route bgp 100
address-family ipv4 vrf ***1
redistribute rip
3,在CE上正常配置RIP
方式三:OSPF路由
1,在PE上配置OSPF
route ospf 100 vrf ***1
network 14.1.1.0 0.0.0.255 ar 0
redistribute bgp 100 subnets
2,将OSPF重分布进MP-BGP
route bgp 100
address-family ipv4 vrf ***1
redistribute ospf 100
3,CE正常配置OSPF
方式三:EIGRP路由
1,在PE上配置EIGRP
route eigrp 1
address-family ipv4 vrf ***2
no auto-summary
network 23.1.1.1 0.0.0.0
autonomous-system 1
redistribute bgp 100 metric 1000 100 255 1 1500
2,将EIGRP重分布进MP-BGP
route bgp 100
address-family ipv4 vrf ***2
redistribute eigrp 1
3,CE正常配置EIGRP
方式四:EBGP路由
1,PE上配置EBGP
route bgp 100
address-family ipv4 vrf ***1
neighbor 14.1.1.4 remote-as 200
neighbor 14.1.1.4 activate
2,CE和PE默认会将EBGP重分布进MP-BGP
3,CE上配置EBGP
route bgp 200
neighbor 14.1.1.1 remote
neighbor 14.1.1.1 remote-as 100
network 10.1.1.0 mask 255.255.255.0
MPLS ×××配置步骤:
1,PE、P之间的IGP配置完毕,两个PE的loopback口互通
2,配置MPLS
3,PE之间配置普通BGP,更新源为loopback口
4,在PE上创建VRF,并指定RD值。通信的用户网络之间的VRF和RD值保持一致
ip vrf ***1
rd 100:1
5,在PE上将连CE的接口划入VRF
int s0/1
ip vrf forwarding ***1
ip add 14.1.1.1 255.255.255.0
在PE上查看VRF的路由表情况,已经存在VRF路由表里面的路由,不会出现在全局路由表中
show ip route vrf ***1
6,创建MP-BGP
router bgp 100
address-family ***v4
neighbor 3.3.3.3 activate
neighbor 3.3.3.3 send-community both
查看MP-BGP邻居:
show ip bgp all summary
7,查看MP-BGP的VRF路由
show ip bgp ***v4 all
8,为MP-BGP创建VRF
router bgp 100
address-family ipv4 vrf ***1
9,配置RT控制VRF路由信息
ip vrf ***1
route-target both 100:1
10,配置PE-CE的路由协议
上面四种方式任意一种
11,PE到CE之间的通信,因为路由已经在VRF路由表中了,所以普通ping是失败的,需要用以下方式ping
ping vrf ***1 14.1.1.4
在PE-CE路由协议为OSPF时,当OSPF和MP-BGP之间互相重分布时,不要改变metric值,避免出现环路
在PE之间创建额外的OSPF区域的方法是创建OSPF shamed-link,pe之间的sham-link相当于一条逻辑的链路,但是这个链路也属于某个ospf区域,供pe路由器选路
配置sham-link注意点:
1,在PE上单独创建32位的地址,在PE之间使用这个地址来建立sham-link
2,这个32位地址的接口必须放入相应的VRF
3,这个32位地址必须在BGP里发布,而不能在OSPF里发布
4,如果没有后门存在就没必要创建sham-link
配置sham-link
1,在PE之间配置rip
2,在PE之间配置MPLS
3,在PE之间配置MPLS ×××
4,配置OSPF
5,配置MP-BGP
6,在PE路由器之间创建sham-link
1,在PE路由器上创建32位loopback地址
int loo100
ip vrf forwarding ***
ip add 100.1.1.1 255.255.255.255
2,将32位地址在MP-BGP里发布
router bgp 100
address-family ipv4 vrf ***
network 100.1.1.1 mask 255.255.255.255
3,创建sham-link
router ospf 2 vrf ***
area 1 sham-link 100.1.1.1 100.1.1.2 cost 10 指定源和目的地址和cost值
7,在PE上查看sham-link
show ip ospf sham-link
在同一×××的两个场点之间的通信,属于内部通信,不同×××之间通信属于外部通信,需要配置更多的RT实现
ip vrf ***2
route-target both 100:1
route-target both 100:2
CE接入internet有三种方式
1,直接为ce的vrf添加到Internet的静态路由
2,在PE和ce之间额外创建tunnel,当ce到Internet的数据包发往tunnel时,pe就将该数据包发往Internet
3,ce将自己的路由发往对端lan,让对端的lan作转发处理
方式一:
1,在pe上为vrf配置默认路由
ip route vrf ***1 0.0.0.0 0.0.0.0 100.1.1.2 global
2,在pe上还需手工指定到ce内部网络的路由
ip route 10.1.1.0 255.255.255.0 s0/1 14.1.1.4
3,CE上写默认路由到PE
ip route 0.0.0.0 0.0.0.0 14.1.1.1
方式二:
1,在pe上配置到ce和tunnel
int tunnel 0
ip address 50.1.1.1 255.255.255.0
tunnel source 14.1.1.1
tunnel destination 14.1.1.4
tunnel vrf ***1
2,配置到ce内部网络的路由都走tunnel
ip route 10.1.1.0 255.255.255.0 tunnel 0
3,在ce上配置到pe的tunnel
int tunnel 0
ip add 50.1.1.4 255.255.255.0
tunnel source 14.1.1.4
tunnel destination 14.1.1.1
4,指定ce所有的路由都从tunnel发给pe
ip route 0.0.0.0 0.0.0.0 tunnel 0