MLS由以下三个部分组成:
1. 多层路由处理器 (MLS-RP) 它相当于网络中的路由器,负责处理每个数据流的第一个数据包,协助MLS交换引擎 (MLS-SE)在第三层的CAM (Content-Addressable Memory)中建立捷径条目(Shortcut Entry)。MLS-RP可以是一个外部的路由器,也可以由三层交换机的路由交换模块(RSM)来实现。
2. 多层交换的交换引擎 (MLS-SE) 它是负责处理转发和重写数据包功能的交换实体。
3. 多层交换协议 (MLSP) 它是一个轻型协议,用来通过多层路由处理器 (MLS-RP)对多层交换的交换引擎进行初始化。
下面以图1所示的网络为例,阐述多层交换实现的步骤。
第一步:发送MLSP Hello 信息
当路由器激活后,多层路由处理器每15秒发送一个MLSP Hello包,这些包内含路由器接口所使用的VLAN标识和MAC地址信息。MLS-SE通过这些信息掌握具备多层交换能力的路由器的第二层属性。如果交换机连接了多个MLS-RP,MLS-SE通过为它们的MAC地址分配XTAG值的方法来区分每个MLS-RP的MAC地址条目。如果MLSP帧从同一个 MLS-RP得到所有MAC地址,MLS-SE则为其附加相同的XTAG值,具体如图2所示。这些关联的记录都存放在CAM中。由于Hello包是周期性发送的,所以,这种方法可以保证相关值动态地跟踪网络的变化,并可实现一定的淘汰机制。 Hello包是在第二层发布的,它使用多播地址01-00-0C-DD-DD-DD.
第二步:标识候选包(Candidate Packet)
在了解具有多层交换能力的路由器的相关地址后,MLS-SE可以对进入交换机的数据包进行匹配判断。对于一个流中的数据包,如果MLS缓存中含有与之匹配的捷径条目,则MLS-SE就旁路路由器而直接转发该数据包;如果MLS中不含与该数据包相匹配的捷径条目,则MLS-SE将它归为候选包,并在缓存中建立部分捷径(Partial shortcut)。这样的包采用传统的第二层交换机处理方式处理,并发往与之相连的路由器接口(网关),具体见图3所示。
这里要注意,候选包(帧)必须满足两个标准:目标地址经过MLSP所列的路由器接口的一个MAC地址;不存在捷径条目。
第三步:标识使能包(Enable Packet)
路由器收到并以传统的方式转发数据包。通过数据包的目标地址路由表得知,这个包应从Fast Ethernet1/0的第二个接口转出,并将包封装为VLAN2帧通过ISL链路送回。具体过程如图4所示。
此时,路由器已经重写第二层帧的帧头。同时,路由器不仅改写了ISL头的VLAN号,而且也修改了两个MAC 地址域:源MAC改为路由器出口的MAC地址,目标MAC改为主机B的MAC地址。虽然数据包的IP地址未改写,但IP包头的生存时间(TTL)值被减1,故 IP包头的校验和也需要做相应的修改。
这个修改后的数据包称为使能包(Enable Packet),当这个数据包从路由器送出并穿过交换机到达目的地主机B时,要履行下列五个功能:
第二层交换机根据使能包的目的地MAC地址,知道该数据包应该从PORT3/1口转发出去;
MLS-SE得知使能包的帧头上源地址是通过Hello过程建立的地址记录之一;
MLS-SE根据使能包目的IP地址查寻在第二步中建立的部分捷径条目;
MLS-SE将与使能包源MAC地址相关联的XTAG值和部分捷径条目的对应XTAG值相比较,如果匹配,则表明这个使能包与第二步中的候选包来自同一个路由器;
MLS-SE完成该捷径条目的建立过程,该捷径记录将包含重写数据流中的后续包帧头所需的所有信息。
第四步:直接交换(转发)数据流中的后续包
当后续的数据包被主机A送出后,MLS-SE利用数据包中的目标IP地址查找在第三步建立的完整捷径。地址匹配后,MLS-SE利用重写引擎修改帧头信息,然后直接转发给主机B(数据包不发给路由器)。重写操作修改帧头域,其值同第一个被路由器修改的数据包的域值一样。详见图5所示。这里需要解释的是, NFFC(NetFlow Feature Card)是装备在三层交换机中的网络流性能卡,它维护第三层交换数据包流的交换表(MLS Cache),作为多层交换的交换引擎部分。
上述这个过程被称为“一次路由,多次交换”。交换机利用专业化硬件ASIC来处理数据包,速度相当快,可以达到100Mbps甚至1000Mbps