一次路由多次交换的深层次理解
一次路由多次交换你理解多少?
很多人理解并不深刻。
今天偶看到一篇关于三层交换机的工作原理,看到那相解析,我郁闷了!
原话是这样的
“第三层交换的原理是,假设两个使用IP的主机A、B通过第三层交换机进行通信。发送站点A在开始发送时,把自己的IP地址与B站的IP地址比较,判断B站是否与自己在同一子网内。若目的站B与发送站A在同一子网内,则进行二层的转发。若两个站点不在同一子网内,如发送站A要与目的站B通信,发送站A要向“缺省网关”发出ARP请求(地址解析)封包,而“缺省网关”的IP地址其实是三层交换机的三层交换模块。当发送站A对“缺省网关”的IP地址广播出一个ARP请求时,如果三层交换模块在以前的通信过程中已经知道B站的MAC地址,则向发送站A回复B的MAC地址。否则三层交换模块根据路由信息向B站广播一个ARP请求,B站得到此ARP请求后向三层交换模块回复其MAC地址,三层交换模块保存此地址并回复给发送站A,同时将B站的MAC地址发送到二层交换引擎的MAC地址表中。从这以后,A向B发送的数据包便全部交给
二层交换处理,信息得以高速交换。由于仅仅在路由过程中才需要三层处理,绝大部分数据都通过二层交换转发,因此第三层交换机的速度很快,接近第二层交换机的速度,同时比相同路由器的价格低很多”。
其中的这句话令我郁闷了半天
“当发送站A对“缺省网关”的IP地址广播出一个ARP请求时,如果三层交换模块在以前的通信过程中已经知道B站的MAC地址,则向发送站A回复B的MAC地址。否则三层交换模块根据路由信息向B站广播一个ARP求”。
分析:既然A和B不在同一个网段,A发送ARP请求网关的MAC地址,怎么三层交换机就返回了B的MAC地址呢?
大家发表一下高见啊!
算了自己了资料!引用别人的原话,很有道理!
分析上面这段文章,笔者认为这种观点违背了主机与缺省网关通信的基本原理。文章提到“当
发送站A对“缺省网关”的IP地址广播出一个ARP请求时,如果三层交换模块在以前的通信过程中已经知道B站的MAC地址,则向发送站A回复B的MAC地址。否则三层交换模块根据路由信息向B站广播一个ARP请求”。实际上,A站向三层交换模块发送网关IP地址的ARP请求时,ARP请求报文并不包含B站IP地址,三层交换模块只会把自己IP地址对应的MAC地址回复给A站,根本不会向发送站A回复B的MAC地址。这是错误之一。
退一步说,即便三层交换模块回复B站的MAC地址,由于B站和A站不在同一子网,A站也不会把B站的目的MAC地址封装在A站要发送的以太网帧中。这是错误之二。
再者,三层交换模块接收A站发送到B站的以太网帧,三层交换模块从以太网帧的IP包中提取B站的IP地址,通过查路由表,寻到B站的下一跳,若B站与第三层交换机某一接口在同一网段,第三层交换机向B站IP地址广播ARP请求,从B站的ARP应答中可得知B站的MAC地址;若B站与三层交换机某一接口不在同一网段,中间相隔了好几跳,三层交换模块只会向下一跳IP地址广播ARP请求,下一跳ARP应答的应是下一跳IP地址的MAC地址,三层交换模块无从得知B站的MAC地址。这是错误之三。
要达到“路由一次,处处交换”或“基于目的MAC地址的第二层交换”的目的,必须改变现存主
机与缺省网关的通信机制或第三层交换机的路由规则,换句话说,以一种新的主机与缺省网关的通信机制替代现有的通信机制。就像前面描述的3Com公司的快速IP技术一样。实际网络中主机和第三层交换机都工作得很好,无需主机做任何改变,也无需改变原有的网络设施。在第三层交换机替代传统路由器的场合,子网间的流量转发性能却得到了空前的提高。这并不是改变了交换机对三层报文转发机制的结果,即“路由一次,处处交换”或“基于目的MAC地址的第二层交换”的结果,而是第三层交换机基于硬件快速转发三层报文的结果。
本人经过查资料进行整理,一次路由多次交换原理如下:
三层交换机的结构:ASIC芯片和CPU
ASIC芯片用于完成二层和三层的转发,内部包含用于二层转发的MAC地址表和用于IP转发的三层转发表。
怎么查自己的ip
CPU用于转发的控制,主要维护一些软件表项(包括路由表,ARP表),并根据软件表项的转发信息来配置ASIC的硬件三层转发表。
真正决定高速转交换转发的是ASCIC的二三层硬件表项,而ASIC的硬件表来源于CPU维护
的软件表项。
假设A和B处于两个不同网段的不同VLAN,中间通过三层交换机的SVI接口进行路由转发。
ApingB数据流分析如下:
主机A检查目标B的IP地址,与自己不在同一个网段,因此需通过网关转发,首先查询ARP缓存,没到网关的MAC,所以广播ARP请求(目标MAC为全F,源MAC为A的MAC,源IP为A的IP,目标IP为网关IP),请求网关的MAC地址,三层交换机收到后,发现是广播帧,进行解封装,发现目标IP是给自己的,所以返回ARP应答,把自己的MAC告诉A,A收到ARP应答后,更新ARP缓存,再重新封装ICMP(目标MAC为网关,源MAC为A,目标IP为B,源IP为A),交换机收到以后,首先根据报文的源MAC+VID更新MAC表,根据报文的目的MAC+VID进行查MAC表,发现匹配自己的三层接口的MAC表项(说明:三层交换机给分配SVI的IP地址时,会在交换机的MAC表项中添加三层接口的MAC+VID),当报文中的目的MAC与这个三层接口的MAC表项匹配时,就进行三层转发,查三层表项,因为第一次是空的,所以查失败,于是将报文交给CPU进行软件处理,CPU根据目标IP进行查路由,匹配到一个直连网段,于是查ARP表,第一次还是空的,所以查失败,则在目标网段进
行广播ARP请求B的MAC地址,B收到后给出ARP应答,交换机收到应答,更新MAC表和ARP表,同时重新封装ICMP发送给B(目标MAC为B,源MAC为三层交换接口的MAC,目标IP为B,源IP为A)。同时,交换机的三层表项根据刚刚得到到三层转发信息添加表项(包括IP,MAC,VLAM,出接口),这样后续的报文如果匹配三层表项,就可以直接进行硬件转发了,这样就叫做一次路由多次交换。B收到后给出ICMP应答,就是以上过程的逆过程,所以PING通了。
水平有限,写得不够清楚,请多多包涵!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。