交换机转发基本原理

3,831 阅读5分钟

二层交换机报文转发原则

广播报文:交换机的某个口收到广播报文后,朝其他非入口都转发一份。

单播报文转发:首先查mac地址表,如果交换机的某个口有学到单播报文的目的mac,则从这个口转发出去,如果没有,则朝其他端口广播arp报文,如果单播报文的目的mac==源mac,丢弃报文

access口

不带tag的报文,允许进入,出去时打上access口的tag;
带tag的报文,如果tag == vlan,出去时去掉tag;
             如果tag != vlan,报文丢弃;

trunk口(native vlan唯一,allow vlan范围)

不带tag的报文,允许进入,出去时打上native vlan标签
带tag的报文,如果tag == native vlan,出去时去掉tag
             如果tag in vlan范围内,出去时带原tag
             如果tag not in vlan范围内,报文丢弃

交换机上mac地址表的学习过程

交换机收到主机发送过来的报文中的源MAC,维护一张mac地址表,定期老化。
如果主机down掉,mac表老化清除,如果主机换接入端口,则更新mac地址表。

三层交换机工作原理 三层交换技术就是二层交换技术+三层转发技术。传统的交换技术是在OSI网络标准模型中的第二层——数据链路层进行操作的,而三层交换技术是在网络模型中的第三层实现了数据包的高速转发。应用第三层交换技术即可实现网络路由的功能,又可以根据不同的网络状况做到最优的网络性能。 那么三层交换是怎样实现的呢?三层交换的技术细节非常复杂,可以简单地将三层交换机理解为由一台路由器和一台二层交换机构成,两台处于不同子网的主机通信,必须要通过路由器进行路由。主机A向主机B发送的第1个数据包必须要经过三层交换机中的路由处理器进行路由才能到达主机B,但是当以后的数据包再发向主机B时,就不必再经过路由处理器处理了,因为三层交换机有“记忆”路由的功能。三层交换机的路由>记忆功能是由路由缓存来实现的。当一个数据包发往三层交换机时,三层交换机首先在它的缓存列表里进行检查,看看路由缓存里有没有记录,如果有记录就直接调取缓存的记录进行路由,而不再经过路由处理器进行处理,这样的数据包的路由速度就大大提高了。如果三层交换机在路由缓存中没有发现记录,再将数据包发往路由处理器进行处理,处理之后再转发数据包。 三层交换机转发处理流程

路由打通过程: 网络接口S1和S2连接到PC上时,这两个网络接口被激活,此时会往L2_TABLE添加两条mac为各自网络接口的mac,l3字段置1的表项。往L3_TABLE表项中添加两条ip为各自网络接口ip,输出端口为CPU口的主机路由表项,用于将相应ip报文送往CPU处理。同时在DEFIP表中添加各自网段的网络路由表项,表项最终指向L3_TABLE中表示的主机路由表项。 此时,PC1欲往PC2发送IP报文时,首先它通过主机自身的子网掩码的设置,发现PC2不在其网络范围内,于是PC1明白此时它要走路由,即把报文发给网关(S1)处理,于是PC1先搜索自身的ARP缓存看是否有网关S1的ARP地址,如果没有,则向主机设定的网关(S1)发送ARP请求,S1收到该请求之后,发送ARP应答。此时网关S1的mac-ip映射就被保存在PC1的ARP缓存中,供下次使用。然后PC1向S1发送一个目的IP地址为pc2_ip(在S2的网络范围内),目的MAC为S1_mac(网关mac)的IP报文,该报文到达交换机之后,先搜索L2_TABLE,发现对应的表项的L3位置1。根据ip=pc2的key来搜索L3_TABLE表项,未搜索到,接着查找DEFIP的表项,搜索到相应表项(因为PC2在S2的网络范围内 ),对应的L3_TABLE表现的输出端口为CPU口,于是该报文被送往CPU。(此时送CPU的目的在于指示发送ARP报文查询下一跳MAC地址,用于建立硬件表项) CPU接收到该报文之后,在L3_TABLE中添加一条ip为pc2_ip(目的ip),输出端口为DROP口的表项,用于丢弃报文,防止主机被砸死,然后向网络接口S2的所有成员端口发送请求ip为pc2_ip的ARP请求报文,此时PC2接收到该ARP报文,发送一个ARP响应。S2收到该响应之后,删除原先添加的DROP表项,往L3_TABLE中添加一条,IP为pc2_ip,mac为pc2_mac,输出端口为PC B所连的端口的表项。此时路由打通。