背景两家公司通过同一个isp接入,完成mpls ***专线使各个公司能够访问内部网络。

isp mpls专线_第1张图片

拓扑如上:

ip : RX-RY:  RX: XY.1.1.X   L0:X.X.X.X  RY:XY.1.1.Y  L0:Y.Y.Y.Y

首先配置R2-R3-R4 isp网络。这边使用ospf协议保证isp网络互通,使用bgp协议(VRf)进行传递私网路由,使用mpls标签进行快速转发。

R2:

os 1 

net 23.1.1.2 0.0.0.0 a 0

net 2.2.2.2 0.0.0.0 a 0

R3:

os 1

net 23.1.1.3 0.0.0.0 a 0

net 3.3.3.3 0.0.0.0 a 0

net 34.1.1.3 0.0.0.0 a 0

R4:

os 1 

net 34.1.1.4 0.0.0.0 a 0

net 4.4.4.4 0.0.0.0 a 0

完成上述配置,R2,R3,R4已经能够建立ospf邻居,ok这边因为主要是讲mpls,所以就不加ospf区域验证之类的了。

然后开启mpls 

R2-R4

ip cef

int 所有公网接口 mpls ip 注:不包括和公司路由对接的接口如R2只在S1/2开启mpls ip

mpls label range 200 299 / 300 399 / 400 499 便于排错 开启标签范围

完成上述配置,可以通过sh mpls for 查看lable

R3#sh mpls forwarding-table 

Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop    

tag    tag or VC   or Tunnel Id      switched   interface              

300    Pop tag     4.4.4.4/32        7647       Se1/1      point2point  

301    Pop tag     2.2.2.2/32        6009       Se1/0      point2point  

然后是R2 R4 开启mp-bgp 用于传递vrf路由(关于vrf技术,你可以认为把一台路由器当成多台路由器进行使用,主要区别各个虚拟路由器使用单独的路由表)

R2 :

router b 2

 bgp router-id 2.2.2.2

 no bgp default ipv4-unicast

 neighbor 4.4.4.4 remote-as 4

 neighbor 4.4.4.4 ebgp-multihop 255

 neighbor 4.4.4.4 update-source Loopback0

 address-family ***v4

  neighbor 4.4.4.4 activate

  neighbor 4.4.4.4 send-community extended  //默认开启,因为需要传递私网路由。所以要加属性

 exit-address-family

R4:

 跟R2差不多就是改一下地址

查看结果用sh ip bgp ***v4 all su 


Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd

2.2.2.2         4     2      95      85       19    0    0 01:14:46        3

下面就是重点了:

R2:

ip vrf b

 rd 2:2   //

 route-target export 2:2

 route-target import 2:2

!         

ip vrf gongsia

 rd 1:1   

 route-target export 1:1

 route-target import 1:1

RD (Route Distinguisher)

  1. 用于标识PE上不同×××实例,其主要作用是实现×××实例之间地址复用,与IP地址一起构成12 Bytes的×××v4地址。

  2. RD与路由一起被携带在BGP Update报文中发送给对端。

  3. RD不具有选路能力,不影响路由的发送与接受。

  4. RD用来区分本地VRF,本地有效。

RT (Route Target)

  1. RT是×××v4路由携带的一个重要属性,它决定×××路由的收发和过滤,PE依靠RT属性区分不同×××之间路由。

  2. 当从VRF表中导出×××路由时,要用Export RT对×××路由进行标记。

  3. 当往VRF表中导入×××路由时,只有所带RT标记与VRF表中任意一个Import RT相符的路由才会被导入到VRF表中。

----来自http://blog.sina.com.cn/s/blog_6a6b6f1a0100yzv5.html

分别把和公司A,公司b的接口加入的相关的vrf 下:

R2

interface Serial1/1

 ip vrf forwarding b   

//熟悉了之后先把接口加到vrf下再配置地址,否则你会发现介入vrf后没地址了

interface Serial1/0

 ip vrf forwarding gongsia

R4做相同配置

下面是如何保证公司路由和isp的vrf进行路由的交换以及和公司分部的路由交换配置:

R6-R2 R7-R4

这边我们采用的是ospf协议进行互通

这边首先要指导,R2 和R4 已经使用了os 1 。

这边我们使用ospf 10 进行互联,基本配置就不贴了。重点是R2和R4的ospf 进程要写:

R2:

router ospf 10 vrf gongsia  //ospf进程需要写入vrf中,eigrp需要指定进程号

 log-adjacency-changes

 redistribute bgp 2 subnets  //这边是用于将私网路由重分布到bgp 中进行传递路由

 network 26.1.1.2 0.0.0.0 area 0

ip route vrf b 1.1.1.0 255.255.255.0 Serial1/1  公司b我们通过静态路由写,也要写入vrf中

route b 2

 address-family ipv4 vrf gongsia

  redistribute ospf 10 vrf gongsia  //分别在不同bgp vrf下重分布相应的和ce端路由协议

  no synchronization

 exit-address-family     

 !

 address-family ipv4 vrf b

  redistribute static   

  no synchronization

 exit-address-family

R4:

R4#sh run | s ospf

router ospf 10 vrf gongsia

 router-id 47.1.1.4

 log-adjacency-changes

 redistribute bgp 4 subnets

 network 47.1.1.4 0.0.0.0 area 0

router ospf 1

 log-adjacency-changes

 network 4.4.4.4 0.0.0.0 area 0

 network 34.1.1.4 0.0.0.0 area 0

  redistribute ospf 10 vrf gongsia

R4#sh run | s bgp

 redistribute bgp 4 subnets

router bgp 4

 bgp router-id 4.4.4.4

 no bgp default ipv4-unicast

 bgp log-neighbor-changes

 neighbor 2.2.2.2 remote-as 2

 neighbor 2.2.2.2 ebgp-multihop 255

 neighbor 2.2.2.2 update-source Loopback0

 !

 address-family ***v4

  neighbor 2.2.2.2 activate

  neighbor 2.2.2.2 send-community extended

 exit-address-family

 !

 address-family ipv4 vrf gongsia

  redistribute ospf 10 vrf gongsia

  no synchronization

 exit-address-family

 !

 address-family ipv4 vrf b

  redistribute static

  no synchronization

 exit-address-family

R3只要开启mpls功能即可,不要其他配置。

查看mpls 邻居,以及lable标签

R4#sh mpls ldp bindings 

  tib entry: 2.2.2.2/32, rev 8

        local binding:  tag: 401

        remote binding: tsr: 3.3.3.3:0, tag: 301

  tib entry: 3.3.3.3/32, rev 6

        local binding:  tag: 400

        remote binding: tsr: 3.3.3.3:0, tag: imp-null

  tib entry: 4.4.4.4/32, rev 4

        local binding:  tag: imp-null

        remote binding: tsr: 3.3.3.3:0, tag: 300

  tib entry: 23.1.1.0/24, rev 10

        local binding:  tag: 402

        remote binding: tsr: 3.3.3.3:0, tag: imp-null

  tib entry: 34.1.1.0/24, rev 3

        local binding:  tag: imp-null

        remote binding: tsr: 3.3.3.3:0, tag: imp-null

R4#sh mpls ldp

R4#sh mpls ldp ne

R4#sh mpls ldp neighbor 

    Peer LDP Ident: 3.3.3.3:0; Local LDP Ident 4.4.4.4:0

        TCP connection: 3.3.3.3.646 - 4.4.4.4.60420

        State: Oper; Msgs sent/rcvd: 109/110; Downstream

        Up time: 01:30:04

        LDP discovery sources:

          Serial1/0, Src IP addr: 34.1.1.3

        Addresses bound to peer LDP Ident:

          23.1.1.3        3.3.3.3         34.1.1.3    

R5#ping 1.1.1.1 so 5.5.5.5  //最后ping的时候需要加源


Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:

Packet sent with a source address of 5.5.5.5 

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 140/160/184 ms

忘了一点,如果mpls协议的底层协议是ospf。需要将lo 设置成32位地址,这边我将R6 R7设置位32为

R1 R5 24没有问题。

本文还是个人笔记,如有错误请各位大神指正。摘抄已注明出处,如果有问题,单聊我,我会进行处理。