×××中的角色:

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