Chinaunix首页 | 论坛 | 博客
  • 博客访问: 295530
  • 博文数量: 148
  • 博客积分: 4365
  • 博客等级: 上校
  • 技术积分: 1566
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-05 21:38
文章分类
文章存档

2014年(2)

2013年(45)

2012年(18)

2011年(1)

2009年(54)

2008年(28)

我的朋友

分类: 系统运维

2009-10-11 21:54:03

一个具有三层交换功能的设备,是一个带有第三层路由功能的第二层交换机,但它是两者的有机结合,而不是简单地把路由器设备的硬件及软件叠加在局域网交换机上。我们可以通过以下例子说明三层交换机是如何工作的。

   假设两个使用IP协议的站点A、B通过第三层交换机进行通信,发送站点A在开始发送时,会先拿自己的IP地址与B站的IP地址进行比较,判断B站是否与自 己在同一子网内。若目的站B与发送站A在同一子网内,则进行二层的转发。具体步骤如下:为了得到站点B的 MAC地址,站点A首先发一个ARP广播报文,请求站点B的MAC地址。该ARP请求报文进入交换机后,首先进行源MAC地址学习,芯片自动把站点A的 MAC地址以及进入交换机的端口号等信息填入到芯片的MAC地址表中,然后在MAC地址表中进行目的地址查找。由于此时是一个广播报文,交换机则会把这个 广播报文从进入交换机端口所属的VLAN中进行广播。B站点收到这个ARP请求报文之后,会立刻发送一个ARP回复报文,这个报文是一个单播报文,目的地 址为站点A的MAC地址。该包进入交换机后,同样,首先进行源MAC地址学习,然后进行目的地址查找,由于此时MAC地址表中已经存在了A站点MAC地址 的匹配条目,所以交换机直接把此报文从相应的端口中转发出去。通过以上一次ARP过程,交换芯片就把站点A和B的信息保存在其MAC地址表中。以后A、B 之间进行通信或者同一网段的其它站点想要与A或B通信,交换机就知道该把报文从哪个端口送出。还必须说明的一点是,当查找MAC地址表的时候发现找不到匹 配表项,该报文又不是广播或多播报文,此时此报文被称为DLF(Destination Lookup Failure)报文,交换机对此类报文的处理就象对收到一个广播报文处理一样,将此报文从进入端口所属的VLAN中扩散出去。从以上过程可以看出,所有 二层转发都是由硬件完成的,无论是MAC地址表的学习过程还是目的地址查找确定输出端口过程都没有软件进行干预。

   下面我们看一下两个站点通过三层交换机实现跨网段通信是怎样一个过程。

   如上例,站点A、B通过三层交换机进行通信。站点A和B所在网段都属于交换机上的直连网段,若站点A和站点B不在同一子网内,发送站A首先要向其“缺省网 关”发出ARP请求报文,而“缺省网关”的IP地址其实就是三层交换机上站点A所属VLAN的IP地址。当发送站A对“缺省网关”的IP地址广播出一个 ARP请求时,交换机就向发送站A回一个ARP回复报文,告诉站点A交换机此VLAN的MAC地址,同时可以通过软件把站点A的IP地址、MAC地址、与 交换机直接相连的端口号等信息设置到交换芯片的三层硬件表项中。站点A收到这个ARP回复报文之后,进行目的MAC地址替换,把要发给B的包首先发给交换 机。交换机收到这个包以后,同样首先进行源MAC地址学习,目的MAC地址查找,由于此时目的MAC地址为交换机的MAC地址,在这种情况下将会把该报文 送到交换芯片的三层引擎处理。一般来说,三层引擎会有两个表,一个是主机路由表,这个表是以IP地址为索引的,里面存放目的IP地址、下一跳MAC地址、 端口号等信息。若找到一条匹配表项,就会在对报文进行一些操作(例如目的MAC与源MAC替换、TTL减1等)之后将报文从表中指定的端口转发出去。若主 机路由表中没有找到匹配条目,则会继续查找另一个表――网段路由表。这个表存放网段地址、下一跳MAC地址、端口号等信息。一般来说这个表的条目要少得 多,但覆盖的范围很大,只要设置得当,基本上可以保证大部分进入交换机的报文都走硬件转发,这样不仅大大提高转发速度,同时也减轻了CPU的负荷。若查找 网段路由表也没有找到匹配表项,则交换芯片会把包送给CPU处理,进行软路由。由于站点B属于交换机的直连网段之一,CPU收到这个IP报文以后,会直接 以B的IP为索引检查ARP缓存,若没有站点B的MAC地址,则根据路由信息向B站广播一个ARP请求,B站得到此ARP请求后向交换机回复其MAC地 址,CPU在收到这个ARP回复报文的同时,同样可以通过软件把站点B的IP地址、MAC地址、进入交换机的端口号等信息设置到交换芯片的三层硬件表项 中,然后把由站点A发来的IP报文转发给站点B,这样就完成了站点A到站点B的第一次单向通信。由于芯片内部的三层引擎中已经保存站点A、B的路由信息, 以后站点A、B之间进行通信或其它网段的站点想要与A、B进行通信,交换芯片则会直接把包从三层硬件表项中指定的端口转发出去,而不必再把包交给CPU处 理。这种通过“一次路由,多次交换”的方式,大大提高了转发速度。需要说明的是,三层引擎中的路由表项大都是通过软件设置的。至于何时设置、怎么设置并不 存在一个固定的标准,我们在此也不详细讨论。一个单波IP报文从进入三层交换机到转发出去一般来说走以下流程:

   通过以上流程我们可以了解报文在交换机中的执行过程,同时我们也可以清楚的看出三层交换机是如何充分把传统交换机和路由器的优势有机的结合在一起。

   在实际应用的环境中,对于跨网段通信的需求不断提高,过去的在一般情况下按“80/20分配”规则,即只有20%的流量是通过骨干路由器与中央服务器或企业网的其他部分通信,而80%的流量主要仍集中在不同的部门子网内。而今天,这个比例已经提高到了50%,甚至80%(倒二八,20/80),这是因为今天的正在经历着诸多应用的集合影响。应用已经超越了组件和电子信函,新型应用已经如此迅速和深刻地冲击着, 比如,任何人通过任何一个浏览器便可进行访问设定的网页,支持诸如销售、服务和财务之类商业功能的数据仓库。这种变化对传统路由器产生了直接的冲击。因为 传统的路由器更注重对多种介质类型和多种传输速度的支持,而目前数据缓冲和转换能力比线速吞吐能力和低时延更为重要。处于核心位置的路由器的高费用、低性能使其成为的瓶颈,但由于间互连的需求,它又是不可缺少的。虽然也开发了高速路由器,但是由于其成本太高,所以仅用于Internet主干部分。三层交换机将二层交换机和三层路由器两者的优势有机而智能化的结合在一起,在各个层次上提供线速性能,从而解决了传统路由器低速、复杂所造成的瓶颈问题。在没有广域网连接需求的场合,用于连接不同子网的传统路由器正在以极快的速度被三层交换机所代替。
阅读(560) | 评论(0) | 转发(0) |
0

上一篇:zz-linux各目录

下一篇:hook-zz的几篇文章

给主人留下些什么吧!~~