包交换:
包交换是由数据组成数据包,并在网络中的各个节点传递,最终达到路由转发的目的
包交换过程:
①包交换会查寻两张表:路由表和ARP缓存表
②路由表的匹配原则:最长匹配原则
③路由会递归查找信息
④IP包头可变长,则只能通过软件进行处理
包交换的优化过程:
①进程交换:最早期的包交换,就是每个数据包来到设备时都需要去基于目标IP地址来查看本地的路由表及ARP缓存表来进行转发
②快速包交换:基于数据流的包交换,一次路由多次交换。只有第一个数据包需要执行包交换
③思科的特快交换(Cisco Express Forwading)CEF:对路由表和ARP缓存表中的内容进行预读取(路由表中需要递归查找的先递归好)记录在CEF表中。并且这个CEF表可以支持硬件处理。华为设备在进行数据转发时,查看的不是路由表,而是FIB表(转发信息数据库),FIB表支持硬件处理转发。
便签交换:
标签交换是在二层封装和三层封装之间,添加一个和路由条目存在映射关系的标签。并产生和维护一张记录对应关系和转发接口表。
而携带标签的数据来到设备上,将会先看到标签,之后基于记录对应关系和转发的接口表进行转发,而不再看三层发IP数据。
因为标签本身短小且定长,所以转发效率会高于包交换。但是,由于标签交换过程需要由压入标签和弹出标签的动作,所以,整体对包交换效率的提升并不明显。
MPLS:多协议标签交换
MPLS其实就是通过便签和包交换结合共同发展的交换技术。因为标签生成需要识别三层协议,而MPLS称为多协议标签交换,因为他可以识别和兼容多种三层协议。
MPLS主要应用的领域:
①用来解决BGP的路由黑洞问题
②搭建MPLS VPN服务
③MPLS TE(流量工程):可以简单理解为控制流量转发的路径
MPLS的LSR和FEC:
而所有运行MPLS设备组成的网络,可以称为是一个MPLS域。域中所有运行MPLS的设备都可以被称为LSR(标签交换路由器)。这个标签是每台路由器基于自己路由表中的路由条目生成的,由路由器自主决定。
在MPLS中,通常把具有相同特征的数据称为FEC(等价转发类)。即匹配同一条路由条目的所有数据报文都属于同一个FEC类(在MPLS中对同一个相同的路由条目,在不同的设备上显示的总称)一个FEC分配一个标签。
MPLS中存在两个数据表:LIB表和LFIB表
LIB表:标签信息表
LFIB表:标签信息转发表,是LIB表和FIB表结合的产物。主要是用来记录标签编号和出接口及下一跳的对应关系
在整个过程中,所有MPLS域中的LSR除了自己针对某个FEC生成的标签外,还需要获取其他LSR对相同FEC分配的标签。
控制层面和数据层面:
包交换
控制层面 :
路由协议的数据流的流动方向,目的是为了获取未知网段的路由信息来生成路由表。
数据层面 :
基于设备已完善的路由表(FIB),来转发具体的数据到达目标网段。其方向正好和控制层面相反。
标签交换
控制层面:
基于FEC来分配标签,并且获取其他LSR对相同FEC分配的标签。
并将其记录在本地LIB表中,再结合FIB表生成LFIB表。(控制层面的功能可以通过静态手工配置来完成,也可以通过动态协议来完成,LDP协议:标签分发协议)
数据层面:
设备基于LFIB表,根据标签进行转发
MPLS标签格式:
MPLS标签是占用32位二进制字节
LABEL位:占20个字节位,取值范围为0-2^20。通常把标签的取值范围称为标签空间,每台设备的标签空间是相互独立的
0 - 15:特殊标签值,我们在分配时一般不用这些标签,因为他 们具有特殊含义
16 - 1023:一般用于静态LSP搭建使用
1023 - 2^20:一般用于LDP等可以动态分配标签的协议使用的标签号的范围
EXP位:占3个字节位,主要用来做策略使用。默认置位为000,可以理解为优先级,其中数值越大,优先级高的优先转发
S位:占1个字节位,栈底位。通常把标签头部组成有序序列称为标签栈
若置位为1,则代表是最后一个标签;若置位为0,则代表还有后续标签需要处理
TTL:存活时间,由于标签覆盖了IP地址,所以将TTL值换位进行计数,其作用和目的都是一样的
入站,出站,中转LSR:
例图:此时R1想要提供MPLR到达R4的环回4.4.4.0/24
此时如果从R1进入MPLS域中,则携带的数据需要压入到达R4环回的标签,这样的设备称为:入站LSR(Ingress LSR)
而R2,R3则在MPLS中完成了一次标签的置换动作,这样的LSR称为:中转LSR(transit LSR)
R4是MPLS域的中到达环回的目的路由器,需要完成的是标签的弹出动作,这样的LSR称为:出站LSR(egress LSR)
整个数据层面数据流动的路径为R1-R2-R3-R4,我们把这条路径称为LSP:标签交换路径
一般一个FEC会对应一条LSP 。特别注意,LSP是分方向的,如果需要实现数据的双向互通,则必须搭建两个方向的LSP才行