Label一般是由运营商端的Router添加。

去往相同网段的数据包打相同的标签

基于每个数据包的负载均衡
基于目的地的负载均衡

启用CEF无非做两件事:1.把路由表中条目进行优化,加入FIB;2.把ARP表项以及帧中继映射进行优化,内容加入Adjacency Table。
启用CEF生成一张FIB(Forwarding Information Base)表(经过优化的,解决了递归路由),FIB表是基于拓扑的

LIB(Label Information Base)用来存放TDP/LDP邻居给我分发的他们的标签以及保存本地基于路由条目所产生本地标签。
LFIB:真正用来转发带标签的报文的表

路由器分发标签永远是基于FIB表项(启用MPLS的前提是启用CEF)

在一台路由器上,不能为不同的路由条目分发相同的标签,每条路由条目对应一个本地唯一的标签。例外是0-15标签,如果给路由条目分发的标签取值范围在0-15之间,此时多条路由可以对应相同的被保留标签。

对于一条路由条目,如果该路由器路由表中该路由条目的出站接口是一个没有启用MPLS的接口,则该路由器就是最后一跳路由器,或者该路由条目对应的下一跳邻居不是本地的TDP/LDP邻居时该路由器同样为最后一跳路由器,只要一台路由器收到了关于一条路由条目的标签是3,则该路由器就会判断自己就是倒数第二跳路由器。

FEC:转发等价类。一个路由条目对应一个FEC,对应一个标签。
LDP/TDP:为FIB表中路由条目分发标签,把我本地的标签通告给我的邻居,并且形成LIB和LFIB。
CEF:运行MPLS的必要因素,先运行CEF才能运行MPLS,同时会形成两张表 FIB和Adj Table,其中FIB可以用来实现标 签的插入。

VRF Virtual Routing Forwarding.一个VRF就是一个MPLS VPN中的实力例(进程)。
一台PE为一个公司提供MPLS VPN就要为该公司定义一个本地唯一的VRF进程。
PE创建了VRF之后,一定要将其和某个连接CE接口关联。

RD(区分多家公司相同的路由前缀):当PE把私网路由在运营商内传递的时候能够区分相同的路由,做一个域内传递的区分。
RT:Route Targets 该路由条目会被哪个进程所接收。
MPBGP用来路由VPNv4路由 VPNv4路由条目举例:RD:目标网路/掩码

数据层面双标签机制:
里层标签:告知我的远端PE端收到报文之后查找哪张VRF表
外层标签:在mpls域传递的时候能杜绝数据层面的路由黑洞

在控制层面收到一条VPNv4路由,这个路由的入站接口没有和任何的VRF关联,这个时候该路由加入哪张表取决于RT。
在数据层面通过一个接口收到数据包,这个接口没有和任何VRF关联,这个时候我查哪张表,取决于里层标签。

VRF用来区分不同的路由表

RD用在传递路由时区分相同的路由条目(比如两条1.1.1.0/24)

RT用来标示应该把该路由加入哪个VRF

用RT来区分相同的路由条目就好了,为什么还要引入RD?
因为一条VPNV4路由只能添加一个RD值,但是可以添加若干RT值。

因为从不同VRF学到的相同的路由可以打相同的RT(负载均衡),所以才引入RD做本地路由区分,如果RD也和路由一样相同了就变成了两个相同的包。

用OSPF作为IGP,MPLS不能正常工作原因:
因为OSPF宣告环回口默认为32位,本地环回口路由又为24位,所以本地路由器不会为/32位路由条目分配标签(本地只为/24位分配标签),所以邻居路由器想到达该环回口只能untaged去掉标签采用普通方式与该环回口通信。

MPLS VPN会打两层标签,第一层是ldp根据路由前缀打的,第二层是BGP根据VPNv4路由前缀打的。

为什么LDP协议既能支持TCP又能支持UDP?
建立邻居使用UDP,传递标签使用TCP

MPLS笔记的更多相关文章

  1. mpls vpn剩余笔记

    将IP地址映射为简单的具有固定长度的标签 用于快速数据包交换 20 3 1 8 在整个转发过程中,交换节点仅根据标记进行转发 标签交换路径(LSP) 多协议标签交换MPLS最初是为了提高转发速度而提出 ...

  2. MPLS VPN随堂笔记3

    跨域 ASBR之间运行MPBGP 1.配置AS内部IGP保证环回口互相可达,同时建立LDP邻居 (优先启用 mpls label rang 16 100)方便查看实验现象 2.配置PE1-PE2 PE ...

  3. MPLS VPN随堂笔记2

    深入理解ospf 理解MPLS VPN 中对OSPF 层次化设计的补充 supper backbone area 2:理解MPLS VPN 中OSPF 的区域设计概念 3:理解MPLS VPN 中OS ...

  4. MPLS VPN随堂笔记1

    MPLS VPN 基础 1.MPLS vpn架构的特点 1.1.允许不同CE传递相同私网路由 1.2.SP内部(所有P路由器)不需要学习CE路由 1.3.无安全保障但有带宽保障(跟SP租用服务) 2. ...

  5. MPLS LDP随堂笔记2

    前一天排错 Acl 1 匹配所有ospf的数据包 (目的 ospf建立邻居关系 传递路由条目) 2 放行UDP报文 让LDP邻居能互相收发HELLO包 4 放行TCP报文 让LDP邻居能够建立TCP会 ...

  6. MPLS LDP随堂笔记1

    LDP 的使用原因(对于不同协议来说) LDP的四大功能 发现邻居 hello 5s 15s 224.0.0.2 发现邻居关系 R1 UDP 646端口 R2 UDP 646端口 此时形成邻居 建立邻 ...

  7. mpls vpn剩余笔记

    将IP地址映射为简单的具有固定长度的标签 用于快速数据包交换 20 3 1 8 在整个转发过程中,交换节点仅根据标记进行转发 标签交换路径(LSP) 多协议标签交换MPLS最初是为了提高转发速度而提出 ...

  8. MPLS VPN随堂笔记2

    深入理解ospf 理解MPLS VPN 中对OSPF 层次化设计的补充 supper backbone area 2:理解MPLS VPN 中OSPF 的区域设计概念 3:理解MPLS VPN 中OS ...

  9. MPLS VPN随堂笔记1

    MPLS VPN 基础 1.MPLS vpn架构的特点 1.1.允许不同CE传递相同私网路由 1.2.SP内部(所有P路由器)不需要学习CE路由 1.3.无安全保障但有带宽保障(跟SP租用服务) 2. ...

随机推荐

  1. python中使用OpenCV处理图片

    1.导入OpenCV包 import cv2 2.读取图片 cv2.imread(image_path, mode)        读入函数,包含两个参数,第一个为图片路径及图片名,第二个为读取图片方 ...

  2. ABP框架系列之四十八:(Specifications-规范)

    Introduction Specification pattern is a particular software design pattern, whereby business rules c ...

  3. vue路由跳转到指定页面

    1.this.$router.push({name:'Home'}) 2.this.$router.push({path:'/view'}) 3.this.$router.replace({name: ...

  4. 利用foo函数的Bof漏洞攻击:构造攻击字符串

    利用foo函数的Bof漏洞攻击:构造攻击字符串 一.基础知识储备 objdump反汇编指令.gdb函数调试运行.Perl语言.|管道符 二.实验步骤 1. 通过反汇编了解程序功能及代码 ①反汇编查看文 ...

  5. Ngui使用随心记

    Ngui的一些基础使用心得! BB:首先BB一下我觉得NGUI和UGUI哪个好?我首推UGUI,先不说是官方内置,在使用的方便性上也要好很多,而且NGUI停止更新了!还有就是NGUI有BUG! Ngu ...

  6. 1.Spring框架入门案例

    一.简单入门案例 入门案例:IoC 1.项目创建与结构 2.接口与实现类 User.java接口 package com.jd.ioc; /** * @author weihu * @date 201 ...

  7. Python PIL 库的应用

    PIL (Python Image Library) 库是Python 语言的一个第三方库,PIL库支持图像存储.显示和处理,能够处理几乎所有格式的图片. 一.PIL库简介 1. PIL库主要有2个方 ...

  8. Swift5 语言指南(七) 集合类型

    Swift提供三种主要的集合类型,称为数组,集合和字典,用于存储值集合.数组是有序的值集合.集是唯一值的无序集合.字典是键值关联的无序集合. Swift中的数组,集合和字典总是清楚它们可以存储的值和键 ...

  9. C#6.0语言规范(二) 词法结构

    程式 AC#程序由一个或多个源文件组成,正式称为编译单元(编译单元).源文件是Unicode字符的有序序列.源文件通常与文件系统中的文件一一对应,但不需要此对应关系.为了获得最大的可移植性,建议使用U ...

  10. 小游戏——金庸奇侠传(JAVA,对面向对象的进一步了解)

    金庸群侠传 游戏运行界面:   游戏实现源码: package game.logic; //人类 public class Person { public String name; //名字 Pers ...