目录
概述
交换:处理而二层到三层的地址映射,并且把包转换到目的端口
工业界的三种交换方式:
- 进程交换process switching:
一条数据流的第一个包放到系统缓存中,他的目的地址会拿到路由表中查询对比,路由器的处理器(cpu or process)进行crc校验,重写mac地址,对这条流中其他的包也这样操作,查询路由,重写mac,crc等。显然延迟较大,利用system buffer还有processor 处理每一个包。
但是这种方式依旧可以使用,比如在基于每个包的负载分担,或者debug ip packet.
- fast switch : 快速交换使用了route cache,路由缓存,存储关于某个数据流的信息,比如目的mac,目的借口等,但是我们只需要为第一个包做process switching, 信息存到cache, 后续不需要其他的包分别做路由处理了。
- ces cisco express forwarding
思科cef 是一种三层协议,基于硬件,不仅仅是将整个数据存入system buffer,而是将整个路由表,拓扑表,下一跳的地址,mac地址都进行预存,只要路由表中存在的条目,都会提前预读取,当有新的数据请求发送时,不需要cpu查询目的接口,目的mac等,直接从缓存读取。
名次解释
- 路由表:rib route information base
思科在cef中使用的不是路由表,而是转发信息库,fib。 - 转发表:fib–转发信息库 forwarding information base。
转发表包括前缀信息(路由表)下一跳,出接口 - 标签信息库:lib,存放路由前缀和标签的捆绑,比如我自己的,以及我的邻居传给我的。
- lfib表:由lib和cef共同维护的。
mpls中,标签包查找的就是lfib表; 普通的IP包,查找的表就是cef表,也就是fib。
mpls multi-protocol label switching
在ip头前插入一个mpls字段,在前面时一些二层信息,数据在传输过程中,不关心三层数据,只看mpls标签。
- mpls一种新的转发机制,根据标签信息进行转发
- mpls的标签一般对应目的地址(路由前缀
- mpls以来ip路由以及cef交换(比如运行之前可能需要动态路由协议,学习路由
- mpls 基于报文头部进行转发
- mpls可以承载多种三层协议
- 所有的路由器运行一个路由协议,比如ospf, 学习路由,维护rib以及cef表
- 路由器运行标签分发协议ldp,维护lib表。ldp首先会为rib中的所有路由前缀,本地捆绑一个标签; 把自己捆绑的标签通过ldp通告给邻居。 其实捆绑的本地标签时为了给邻居。
- 路由器更新cef表,维护lfib表。
这一条形成的路径就叫lsp:标签交换路径。
小结
- 避免了ip的逐跳转发情况,减少了对数据包的深入分析,借助标签快速转发路径,使得数据沿着一条预先建立的路径快速转发。
- 数据包在进入mpls网络入口路由器上被进行一次三层查找,在此后的lsr只是进行简单的标签交换动作,无需进一步分析三层信息。
- 每个lsr在数据转发之前需要建立好lib,以及lfib,当lsr收到一个标签数据帧时,将数据帧的标签在lfib中进行查找,在根据lfib中指示的相关动作进行压入,弹出交换移除等动作。
标签交换路由器
支持mpls的路由器,可以理解mpls标签,并且在链路层面对mpls标签包进行交换,有三种类型:
- ingress LSRs:收到一个ip包没有标签,在包前插入一个标签,发送数据包。
- egress LSRs: 收到标签包,移除标签,发送数据包。
- 上述两种数据标签路由器 edge LSRs
- intermeditae LSRs
FEC forwarding equivalence class
转发等价类
- 在转发过程中,具有相同处理方式的一组数据,可 通过地址,隧道,cos等方式标示,通常在一台设备上,对于一个fec分配相同的标签
- 属于一个fec的流量具有相同转发方式,但是并不是拥有相同标签的报文都属于同一个fec,因为这些报文exp值可能不同,执行方式可能不同。
- 决定报文属于哪一个fec的路由器时入站lsr,它对报文进行分类和压入。
lsp
实际上就是lsr的一个序列。穿越mpls网络或者部分mpls网络的路径。
mpls是一个单项路径,去的时候一条路,回去未必同一条。
标签
多标签:
一般mpls只是处理最顶层标签
标签栈设计时判断是否,根据bos位。