目录
前言
我们在学习bgp的时候知道解决bgp水平分割有三种办法:
1.ibgp全互联
2.bgp反射器
3.bgp联盟
ibgp配置复杂,配置量多,拓扑变更
bgp联盟配置多,会改变网络拓扑,而且当子联盟的路由器超过3台依然会出现水平分割
bgp反射器配置简单,且不改变网络拓扑,是我们的第一选择,但是对于反射器(rr)的压力会很大,设备要求性很高
我们还有没有其他的解决办法?
那就是mpls!!!
mpls
为什么会有MPLS:
以前,我们都是通过IP路由表,去收发IP数据包,但是IP路由表,需要通过最长匹配原则去寻找最好的那条路由,这样做,会增加路由器的处理压力 在后来的ATM网络中,有了标签转发的概念,但是ATM网络配置起来相当麻烦 所以,我们为了结合标签转发+路由特性,创造了MPLS 所谓标签转发,就是通过很短且固定长度的标签,去转发携带标签的数据报文
什么是mpls:多协议标签交换协议
mpls的作用:用来在设备之间分享标签
路由器的角色
lsr:运行mpls协议的路由器
ler:位于mpls边缘 连接其他网络的lsr叫做ler
核心lsr:位于内部的lsr
Ler 负责从ip网络给网络打上标签,传递给lsr,lsr只负责按照标签的转发
体系结构
控制平面:面向无连接的,主要负责产生和维护路由信息和标签信息
转发平面:面向连接,负责普通ip报文的转发和mpls标签报文的转发
注:这里介绍无网络连接协议:无网络连接协议中的分组被称为数据报(datagram),每个分组都是独立寻址,并由应用程序发送的。从协议的角度来看,每个数据报都是一个独立的实体,与在两个相同的对等实体之间传送的任何其他数据报都没有关系,这就意味着协议很可能是不可靠的。也就是说网络会尽最大努力传送每一个数据报,但并不保证数据报不丢失、不延迟或者不错序传输。
mpls标签
标签:短而定长+具有本地意义的标识符,表示一个分组所属的fec ,分为 in 标签和 out 标签:
in 表示是当前设备为该 fec 分配的标签
out 表示是去往fec 表示的网络时,所需要携带和使用的标签
转发等价类(FEC):具有相同特征的报文,例如基于目的IP地址及网络掩码、DSCP等特征来划
标签转换路径(LSP):标签报文穿越MPLS网络到达目的地所走的路径。 同一个FEC的报文通常采用相同的LSP穿越MPLS域,所以对同一个FEC,LSR总是用相同的标签转发。
mpls报文首部结构
Label:20bit,标签值域。
Exp:3bit,用于扩展。现在通常用做 CoS(Class of Service),其作用为流量优先级和动态多播过滤服务
S:1bit,栈底标识。MPLS 支持多层标签,即标签嵌套。S 值为 1 时表明为最底层标签。 s值位0的时候,代表后面还有标签
TTL:8bit,和 IP 分组中的 TTL(Time To Live)意义相同
标签的操作类型
入站LSR(Ingress LSR):通常是向IP报文中压入MPLS头部并生成MPLS报文的LSR。
中转LSR(Transit LSR):通常是将MPLS报文进行例如标签置换操作,并将报文继续在MPLS域中转发的LSR。
出站LSR(Egress LSR):通常是将MPLS报文中MPLS头部移除,还原为IP报文的LSR。
Push(压入):指当 IP 报文进入 MPLS 域时,MPLS 边界设备在报文二层首部和 IP 首部之间插入一 个新标签;或者 MPLS 中间设备根据需要,在标签栈顶增加一个新的标签(即标签嵌套封装)。
Swap(交换):当报文在 MPLS 域内转发时,根据标签转发表,用下一跳分配的标签,替换 MPLS 报 文的栈顶标签。
Pop(弹出):当报文离开 MPLS 域时,将 MPLS 报文的标签去掉。
LSP案例
LDP
ldp是什么:
标签分发协议,ldp是mpls的一种控制协议
LDP的作用
1.负责fec的分类
2.负责标签的分类
3.负责lsp的建立和维护
ldp的工作过程
lsr之间建立ldp会话---建立ldp会话后,给fec动态分发标签,根据标签信息建立lsp
ldp会话
本地LDP会话:建立会话的两个LSR之间是直连的;
远程LDP会话:建立会话的两个LSR之间可以是直连的,也可以是非直连的
ldp邻接体
两台lsr之间交互hello消息,即可建立ldp邻接体关系
ldp对等体
在建立邻接体的基础上,两台lsr之间交互ldp会话消息,建立ldp会话,两台lsr设备建立ldp对等体
ldp空间标识符
值为0:基于设备的标签空间
值非0:基于接口的标签空间
ldp消息
- 发现(Discovery)消息:用于通告和维护网络中 LSR 的存在。
- 会话(Session)消息:用于建立、维护和终止 LDP 对等体之间的会话。
- 通告(Advertisement)消息:用于创建、改变和删除 FEC 的标签映射。
- 通知(Notification)消息:用于提供建议性的消息和差错通知。
ldp建立稳定的tcp连接
建立邻居 ——> 让对端知道自己的传输地址(默认为MPLS LSR-ID)
目的IP:224.0.0.2 源目端口:UDP646 Hello报文5秒发一个,15秒超时,用于维持LDP邻居
建立TCP ——> 通过传输地址建立稳定的TCP会话 源端口:随机TCP端口 目的端口:TCP646
建立LDP会话 ——>通过稳定的TCP连接,建立稳定的LDP会话 Keepalive报文15秒一个,45秒超时,用于维持LDP会话
分发标签 ——>通过建立稳定的LDP会话,分发标签
标签分布方式(发标签):
du模式(下游自主模式)(默认):/DOD模式(下游按需模式)
标签分配控制方式(传输标签):
有序模式(默认)/独立模式
标签保留方式(保留标签):
自由模式(默认)/保守模式
实验
拓扑图:
配置:
sysname R6
#
interface GigabitEthernet0/0/0
ip address 192.168.16.6 255.255.255.0
#
interface LoopBack0
ip address 10.10.6.6 32
#
bgp 100
router-id 6.6.6.6
peer 192.168.16.1 as-number 200
network 10.10.6.6 255.255.255.255
sysname R1
#
mpls lsr-id 10.10.1.1
mpls
#
mpls ldp
#
interface GigabitEthernet0/0/0
ip address 192.168.12.1 255.255.255.0
mpls
mpls ldp
#
interface GigabitEthernet0/0/1
ip address 192.168.16.1 255.255.255.0
#
interface LoopBack0
ip address 10.10.1.1 32
#
bgp 200
router-id 1.1.1.1
peer 10.10.5.5 as-number 200
peer 10.10.5.5 connect-interface LoopBack0
peer 192.168.16.6 as-number 100
peer 10.10.5.5 next-hop-local
#
ospf 1 router-id 1.1.1.1
area 0.0.0.0
network 10.10.1.1 0.0.0.0
network 192.168.12.0 0.0.0.255
#
route recursive-lookup tunnel
sysname R2
#
mpls lsr-id 10.10.2.2
mpls
#
mpls ldp
#
interface GigabitEthernet0/0/0
ip address 192.168.12.2 255.255.255.0
mpls
mpls ldp
#
interface GigabitEthernet0/0/1
ip address 192.168.23.2 255.255.255.0
mpls
mpls ldp
#
interface LoopBack0
ip address 10.10.2.2 32
#
ospf 1 router-id 2.2.2.2
area 0.0.0.0
network 10.10.2.2 0.0.0.0
network 192.168.12.0 0.0.0.255
network 192.168.23.0 0.0.0.255
sysname R3
#
mpls lsr-id 10.10.3.3
mpls
#
mpls ldp
#
interface GigabitEthernet0/0/0
ip address 192.168.23.3 255.255.255.0
mpls
mpls ldp
#
interface GigabitEthernet0/0/1
ip address 192.168.34.3 255.255.255.0
mpls
mpls ldp
#
interface LoopBack0
ip address 10.10.3.3 32
#
ospf 1 router-id 3.3.3.3
area 0.0.0.0
network 10.10.3.3 0.0.0.0
network 192.168.23.0 0.0.0.255
network 192.168.34.0 0.0.0.255
sysname R4
#
mpls lsr-id 10.10.4.4
mpls
#
mpls ldp
#
interface GigabitEthernet0/0/0
ip address 192.168.34.4 255.255.255.0
mpls
mpls ldp
#
interface GigabitEthernet0/0/1
ip address 192.168.45.4 255.255.255.0
mpls
mpls ldp
#
interface LoopBack0
ip address 10.10.4.4 32
#
ospf 1 router-id 4.4.4.4
area 0.0.0.0
network 10.10.4.4 0.0.0.0
network 192.168.34.0 0.0.0.255
network 192.168.45.0 0.0.0.255
sysname R5
#
mpls lsr-id 10.10.5.5
mpls
#
mpls ldp
#
interface GigabitEthernet0/0/0
ip address 192.168.45.5 255.255.255.0
mpls
mpls ldp
#
interface GigabitEthernet0/0/1
ip address 192.168.57.5 255.255.255.0
#
interface LoopBack0
ip address 10.10.5.5 32
#
bgp 200
peer 10.10.1.1 as-number 200
peer 10.10.1.1 connect-interface LoopBack0
peer 192.168.57.7 as-number 300
peer 10.10.1.1 next-hop-local
#
ospf 1 router-id 5.5.5.5
area 0.0.0.0
network 10.10.5.5 0.0.0.0
network 192.168.45.0 0.0.0.255
#
route recursive-lookup tunnel
sysname R7
#
interface GigabitEthernet0/0/0
ip address 192.168.57.7 255.255.255.0
#
interface LoopBack0
ip address 10.10.7.7 32
#
bgp 300
router-id 7.7.7.7
peer 192.168.57.5 as-number 200
network 10.10.7.7 32
验证:
<r1> dis mpls ldp peer
<r6>ping -a 10.10.6.6 10.10.7.7
mpls-vpn
产生背景:
随着专用集成电路技术的发展,路由查找速度已经不是阻碍网络发展的瓶颈。这使得MPLS在提高转发速度方面不再具备明显的优势。但是MPLS支持多层标签的特性,使其在VPN、流量工程、QoS等方面得到广泛应用。
专线:单独铺一条光纤,自己用,相当于自己铺的铁路
特点:专有线路,价格昂贵,安全性高,带宽浪费
vpn(虚拟专用网络) :在公网中传递私网路由,在互联网中划分了一个单独的通道,相当于不用自己铺铁路,带个个小板凳,坐在火车里面给你捎过去了。
特点:成本低,使用共享的公共网络环境实现各私网的连接,不同的私有网络之间相互不可见
传统的VPN:
运营商通常仅仅是提供链路的互通,vpn的配置在企业端完成
通常也称为 overlay vpn 覆盖型vpn或者叠加型vpn
新型的VPN:
运营商不仅仅提供链路的互通,还可以帮助企业用户来管理路由,实现vpn互通
通常也称为 peer to peer vpn 点到点vpn
比如:mpls-vpn
mpls-vpn架构
设备介绍
C设备--企业内部设备(也叫站点) CE设备--企业边界设备
P设备--运营商骨干设备 PE设备--运营商边界设备(该设备与企业客户设备相连)
难道mpls-vpn 没有任何问题吗?有!那他是怎么解决的
实验
CE和PE之间的本地路由冲突
备注:一个城市可能有非常多的企业来租用运营商的VPN,运营商不可能每一个公司都准备一台PE设备,成本太高,所以就可能会出现,一个PE设备,连接多个公司,这些公司在运营商那边称为VPN客户
存在问题
一个PE设备,非常可能同时连接多个VPN客户(多个公司),所带来的问题
IP地址空间重叠:不同的VPN客户内部可能会使相同的私有地址段,所以所传递的路由有可能是重复的
数据泄露:不同的VPN客户都与PE(R1)有路由,所以不同的VPN客户之间有可能实现数据的互相访问
解决方案:
解决方案:VRF (Virtual Routing Forwarding)
每一个客户(公司)对应一个VPN实例 **(VPN路由表)**
每一个VPN实例对应一个独立的VPN路由表
VPN路由表之间是相互隔离的
配置:
[R1] ip vpn-instance b1 //创建vpn-instance 并命名b1
ipv4-family //开启ipv4家族
[R1] int g0/0/1
ip binding vpn-instance b1 //接口绑定vpn 路由表b1
Info: All IPv4 related configurations on this interface are removed!
Info: All IPv6 related configurations on this interface are removed!
//这个接口下的所有的ipv4/ipv6都被清除了
ip address 192.168.16.1 24 //重新配置接口IP地址
查看:
先来验证R6 ping 192.168.16.1 ,可以ping通
<R6>ping 192.168.16.1
PING 192.168.16.1: 56 data bytes, press CTRL_C to break
Reply from 192.168.16.1: bytes=56 Sequence=1 ttl=255 time=30 ms
再次验证:R1 ping 192.168.16.6,发现ping不通
[R1]ping 192.168.16.6
PING 192.168.16.6: 56 data bytes, press CTRL_C to break
Request time out
查看路由:
[R1]dis ip routing-table 192.168.16.6
[R1] 路由为空
而且不仅没有路由,连端口也消失了,所以ping不通 192.168.16.6
[R1]dis ip routing-table
[R1] 在路由表中,别说路由了,连接口都消失的无影无踪了
查看vpn路由表
[R1]dis ip routing-table vpn-instance b1
设置默认路由/双方可以互通
[R1] ip route-static vpn-instance b1 192.168.1.0 24 192.168.16.6
备注:企业的边界设备(CE-也就是R6)一定要配置默认路由
[R6] undo bgp 100 //先删除R6中原来配置BGP
[R6] ip route-static 0.0.0.0 0.0.0.0 192.168.16.1 //记得在R6上配置默认路由
r5和r7也是这种配置
PE和P之间的问题
PE设备保存VPN路由表和全局路由表,P设备只保存全局路由表
PE设备利用VPN路由表解决了本地路由冲突(IP地址空间重叠)问题,但是PE设备在向P设备发送路由时,路由在骨干网络传输中还会出现路由冲突问题,如何解决?
解决方案:
PE设备在维护多个VPN 路由表时,同时还维护一个公网的路由表。
RD:路由标识符:使用一个全局唯一的标识 和ipv4地址绑定,以区分冲突的私网路由,这个标识被称为RD
RD 字段长度:8字节---64bit iPv4地址长度:4字节---32bit
RD(64)+IPv4(32)=96bit 的新地址,这个新地址就是VPNV4地址。
[R1]ip vpn-instance b1
[R1-vpn-instance-b1]route-distinguisher 1:5 //配置RD
注:同一个vpn客户的总部和分公司的RD 强烈建议一致,不同vpn客户的RD 不能一致
MPLS VPN 的路由如何引入到相对应的VRF
PE和PE在全局路由表传递路由的依赖的是RD
但是R5-PE收到来自R1-PE的MPBGP路由后,需要将这个RD去掉,然后在给到VRF虚拟路由表,由于PE设备中有可能连接了多个企业客户,有可能有多个VRF路由表,PE如何判断要把一个去掉RD的路由放到那个VRF路由表呢? 就是把路由传递给那个企业
解决方案:
RT:路由标签
每一个企业所属的vpn路由,在进入全局路由表传输的时候,都会打上RT标签
# RT标签有出入两个方向,
集团总部的出标签(Export)===分公司的入标签(Import)
集团总部的入标签(Import)===分公司的出标签(Export)
备注:
RT是BGP的扩展团体属性,它分为import RT 和export RT
分别用于路由的导入和导出
配置:
[R1]ip vpn-instance b1
[R1-vpn-instance-b1]vpn-target 6:7 export-extcommunity //配置RT--出向
vpn-target 7:6 import-extcommunity //配置RT--入向
[R5]ip vpn-instance b1
[R5-vpn-instance-b1]vpn-target 6:7 import-extcommunity //配置RT--出向
vpn-target 7:6 export-extcommunity //配置RT--入向
注:RT具有全局唯一性,并且只能被一个VPN使用
总结
问题1:也叫本地路由冲突问题(IP地址空间重叠)-----解决方案:VRF
问题2:路由在传输中的冲突问题----解决方案:RD
问题3:对端VPN路由表里的VPN路由引入到对端VPN路由表的问题----解决方案:RT