大概
三层交换原理
需要提前掌握的(VLAN基础知识)
【Info-Finder 参考链接:什么是VLAN】
- 三层是IP层,即网络层。为了方便记忆的:“先有网络,才有传输”、“传输是为了验证有网络”、“IP不是Transfer”。
- 二层交换是基于MAC表。
- VLAN Tag是在以太网帧里新增了4字节用来标识。
- 交换机内部处理的数据帧都带有VLAN标签。而交换机连接的部分设备(如用户主机、服务器)只会收发不带VLAN tag的传统以太网数据帧。因此,要与这些设备交互,就需要交换机的接口能够识别传统以太网数据帧,并在收发时给帧添加、剥除VLAN标签。添加什么VLAN标签,由接口上的缺省VLAN(Port Default VLAN ID,PVID)决定。
- VLAN的常见使用场景包括:VLAN间用户的二层隔离,VLAN间用户的三层互访。
- VLAN可以基于交换机接口划分,也可以基于IP划分。
- VLAN和子网有差异:与VLAN相类似的是,子网也可以隔离主机间的通信。属于不同VLAN的主机之间不能直接通信,属于不同的子网的主机之间也不能直接通信。**但二者没有必然的对应关系。**不是必须针对IP才能划分VLAN。
- 具体场景:VLAN间用户的二层隔离
如下图所示,某商务楼内有多家公司,为了降低成本,多家公司共用网络资源,各公司分别连接到一台二层交换机的不同接口,并通过统一的出口访问Internet。
为了保证各公司业务的独立和安全,可将每个公司所连接的接口划分到不同的VLAN,实现公司间业务数据的完全隔离。可以认为每个公司拥有独立的“虚拟路由器”,每个VLAN就是一个“虚拟工作组”。
再比如,某公司有两个部门,分别分配了固定的IP网段。为加强员工间的学习与交流,员工的位置有时会相互调动,但公司希望各部门员工访问的网络资源的权限不变。
为了保证部门内员工的位置调整后,访问网络资源的权限不变,可在公司的交换机Switch_1上配置基于IP子网划分VLAN。这样,服务器的不同网段就划分到不同的VLAN,访问服务器不同应用服务的数据流就会隔离,提高了安全性。
- 具体场景:VLAN间用户的三层互访
如下图所示,某小型公司的两个部门分别通过二层交换机接入到一台三层交换机Switch_3,所属VLAN分别为VLAN2和VLAN3,部门1和部门2的用户互通时,需要经过三层交换机。
可在Switch_1和Switch_2上划分VLAN并将VLAN透传到Switch_3上,然后在Switch_3上为每个VLAN配置一个VLANIF接口,实现VLAN2和VLAN3间的路由。 - 干道链路:干道链路是用于交换机之间或交换机与路由器之间互连的物理链路。干道链路传输的数据帧都必须打上Tag,便于设备识别数据帧所属的VLAN。因此一条干道链路可以承载多个VLAN的数据帧。
干道链路可以透传VLAN。换言之,干道链路上,数据帧只会转发,不会发生Tag的添加或剥离。
三层交换具体步骤
目前的三层交换机一般是通过VLAN来划分二层网络并实现二层交换,同时能够实现不同VLAN间的三层IP互访。
简单讲,不同网络的主机之间互访的流程简要如下:
- 源主机在发起通信之前,将自己的IP与目的主机的IP进行比较,如果两者位于同一网段(用网络掩码计算后具有相同的网络号),那么源主机直接向目的主机发送ARP请求,在收到目的主机的ARP应答后获得对方的物理层(MAC)地址,然后用对方MAC地址作为报文的目的MAC地址进行报文发送。
- 当源主机判断目的主机与自己位于不同网段时,它会通过网关(Gateway)来递交报文,即发送ARP请求来获取网关IP地址对应的MAC,在得到网关的ARP应答后,用网关MAC作为报文的目的MAC发送报文**(此时我只认识网关,那就带着我真正想找的IP先问一问网管,看网关知不知道这IP在哪)**。此时发送报文的源IP是源主机的IP,目的IP仍然是目的主机的IP。
用示意图对应具体步骤
图中标明了两台主机的MAC、IP地址、网关,以及三层交换机的MAC、不同VLAN配置的三层接口IP。当 PC A向PC B发起PING时,流程如下:(假设三层交换机上还未建立任何硬件转发表项)
- 根据前面的描述,PC A首先检查出目的IP地址10.2.1.2(PC B)与自己不在同一网段,因此它发出请求网关地址10.1.1.1对应MAC的ARP请求;
- L3 Switch收到PC A的ARP请求后,检查请求报文发现被请求IP是自己的三层接口IP,因此发送ARP应答并将自己的三层接口MAC(MAC Switch)包含在其中。同时它还会把PC A的IP地址与MAC地址对应(10.1.1.2与MAC A)关系记录到自己的ARP表项中去(因为ARP请求报文中包含了发送者的IP和MAC);
- PC A得到网关(L3 Switch)的ARP应答后,组装ICMP请求报文并发送,报文的目的MAC(即DMAC)=MAC Switch、源MAC(即SMAC)=MAC A、源IP(即SIP)=10.1.1.2、目的IP(即DIP)=10.2.1.2;
- L3 Switch收到报文后,首先根据报文的源MAC+VLAN ID更新MAC表。然后,根据报文的目的MAC+VLAN ID查找MAC地址表,发现匹配了自己三层接口MAC的表项,说明需要作三层转发,于是继续查找交换芯片的三层表项;
- 交换芯片根据报文的目的IP去查找其三层表项,由于之前未建立任何表项,因此查找失败,于是将报文送到CPU去进行软件处理;
- CPU根据报文的目的IP去查找其软件路由表,发现匹配了一个直连网段(PC B对应的网段),于是继续查找其软件ARP表,仍然查找失败。然后L3 Switch会在目的网段对应的VLAN 3的所有接口发送请求地址10.2.1.2对应MAC的ARP请求;
- PC B收到L3 Switch发送的ARP请求后,检查发现被请求IP是自己的IP,因此发送ARP应答并将自己的MAC(MAC B)包含在其中。同时,将L3 Switch的IP与MAC的对应关系(10.2.1.1与MAC Switch)记录到自己的ARP表中去;
- L3 Switch收到PC B的ARP应答后,将其IP和MAC对应关系(10.2.1.2与MAC B)记录到自己的ARP表中去,并将PC A的ICMP请求报文发送给PC B,报文的目的MAC修改为PC B的MAC(MAC B),源MAC修改为自己的MAC(MAC Switch)。同时,在交换芯片的三层表项中根据刚得到的三层转发信息添加表项(内容包括IP、MAC、出口VLAN、出接口),这样后续的PC A发往PC B的报文就可以通过该硬件三层表项直接转发了;
- PC B收到L3 Switch转发过来的ICMP请求报文以后,回应ICMP应答给PC A。ICMP应答报文的转发过程与前面类似,只是由于L3 Switch在之前已经得到PC A的IP和MAC对应关系了,也同时在交换芯片中添加了相关三层表项,因此这个报文直接由交换芯片硬件转发给PC A;
- 这样,后续的往返报文都经过查MAC表到查三层转发表的过程由交换芯片直接进行硬件转发了。
从上述流程可以看出,三层交换机正是充分利用了“一次路由(首包CPU转发并建立三层硬件表项)、多次交换(后续包芯片硬件转发)”的原理实现了转发性能与三层交换的完美统一。妙,实在是妙。