待解决问题
关于三层交换机原理  (进入论坛模式)
离问题结束还有0天0小时  |  提问者:冲击2012   |  提问时间:2012-12-12 10:01
我网上搜了些资料,关于三层交换机原理大致有2中说法,各位帮忙看看哪一种正确:

(1)第三层交换的原理是,假设两个使用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发送的数据包便全部交给二层交换处理,信息得以高速交换。由于仅仅在路由过程中才需要三层处理,绝大部分数据都通过二层交换转发,因此第三层交换机的速度很快,接近第二层交换机的速度,同时比相同路由器的价格低很多。

(2)假设A和B处于不同网段,且都和三层SWITCH直连。A先用ARP请求SWITCH的MAC(网关MAC), 然后发送报文到SWITCH(假设是PING报文), 如果是第一次通信,SWITCH也不知道B的MAC,但SWITCH发现B是直连网段,此时SWITCH发送ARP请求,B收到后回应ARP,SWITCH学习到后,再转发PING数据包。

第2种方式是我一直认为的。 第一种我就不太理解,SWITCH是做了一个ARP代理吗?真正的三层交换机是这样工作的?A在发送ARP请求时,不应该是请求下一跳的MAC吗,为什么会请求B的MAC? 所以我不太认同第一段,但是这段描述网上到处都是,请大牛解释下,多谢。 没看到有数据通信的版面,看到设备商比较火,就发这里了先。
问题答案 ( 19 条 )
一次路由,多次交换!
 |  回应该答案 (0)  |  回答者:xcj1978   |  2012-12-12 10:04
[i=s] 本帖最后由 冲击2012 于 2012-12-12 10:11 编辑 [/i]

这句话我也知道,能不能详细解释下,网上基本上都是第一段描述,但是我觉得说的不对。
“一次路由,多次交换” 应该是说在CPU层次上进行第一次路由,然后把ARP,PORT信息都写到ASIC上,后续流量直接在ASIC完成,所以集成了路由器和交换机的特性。
请针对我的那两种模型提出看法,多谢
 |  回应该答案 (0)  |  回答者:冲击2012   |  2012-12-12 10:09
第一段的描述有问题。对于不同子网报文交换,首先A发ARP查询的是网关的MAC地址。到B的报文转发由网关来完成。
 |  回应该答案 (0)  |  回答者:amidas   |  2012-12-12 12:15
是的,我也是这么想的, 但是那段话网上流传的到处都是,不知道为什么。 是不是三层交换机有什么特殊处理? 有没有搞数通的同学,出来澄清下,三层交换原理应该比较基本。
 |  回应该答案 (0)  |  回答者:冲击2012   |  2012-12-12 12:25
三层交换机,实际上就是传统的二层交换机和一个弱化版路由器的合成体。但交换功能和路由功能还是各司其职,不要由于有三层交换机这么个叫法就混淆了两者的功能。

交换机的处理逻辑比较简单(按端口转发数据),一般都是直接烧制在集成电路中的,而路由器则复杂得多,路由器的实现需要通过大型软件系统来实现。

但在一些网络的拓扑比较简单的情况下(比如企业内部网络或小型办公网络),在L3只需要一些简单的路由功能,能够把内部的数据发送到外部网络去就够了,所以才有在二层交换机上搭载一些简单路由的功能,形成所谓的三层交换机这么一个产品。

普通家用的路由器其实就是典型的“三层交换机”

 |  回应该答案 (0)  |  回答者:buptzhengtao   |  2012-12-12 12:47
多谢各位回复。 能不能详细的说明一下转发过程? 比如对于我举例的那两种处理情况,能不能帮忙批判下?
 |  回应该答案 (0)  |  回答者:冲击2012   |  2012-12-12 13:38
交换机就交换机,路由器就路由器,三层交换……给驴装个马头
 |  回应该答案 (0)  |  回答者:bjx768   |  2012-12-12 14:10
:L 大哥,直接回复我的问题,尖锐点,不要跑题。。。
 |  回应该答案 (0)  |  回答者:冲击2012   |  2012-12-12 14:20
第一种说法是某种特殊情况下的配置吧!不在一个网段还只走二层转发,一般是不允许吧。
 |  回应该答案 (0)  |  回答者:bj015852   |  2012-12-12 14:34
对于第二种情况,还有一个处理方式,当SWITCH收到A的PING包后,不给B发送ARP请求,而是直接把包广播出去(模拟二层交换机),这样做的好处是不需要缓存PING包,坏处就是增加的广播流量。 既然二层交换机可以这样做,我觉得三层也可以这样实现。 请指出错误。
 |  回应该答案 (0)  |  回答者:冲击2012   |  2012-12-12 14:56
hello, is anyone here?
 |  回应该答案 (0)  |  回答者:冲击2012   |  2012-12-12 16:33
" ... 从这以后,A向B发送的数据包便全部交给二层交换处理,信息得以高速交换。 ..."
----- 对这条不太认同。 若A B不同网段,A向B发包时, DMAC填的是 SWITCH 的MAC,而不是 B的MAC, 所以不会 二层交换处理。 不是查MAC表,而是 类似MAC表的 3层转发表。
 |  回应该答案 (0)  |  回答者:pkt   |  2012-12-12 16:42
如果第一种情况不是什么高深的处理,就是很低级的错误,为什么在网络上到处都充斥着这个理论,真是无语啊, 大家可以百度一下 三层交换机原理。
 |  回应该答案 (0)  |  回答者:冲击2012   |  2012-12-12 16:58
我来答复一下,一是错误的,二的描述基本正确,只是没有说清楚硬件转发(ASIC),CPU软转。你在11楼的说法也是糊涂的,A发给Switch的时候报文的DMAC已经是Switch的三层接口MAC了(即网关MAC),你让Switch广播给B,你希望报文用什么DMAC? 继续使用Switch的三层接口MAC?还是把报文改成广播?另外关于Ping包缓存,那也只是首包缓存并软转,后续的都是硬件转发了,这也是所谓的一次路由、多次转发,对CPU冲击不大。你根本的问题在于网络层次不清楚,当然上面也有些TX也是半吊子。
 |  回应该答案 (0)  |  回答者:ExH3Cer   |  2012-12-13 00:53
A在发送ARP请求时,不应该是请求下一跳的MAC吗,为什么会请求B的MAC?
=========================
是的,A在发生ARP请求时,对应IP其实是下一跳的,第一种的说法却偷换成了B的IP,其错误就在这里。
 |  回应该答案 (0)  |  回答者:思考的蚂蚁   |  2012-12-13 01:33


多谢指点,请帮忙看看我的后续分析,错对:
1. 关于在11楼的说法补充,我说的广播就是DMAC换成广播MAC,然后广播出去,好处就是没有缓存(二层交换机我记得就是这样工作吧? 记得曾经抓过包验证过,时间太长记不得了,只是有个印象)。
2. 我知道缓存仅是第一个包,但是多个主机并发出现,会不会出现问题?(当然可以通过各种方式保护并发情况)
3. 当然这种广播处理方式只是我对三层交换机的推测,因为我并不知道真正如何实现的。不过现在想想,应该确实是缓存方式更好些。 因为广播方式无法通过ARP学习IP/MAC,这样只能通过检查每个包的MAC/IP,如果交换机表内不存在,则学习。 这样性能是一个问题,而且如果有伪造的IP/MAC,对内存表也是一个冲击。
我不是搞这块的,但是不想成为半吊子,所以。。。大侠继续。
 |  回应该答案 (0)  |  回答者:冲击2012   |  2012-12-13 12:16


多谢回复
 |  回应该答案 (0)  |  回答者:冲击2012   |  2012-12-13 12:17
求教: 最终的结论是什么?
 |  回应该答案 (0)  |  回答者:忧道僧   |  2014-4-4 16:13
第一种是错误的,三层交换机三层转发就是一次软转发多次硬转发哎,而二三层转发硬件怎么区分呢,就是通过判断收到的数据报文的目的MAC地址是否是自身的虚MAC地址吧,最简单就是这工作流程
 |  回应该答案 (0)  |  回答者:sdj501   |  2014-4-9 17:10
 
我要回答:  回答字数在10000字以内