mpls 多协议标签交换
传统的IP转发:最长匹配 而且是每一跳路由器查找
后来出现了一个技术叫ATM ATM他是基于VPI/VCI(类似帧中的DLCI 精确查找)
速度比较快 一度以为ATM取代IP地位 因为硬件发展起来了 而且本身ATM机制复杂 当主要厂家都还没弄明白ATM 还没来得生产ATM的设备时
三种报文转发(进程转发:路由器查找进来的每一个报文 执行最长匹配查找
快速转发 第一个报文过来,查找路由表 保存在缓存里 后面的报文直接查缓存(缓存里面保留是/32的条目 所以数量有限)  CEF(CISCO 快速转发  当网络路由协议收敛时 三层的控制平面(路由协议 路由表)会生成数据平面 FIB 邻接关系表)
MPLS把ATM优点继承了 把一些不好的东西丢弃 MPLS把ATM里面的VPI/VCI重新命名成 标签(多协议 不仅仅支持IP 还可以支持其它协议) 属于2/5层
标签的格式:MPLS的报头总共32比特 其中有20比特的标签(0--1048575  默认情况下是16-100000)还有三比特EXP位(作用类似于IP报头里面的TOS字段中IP优先级 或者说ISL/802.1Q COS字段)  还有一个比特的S(栈底标识)以及8个比特的TTL值
标签的三种动作(压入标签 PUSH 交换标签SWAP  弹出标签 POP)
标签的分发协议有两个(CISCO专有 TDP  还有公有LDP) 就帧模式的MPLS来说(ATM环境中的MPLS叫CELL模式)只要开启了CEF 而且只要有一个接口加进了MPLS里面 那么就会为IGP条目(包含静态路由)分发标签(本地标签 LOCAL)
标签的分发:会向所有的LDP/TDP邻居 分发标签 而且会把收到所有标签保留
MPLS的控制平面: LDP/TDP 数据平面 标签转发表 是由标签绑定表和FIB结合起来得到的(前往一个目标 选择哪个标签? 选择FIB里面下一跳所分发的标签.)
PHP技术 倒数第二跳弹出 为了避免最后一跳路由执行两次查找 (由最后一跳路由器给我分配一个隐式空标签) 只要是我自己直连的路由条目,我就是最后一跳.
MPLS是不会为从BGP学的条目分配标签 当前往些这些学到的BGP条目 直接使用所学到条目下一跳的标签
MPLS的使用:
MPLS BGP :
MPLS ×××
TDP/LDP 邻居建立的条件(协议要一样) TDP采用端口号711 LDP采用端口646端口号 (LDP 通过UDP的646端口号发送HELLO报文用来 发现邻居 组播发送 组播地址224.0.0.2(代表所有路由器) 接着通过TCP 646端口来建立邻居 )
双方的ROUTE-ID可达
标签分发机制(独立 没有建立邻居可以分发本地标签 自主 自己决定把所分的本地给所有邻居 自由 会保存所有邻居分发过来的标签 帧模式)
控制
MPLS MTU(最大传输单元) 以太口的MTU可以修改? 不可以修改  但是IP MTU可以修改 只能改小(1500)
TTL值(TRACERT)
能不能为自己路由表里面不同的条目分配同一个标签? 不行的
有没有可能从邻居收到相同/不同 条目的同一个标签  有可能
自己分发的标签是给邻居使用 而且是给上游邻居使用
FEC(转发等价类)  MPLS设计的初衷是想)基于很多因素分配标签(比如说入接口IP优先级 IGP目标前缀 BGP条目的下一跳) 真正使用的是IGP目标前缀 以及BGP条目的下一跳
POP和UNTAGGED 弹出标签 (POP指的是弹出顶层标签 继续执行标签转发 UNTAGGED 弹出所有标签 直接转成IP转发)
MPLS ×××
××× IPSEC ×××  GRE  三层  帧中继(ATM PPP) 专线  都是OVERLAY ××× ISP不参与客户的路由 有的是要付费 有的不用 但是都存在一些问题 就是当节点很多时 要构造全互联的×××环境 需要几条×××隧道 N(N-1)/2 静态配置 (无法适应网络拓扑的变成 在MPLS ×××出现之前这个技术还是普及的 他可以解决一些问题 地址重叠的问题 
还有一种×××  PEER-TO-PEER的××× ISP参与路由 ISP的PE和客户端的CE运行路由协议 客户端把路由条目通告给ISP(PE)  路由条目在ISP网络中传 传到对端 这就可以通信了. 存在很多的问题 共享的PE要解决 路由条目重叠 以及不同×××之间通信的隔离的问题
通过引进VRF(虚拟路由转发)技术来解决一系列的问题
通过VRF来把一台路由器逻辑地分隔成几台路由器 每台路由器维护一张独立的路由表 一个VRF就是一台路由器 关联一张路由表 以及几个接口.通过在VRF里面引进RD的参数来解决地址重叠的问题  同一台路由器 不同的VRF RD一定不同 RD是64比特 学到的相应路由前缀就变成了64比特的RD+32比特前缀  但是在传递96比特路由前缀  这个可以通过多协议BGP(MPBGP)来达成(不是普通的BGP)  VRF里面还引进了个参数:RT 用来决定在BGP的IPV4地址簇和×××V4地址簇之间的导进导出. BGP里面IPV4的地址簇的ACTIVE是默认自动开启 其它的地址簇要手动开启ACTIVE