MPLS基础培训胶片
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MPLS包头结构
0 1 2 3 01234567890123456789012345678901 Label | Exp|S| TTL
Label = 20 bits Exp = Experimental, 3 bits, 通常用作COS 通常用作 S = 标识是否是栈底 1bit 标识是否是栈底, TTL = Time to live, 8 bits
IP ETH IPX
MPLS ATM FR PPP X.25 ETH IPX IP
SNA
MPLS协议的位置
七层 四层 三层
LDP协议 TCP/UDP IP MPLS
二层 一层
链路协议 物理接口
MPLS在协议栈中的位置
PPP Header(Packet over PPP Header SONET/SDH) Ethernet
MPLS的转发表的数据结构(续)
typedef struct tagMplsNhlfe { ULONG ulOutIfIndex; ULONG ulHopCount; ULONG ulNextHopAddr; UCHAR ucLsrType; UCHAR ucOutStackSize; ULONG aulOutLabelStack [ AMB_LMGR_MAX_LABEL_STACK ]; }MPLS_NHLFE_S;
MPLS Header
Layer 3 Header
Ethernet Hdr GFC VPI Label
MPLS Header VCI
Layer 3 Header DATA
ATM Cell Header
PTI CLP HEC
Frame Relay
Flags
DLCI
DLCI Label
DATA
FCS
Flags
NHLFE
NHLFE
NHLFE
压 标 签
换 标 签
弹 标 签
入口
中间节点
出口
MPLS的转发表的数据结构
typedef struct tagMplsIlm typedef struct tagMplsFtn { AVLL_NODE FTNNode; ULONG ulLSPID; ULONG ulDestPrefix; UCHAR ucDestPrefixLen; MPLS_NHLFE_S *pstNhlfe; }MPLS_FTN_S; { AVLL_NODE IlmNode; ULONG ulDestPrefix; UCHAR ucDestPrefixLen; ULONG ulLabel; ULONG ulInIfIndex; MPLS_NHLFE_S *pstNhlfe; ULONG ulLspID; UCHAR ILMDeleteLabelFlag; }MPLS_ILM_S ;
MPLS 转发图示
MPLS转发过程:
Ingress LSR 接收到IP报文,进行流分类或查转发表,打上标 签,并根据标签转发表项转发此标记报文。 Transit LSRs根据入接口和入标签查找标签转发表项得到出接 口和出标签,打上交换的标签,转发。 在LSP倒数第二跳或Egress LSR,弹出标签,还原IP报文后, 按照IP转发程序继续转发。
IP包在打上MPLS包头后还是需要有二层的包头封装。ATM/FR 则分别采用原来包头的VPI/VCI,DLCI做标签
MPLS相关概念
MPLS: Multi Protocol Label Switching LSR: label switching router LSP: label switched path (单向) Ingress LSR 入口LSR Transit LSR 中间LSR Egress LSR 出口LSR label:标签,固定长度的一个数字
Tunnel Label 90 Tunnel LSP2
LSP1
环路和TTL
在IP网络中使用TTL来预防IP报文在网络中的 无限传播。 MPLS可以使用类似于IP的机制,但并非在所有 封装形式中都适用
TTL存在于PPP和LAN报文的MPLS包头中。 ATM信元头不包含TTL域
标签分发协议中的环路检测
LSR-4
Label = 21 IP 报文 TTL = 6 LSR-5
IP 报文 TTL = 6
Egress
TTL在进入无TTL能力的LSP之被减量 如果在入LSR TTL为0,则该数据包被丢弃
MPLS的标签分发协议
MPLS连接可以使静态配置,也可以通过MPLS信令协议 建立标签连接。现有的MPLS标签分配协议有:
MPLS培训胶片
2003年5月
MPLS体系结构
RFC3031 - Multiprotocol Label Switching Architecture 协议组成
标签交换 信令协议:LDP/RSVP等,完成标签的分配
MPLS的意义
高速交换 有连接: 有利于QOS、VPN、FE 可融合多种协议 SNA
MPLS通知底层的示例(续)
Ingress上创建LSP Create函数 非Ingress创建LSP Create函数 函数类型 补充说明 ulLSPID ulUpdateNum ulRequestID ucLSRType ulVCID ulInLabel ulInIfIndex ulNextHopAddr ulOutIfIndex ucOutStackSize ulOutLabelStack LSP ID 0 由底层同步返回 MPLS_LSP_INGRESS 0 0 0 下一跳地址 出接口 1或2(FAST Reroute时) 出标签栈 LSP ID 0 由底层同步返回
MPLS通知底层的接口结构(续)
/* 以下参数与LSP的创建和更新有关 */ /* LSR类型 */ UCHAR ucLSRType; /* L2VPN VC ID */ ULONG ulVCID; /* 入标签 */ ULONG ulInLabel; /* 入接口索引 */ ULONG ulInIfIndex; /* 下一跳地址 */ ULONG ulNextHopAddr;
MPLS 图示(续)
MPLS转发示意:
In If In Lbl Prefix Out IfOut Lbl 0 - 172.90.38 1 30
InIf InL P bl refix O t IfO L l u ut b 0 45 172.90.38 1 3
InIf InL P bl refix O IfO L ut ut bl 0 3 172.90.38 -
In If In Lbl Prefix Out IfOut Lbl 0 30 172.90.38 1 45
倒数第二跳弹出,Penultimate Hop Popping(PHP)
标签栈
报文可以携带多个标签 转发行为根据栈顶标签 LSP Over LSP (LSP隧道) 应用于VPN等
标签栈转发图示
压标签(PUSH):Ingress LSR,打上标签头后转发
在后续节点,根据报文携带的标签转发 根据标签查找LIB (Label Information Database)决定转发行为
交换(SWAP):Transit,新标签替代入标签后转发 弹出(POP):Egress,标签弹出,转IP协议栈处理 倒数第二跳弹出:PHP(Penultimate Hop Popping), 倒数第二跳,弹出后转发 交换后压标签(SWAP & PUSH): 标签栈,标签替代 后压上一个或多个标签转发
MPLS通知底层的接口wenku.baidu.com构
typedef struct tagMPLSRequestProductMsg { /* LSP标识,底层不处理,在响应时返回 */ ULONG ulLSPID; /* 请求更新序号,底层不处理,在响应时返回 */ ULONG ulUpdateNum; /* 请求标识,每次请求时由底层返回,用于对应Update和 Delete请求 */ ULONG ulRequestID;
Remote MPLS Peer Label Exchange for F1 – 30
F1
20
F1
30 50
F1
30 90
F1
40 F1
Push 20
Swap to 30 Then Push 50
Swap to 90
POP 90 Then Swap to 40
POP 40
Tunnel Label 50
底层通知MPLS的接口结构
typedef struct tagMPLSProductResponseMsg { /*底层驱动对Create, Update请求的响应,Delete请求不响应, 事件类型包 括: MPLS_RESPONSE_CREATE_LSP,MPLS_RESPONSE_UPDATE_LSP MPLS_BATCH_UPDATE_LSP */ UCHAR ucEventType; ULONG ulLSPID; ULONG ulUpdateNum; ULONG ulErrorCode; ULONG ulNHLFEIndex; } MPLS_PRODUCT_RESPONSE_MSG_S;
MPLS通知底层的接口结构(续)
/* 出接口索引 */ ULONG ulOutIfIndex; /* 出标签栈大小 */ UCHAR ucOutStackSize; /* 出标签栈,依照标签栈顺序 */ ULONG aulOutLabelStack [AMB_LMGR_MAX_LABEL_STACK ]; /* 资源标识,无资源要求时为0 */ ULONG ulRHandle; }MPLS_REQUEST_PRODUCT_MSG_S;
相关概念
Ingress LSR Transit LSR Egress LSR
LSP
注意LSP是单向的传输通道
2 3 data
2 L 3 data
LSP内传递的数据帧
2 3 data
MPLS转发简介
MPLS转发与传统IP报文转发的比较
传统的IP报文转发 - 每个报文根据分析报文 头,查找路由,独立计算下一跳 MPLS转发 - 报文的转发基于标签交换,得 到下一跳
下一跳和出接口索引 转发行为类型 出标签(Swap) 还可能有报文转发的链路层封装形式
FEC-to-NHLFE Map (FTN) - Ingress Incoming Label Map (ILM) - Non Ingress
三种转发控制表
目 的 IP FTN 入 标 签 ILM 入 标 签 ILM
标签操作类型
PUSH
在入口压标签 2 3 data 2 L 3 data 2 L 3 data 2 L2 3 data
SWAP POP
在出口弹标签
在中间节点替换标签 2 L 3 data 2 3 data
标签信息库(LIB)
下一跳标签转发表项 - Next Hop Label Forwarding Entry (NHLFE),包括:
MPLS_LSP_PHP MPLS_LSP_TRANSIT MPLS_LSP_EGRESS
0 入标签 入接口 PHP和TRANSIT有效 PHP和TRANSIT有效 PHP: 1 TRANSIT: 1或2 (FAST Reroute时) PHP: ulOutLabelStack[0]=Implicit Null TRANSIT: 出标签栈
将报文划分分属不同的转发等价类(FEC)
FEC (Forwarding Equivalence Classes) 报文的FEC划分可基于
目的单播地址 流量工程 VPN 隧道 QoS等
每个FEC映射到某个下一跳 FEC可以理解为按某种条件划分出来的一个数 据流
MPLS转发(续二)
报文进入网络,打上该FEC对应的标签并转发
可以多于一个标签,(标签栈) MPLS转发仅基于标签栈顶标签转发报文 MPLS通常是夹在二层链路层和三层IP报头之间的协议,承载 MPLS的链路层可以是: Point-to-Point link (PPP) Ethernet ATM Packet Over SONET (POS)等
MPLS转发(续一)
跳数 (Hop Count) 路径矢量 (Path Vector)
环路和TTL(续)
LSR-1 LSR-2 IP报文 TTL = 10 Label = 25 IP 报文 TTL = 6 Label = 39 IP 报文 TTL = 6 LSR-6 LSR3
LSR-6 --> 25 跳数=4 标签分发协议的IGP域