三层交换机就是具有部分路由器功能的交换机,三层交换机的最重要目的是加快大型局域网内部的数据交换,所具有的路由功能也是为这目的服务的,能够做到一次路由,多次转发。三层交换机是怎样工作的?下面小编给大家详细讲解一下三层交换机工作方式。 如上图,在二层环境中A---B之间通信,A发送一个数据包目的MAC地址是B,当发送到交换机,交换机基于目的MAC地址的转发,然后开始查看自己的MAC表项,找出对应的出口出去了整个过程中只有MAC地址的查找,没有对数据帧产生任何的改变,我在这只对二层帧转发做一个简短而又简单的描述,毕竟重点不在这。在三层环境中 A---C之间通信,A发送一个数据包,目的MAC地址应该是网关MAC地址,也即是交换机的MAC地址SMAC好在这里插一个小插曲,之前有人问过我说一个交换机要不要三层转发是怎么判断的,我当时的回答是看这个数据包的mac地址是不是自己,如果是就执行三层转发,别人说回答是正确的;但是当我回来研究这个问题的时候,我发现当时我的回答是不严谨的,为什么 ?当一个交换机收到一个数据包的二层目的mac地址是自己,此时它要做什么? 插个一个小插曲,前两天在微信上看过这样的一个小短片,说的是在一所大学教室里,有两个男生特别喜欢坐在他们身后的班花,就不停的看着那个女孩,忽然,那个女孩站起来准备走了,在路过他们身边的时候塞给了坐在一边的男生一个卷起来的小纸条;物理上,这个女生是将纸条递给了这个男生,想想这个男生接下来要做什么事情?是要打开纸条查看里面写了什么内容吧!三层交换机在接收到目的mac地址是自己的时候要做的事情也是向上层解封装,查看三层目的IP地址,然后呢? 当时那个男生很高兴的拿着那个纸条,然后打开了,上面写着“请将纸条递给下一个人”,哈哈,,,三层交换机也是这样一看原来目的IP地址不是自己,这才执行路由层面的转发;所以说交换机在执行要不要三层转发,是在目的mac是自己的同时,IP地址是不是自己,如果是自己那还转发个啥来,就不用转发了。 交换机在判断出目的IP不是自己的时候是不是一定就去查看路由表呢 ?不是,这个就是交换机的关键所在了,交换机此时不会查看路由表,不会查看arp表,不会查看mac地址表;那交换机会查看什么表? 交换机此时会查看自己集成在ASIC硬件转发卡中的硬件转发表,那这个硬件转发表都包含了什么内容呢? 当第一个包过来的时候,发现硬件转发表并没有什么表项,所以此时必须将数据包交由路由进程处理,一旦交由cpu处理,必然会消耗cpu资源,此时会查看路由表,然后发现此IP地址个自己是直连的,此时就去查看arp找出此地址对应的mac地址,就可以转发出去了 在决定转发出去过程中,交换机至少会做三件事情,一,修改IP包头的ttl值;二,修改原mac地址,改成自己出接口mac地址;三,建立交换机硬件转发表,包括目的IP地址,目的IP地址(下一跳)对应的mac地址,mac地址对应的vlan,以及对应的端口(这个每个厂家有自己的理解) 这样当一下包过来的时候,交换机就会查看硬件转发表直接转发而不会在经过路由表的查询了,也即是交换机的一次路由,多次交换机原理。 |