MPLS与MPLSVPN技术白皮书Word文档下载推荐.docx
《MPLS与MPLSVPN技术白皮书Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《MPLS与MPLSVPN技术白皮书Word文档下载推荐.docx(46页珍藏版)》请在冰豆网上搜索。
Push(插入标签)/pop(弹出)/swap(转发标签)/null(特殊标签空标签)。
③FTN(FECtoNHLFE):
将FEC映射到NHLFE
④ILM(IncomingLabelMap):
将MPLS标签映射到NHLFE
2.2.MPLS与MPLS-VPN关系
二、LDP协议原理
从
1.LDP基本概念
LDP是一个动态的生成标签的协议,与动态路由协议(如OSPF)十分相像,都具备如下的几大要素:
Ø
报文(或者叫消息)
邻居的自动发现和维护机制
一套算法,用来根据搜集到的信息计算最终结果
前者计算的结果是标签,后者是路由
主要功能:
发布Label-FEC映射
建立与维护标签交换路径
LDP使用TCP的传输服务
2.LDP的消息类型
在LDP协议中,存在4种LDP消息:
发现(Discovery)消息:
用于通告和维护网络中LSR的存在。
会话(Session)消息:
用于建立,维护和结束LDP对等实体之间的会话连接。
通告(Advertisement)消息:
用于创建、改变和删除特定FEC-标签绑定。
通知(Notification)消息:
用于提供消息通告和差错通知。
3.LDP的特点
LDP建立邻居分为两个阶段:
发现邻居阶段、会话建立阶段
LDP的协议报文除Hello报文基于UDP外,其它报文都是在TCP之上,端口号为646。
与BGP相似,这种基于TCP的可靠连接使得协议状态机较为简单
4.LDP建立和维护
4.1.LDP建立
下面两台设备之间LDP建立信息实际debug报文信息以及注释:
<
191>
Jul2416:
54:
52RALDP0448C400[Core0]:
LDP:
--------------------------------------------
MSGSENT//表示LDP发出的信息
|-------------------------------------------|
LDPPDUHDRCONTENTS:
LDPVersion:
1//LDP版本为1
LDPPduLen:
22//LDP长度为22字节
LDPId:
1.1.1.1:
0//LDP的ID为1.1.1.1
LDPMSGHDRCONTENTS:
LDPMsgType:
0x100-HelloMsg//0X100表示为hello的message消息
LDPMsgLen:
12//message消息长度字节
LDPMsgId:
1//message消息ID号,发一次增加1
LDPTLVType:
0x400-CMNSSNPRMSTLV.//查找TLV汇总内0X400表示hellomessage
LDPTLVLen:
4//TLV长度字节
HoldTimeVal:
15//hello保持时间
TRBITfield:
0
---------------------------------------------
MSGRECEIVED
1
22
2.2.2.2:
0
0x100-HelloMsg
12
326
0x400-CMNSSNPRMSTLV.
4
15
MSGSENT
2
1//LDP版本
32//LDP长度
0//LDPid
0x200-LdpInitMsg.//表示Initialization_Message
22//LDPmessage长度
327//LDPmessageID进程号
TLVType:
0x500-CmnSsnParmsTlv.//表示Initialization_Message
TLVLength:
14//TLV长度
1//LDP版本号
KeepAliveTime:
60//keepalive计时器60秒
Advt_LoopInf:
0//值为0意味着指示游不请自来的广告;
值为1意味着下游按需。
AdvtType:
DU.//标签的分配方式
LoopDetection:
Disabled.//环路检测状态
PathVectLimit:
0//值为0时表示禁用环路检测
MaxPDULength:
4096//最大长度字节为4096
RcvrLDPId:
0//发送给1.1.1.1的LSR
32
0x200-LdpInitMsg.
3
0x500-CmnSsnParmsTlv.
14
1
60
0
DU.
Disabled.
4096
0x201-KeepAliveMsg.//keepalivemessage消息
4//message长度
4//进程ID号
0x201-KeepAliveMsg.
328
5.LDP邻居状态机制
端口启动ldp之后,首先从NONEXISTENT各自发送hello报文,hello报文是UDP报文。
处理对端的hello时开始判断自己应该是activerole还是passiverole,这时可能要比较hello报文的源ip地址,地址大的一方是activerole。
协商下来A设备是activerole状态时,发送init消息后,会转换成opensent状态。
B设备为passiverole状态时(被动方),接收到主动发送init消息后,openrec状态,动作会发送init初始化消息和keepalive消息。
A设备opensent接收到B设备发送init初始化消息后,从opensent转换openrec,动作会发送可keepalive消息。
A设备和B设备都接收到keepalive消息后,都从openrec状态转换到OPERATIONAL操作状态,也就是最后状态。
状态
事件
新状态
NONEXISTENT
会话TCP连接建立
INITIALIZED
发送初始化消息(主动角色)
OPENSENT
接收可接受的初始化消息(被动角色)
OPENREC
动作:
发送初始化消息和KeepAlive消息
接收到其他LDP消息
发送ErrorNotification消息(NAK),关闭传输
连接。
接收KeepAlive消息
OPERATIONAL
接收其他LDP消息
接收到可接受的初始化消息
发送KeepAlive消息
接收到Shutdown消息
发送Shutdown消息,关闭传输连接。
Timeout
6.
标签分发和管理
MPLS体系结构允许一个LSR分发一个FEC标记绑定作为从另一个LSR来的请求的回应,这个被叫做下游按需标记分发。
还允许一个LSR分发标记绑定到没有显式请求他们的LSR,叫这种标记分发的方法下游自主。
这两种标记分发技术可以在一个网络中同时使用。
然而,对于一个给定的LDP会话,每一个LSR必须明白它的对等体使用的标记分发方法,来避免一个对等体使用下游自主标记分发而假设它的对等体也这么做的情况。
因此下面详细讲解标签分发和管理:
标记分发控制模式、标记保持模式、标记广告模式。
6.1.标记分发控制模式
LSP的初始建立的行为由是否LSR执行独立或者有序的LSP控制决定。
一个LSR可以通过可配置的选项支持两种控制。
6.1.1.独立分发控制
当使用独立LSP控制时,每个LSR可以在任何需要的时候广告标记映射到它的邻居。
通俗点就是,上游LSR请求FEC的标记映射时,下游LSR则立刻广告标记映射到上游LSR。
6.1.2.有序分发控制
当使用LSP有序控制时,一个LSR仅当一个FEC有了下一跳的标记映射或者LSR是出口时,才能初始化这个FEC的标记映射的传输。
对于LSR不是出口且没有映射存在的FEC,LSR必须等待接收一个下游LSR的标记,才能映射这个FEC并发送广告相应的标记到上游LSR。
简单的说,就是上LSR请求标记时,下游LSR判定FEC是否属于本地,属于则立刻将标记映射广告给上游LSR,不属于则等待下一跳LSR广告标记映射发送给自己,从而再广告给自己的上游LSR.
6.2.标记保持模式
MPLS体系结构介绍了标记保持模式的概念,指定了一个LSR是否维持一个从邻居学习的FEC的标记绑定,如果该邻居对于该FEC是不是它的下一跳。
6.2.1.保守标记保持模式
在下游自主广告模式中,所有路由器的标记映射广告可能被全部的对等体LSR接收到。
保守标记保持模式,只保留来自下一跳邻居的标签,丢弃所有非下一跳邻居发来的标签。
优点:
节省内存和标签空间。
缺点:
当IP路由收敛、下一跳改变时LSP收敛慢。
6.2.2.自由标记保持模式
自由标记保持时,保留来自邻居的所有发送来的标签。
当IP路由收敛、下一跳改变时减少了lsp收敛时间;
需要更多的内存和标签空间。
6.3.标记广告模式
LSR上的每一个接口被配置在下游自主或者下游按需广告模式下运行。
LSR在初始化时交换广告模式,下游自主和下游按需的主要区别是哪个LSR负责发起映射请求和映射广告。
6.3.1.下游LSR按需广告
上游LSR向下游LSR发送标签请求消息(包含FEC的描述信息)
下游LSR为此FEC分配标签,并将绑定的标签通过标签映射消息反馈给上游LSR
6.3.2.下游LSR自主广告
下游LSR在LDP会话建立成功,主动向其上游LSR发布标签映射消息
上游路由器保存标签,存放到标签映射表中
6.4.标记分配管理搭配
LDP默认设置,我们目前是独立+自主+保守模式。
华为华三是独立+有序+自由模式,思科是独立+自主+自由模式。
标记分发管理模式配置命令:
RB_config#mplsldplabel-?
label-distribution--配置LDP标签分配控制模式
label-retention--配置LDP标签保存模式
RB_config#mplsldplabel-distribution?
independent--配置LDP标签分配为独立模式
ordered--配置LDP标签分配为有序模式
RB#showmplsldpparameters
Protocolversion:
Sessionholdtime:
60sec;
keepaliveinterval:
20sec
Discoveryhello:
holdtime:
15sec;
interval:
5sec
LDPloopdetection:
off
LDPlabeldistributionmethod:
DU(自主)//标记广告自主
LDPlabelretentionmode:
Conservative(保守)//标记保持方式保守
LDPlabelallocationmethod:
Independ//标记分配独立模式
7.思考
对于一台设备的标签转发表来说:
✧所有的入标签()
✧对于相同的路由(下一跳也相同),出标签()
✧对于不同的路由(但下一跳相同),出标签()
✧对于不同的路由(下一跳也不同),出标签()
✧对于同一条路由,入标签和出标签()
A一定不同B一定相同C可能相同
三、MPLS区域形成
转发①
IP:
A向IP:
B通信
R1通过PUSH动作:
在边缘设备上根据MPLS转发表向IP报文中插入MPLS报文头(标签为202)。
R1通过NHLFE,转发给R2。
转发②
R2使用SWAP动作:
R2收到标签报文后,按照MPLS转发表中相关表项对报文中的标签进行替换。
R2通过NHLFE转发给R3。
提出问题:
R2如何判断这是一个MPLS标签报文并交给MPLS转发表处理,而不是交给IP路由表处理?
根据二层协议字段进行判断,以太网:
0x8847表示为MPLS标签报文。
转发③
R3使用POP动作:
R3收到标签报文后,按照MPLS转发表中相关表项对报文中的标签进行弹出。
R3根据NHLFE转发R4。
为什么设置在倒数第二跳时,弹出标签,而不是在R4最后一跳弹出标签?
在最后一跳,MPLS标签已经没有意义。
如果在最后一跳R4上携带标签会增加最后一跳负担。
先弹出标签,再查找路由表,最后转发。
转发④
R4直接查找路由表转发给IP:
B。
3.MPLS封装格式与标签位
Label:
用于指导设备进行标签交换
EXP:
通常是作为MPLSQoS中的标记所使用的。
S:
标识该标签是否是标签栈底,如果S位为1则表示尾部标签。
TTL:
作用同IP头部的TTL一样,用于防止转发时的环路。
理论上,标签栈可以无限嵌套,从而提供无限的业务支持能力。
这是MPLS技术最大的魅力所在。
三、MPLS-VPN功能类型
传统的VPN一般是通过GRE、L2TP、PPTP、IPSec协议等隧道由客户自行建立,而公网上的VPN隧道,通过运营商建立,我们通过MPLS-VPN技术实现公网上的VPN隧道。
MPLS-VPN设计专业术语,我们先提前了解下便于后面阅读时有助于理解:
标签(Label)通常只具有局部意义的标识,这些标签通常位于数据链路层的数据链路层封装头和三层数据包之间,标签通过绑定过程同FEC相映射。
FEC:
ForwardingEquivalenceClass,FEC(转发等价类),是在转发过程中以等价的方式处理的一组数据分组,通常在一台设备上,对一个FEC分配相同的标签。
标签交换通道。
一个FEC的数据流,在不同的节点被赋予确定的标签,数据转发按照这些标签进行。
数据流所走的路径就是LSP。
LabelSwitchingRouter,LSR是MPLS的网络的核心设备,它提供标签交换和标签分发功能。
俗称为P。
LER:
LabelSwitchingEdgeRouter,在MPLS的网络边缘,进入到MPLS网络的流量由LER分为不同的FEC,并为这些FEC请求相应的标签。
它提供流量分类和标签的映射、标签的移除功能。
俗称为PE。
1、MPLS-L2VPN
主要通过二层报文进行数据转发。
如图两端CE客户端的IP地址都是属于同一