20080425_VLAN阅读心得

VLAN的划分是通过路由的,所以能够划分VLAN的网络设备,要么是路由器,要是交换机也得是三层交换机。虽然VLAN的划分通过路由,但是VLAN之间的通信不通过路由,在二层就能解决。
路由器与三层交换机
       因为VLAN是对网段在逻辑上的划分,所以不同VLAN之间的通信仍然需要通过三层路由进行转发。在路由器中转发的过程是,现在二层进行拆包,得到IP 报头,然后查路由表,做出转发决定之后,再封包,发送出去。如果路由器对每一个数据包都路由一次,效率将会很差。
       三层交换技术,是将路由技术与交换技术结合起来的一项技术。简单来说,一个包来了之后,先看是不是第一次,如果是第一次的话就会对这个数据包进行路由,并产生MAC与IP 的映射表,当同样的数据流再次通过时,就不用走三层的路由,直接在二层就可以转发出去了。从而提高了效率。
       三层交换(也称多层交换技术,或IP交换技术)是相对于传统交换概念而提出的。众所周知,传统的交换技术是在OSI网络标准模型中的第二层――数据链路层进行操作的,而三层交换技术在网络模型中的第三层实现了分组的高速转发。简单的说,三层交换技术就是“二层交换技术 + 三层转发”。三层交换技术的出现,解决了局域网中网段划分之后网段中的子网必须依赖路由器进行管理的局面,解决了传统路由器低速、复杂所造成的网络瓶颈问题。
   一个具有三层交换功能的设备,是一个带有第三层路由功能的第二层交换机,但它是两者的有机结合,而不是简单地把路由器设备的硬件及软件叠加在局域网交换机上。我们可以通过以下例子说明三层交换机是如何工作的。
       简单的过程是:
       A要给B发送数据,已知目的IP,那么A就用子网掩码取得网络地址,判断目的IP是否与自己在同一网段。如果在同一网段,但不知道转发数据所需的MAC地址,A就发送一个ARP请求,B返回其MAC地址,A用此MAC封装数据包并发送给交换机,交换机起用二层交换模块,查找MAC地址表,将数据包转发到相应的端口。
       如果目的IP地址显示不是同一网段的,那么A要实现和B的通讯,在流缓存条目中没有对应MAC地址条目,就将第一个正常数据包发送向一个缺省网关,这个缺省网关一般在操作系统中已经设好,对应第三层路由模块,所以可见对于不是同一子网的数据,最先在MAC表中放的是缺省网关的MAC地址;然后就由三层模块接收到此数据包,查询路由表以确定到达B的路由,将构造一个新的帧头,其中以缺省网关的MAC地址为源MAC地址,以主机B的MAC地址为目的MAC地址。通过一定的识别触发机制,确立主机A与B的MAC地址及转发端口的对应关系,并记录进流缓存条目表,以后的A到B的数据,就直接交由二层交换模块完成。这就通常所说的一次路由多次转发。
       详细说明这个过程:
   假设两个使用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之间进行通信或者同一 网段(这里说的网段,或者是几个VLAN,或者是几个子网)。的其它站点想要与A或B通信,交换机就知道该把报文从哪个端口送出。还必须说明的一点是,当查找MAC地址表的时候发现找不到匹配表项,该报文又不是广播或多播报文,此时此报文被称为DLF(Destination Lookup Failure)报文,交换机对此类报文的处理就象对收到一个广播报文处理一样,将此报文从进入端口所属的VLAN中扩散出去。从以上过程可以看出,所有二层转发都是由硬件完成的,无论是MAC地址表的学习过程还是目的地址查找确定输出端口过程都没有软件进行干预。
   下面我们看一下两个站点通过三层交换机实现跨网段通信是怎样一个过程。
   如上例,站点A、B通过三层交换机进行通信。站点A和B所在网段都属于交换机上的直连网段,若站点A和站点B不在同一子网内,发送站A首先要向其 “缺省网关”(网关是连接外网与内网的路由器或者三层交换机(必须有路由功能),由于它的存在,一个机构只要有一个IP号就可以了。网关对内将很多机构划分为几个网段,每个网段都与网关有一个接口,比如划分两个IP网段:10.1.144.0和10.1.100.0,那么两个网段中主机与这个网关的接口就是10.1.144.1和10.1.100.1。两个网段的主机通过这个接口与外部网相连。)发出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处理。这种通过“一次路由,多次交换”的方式,大大提高了转发速度。需要说明的是,三层引擎中的路由表项大都是通过软件设置的。至于何时设置、怎么设置并不存在一个固定的标准,我们在此也不详细讨论。
结论
二层交换机用于小型的局域网络。这个就不用多言了,在小型局域网中,广播包影响不大,二层交换机的快速交换功能、多个接入端口和低谦价格为小型网络用户提供了很完善的解决方案。
路由器的优点在于接口类型丰富,支持的三层功能强大,路由能力强大,适合用于大型的网络间的路由,它的优势在于选择最佳路由,负荷分担,链路备份及和其他网络进行路由信息的交换等等路由器所具有功能。
三层交换机的最重要的功能是加快大型局域网络内部的数据的快速转发,加入路由功能也是为这个目的服务的。如果把大型网络按照部门,地域等等因素划分成一个个小局域网,这将导致大量的网际互访,单纯的使用二层交换机不能实现网际互访;如单纯的使用路由器,由于接口数量有限和路由转发速度慢,将限制网络的速度和网络规模,采用具有路由功能的快速转发的三层交换机就成为首选。
一般来说,在内网数据流量大,要求快速转发响应的网络中,如全部由三层交换机来做这个工作,会造成三层交换机负担过重,响应速度受影响,将网间的路由交由路由器去完成,充分发挥不同设备的优点,不失为一种好的组网策略,当然,前提是客户的腰包很鼓,不然就退而求其次,让三层交换机也兼为网际互连。
网络某功能的硬件实现与软件实现
       硬件实现,就是对一个功能提供专门的芯片和寄存器。
       软件实现,就是对这个功能没有提供相应的芯片和寄存器,只有通用的CPU和内存,数据结构要自己组织。
关于不同VLAN之间必须借助三层才能通信
当主机A不知道B的MAC地址时,需要向整个VLAN网段内广播ARP请求,而VLAN的一个功能就是阻止广播域的,所以在二层上A是无法接收到B的MAC地址的,所以必须通过三层路由功能来与别的VLAN通信。
关于交换机支持的专用VLAN的功能(芯片资料中也有相应的描述)
专用VLAN将端口分为混杂端口,隔离端口和群体端口。只有混杂端口能够和路由器或三层交换机连接。对应混杂端口的VLAN称为Primary VLAN,它可以和映射到混杂端口的所有隔离VLAN(Isolated VLAN)的端口及群体VLAN(Community VLAN)的端口通信。Community VLAN的端口除了可以和Primary VLAN通信外,内部端口间也可以相互通信。Isolated VLAN内的端口只能和Primary VLAN的端口通信外,内部端口间是互相隔离的。
关于TRUNK(汇聚端口)
       TRUNK就是为了通过牺牲端口的数目来增加带宽用的。比如说交换机每个口都是100M,那么4个口通过设置成为一个TRUNK口,就有400M的带宽。这样发送端会把报文平均分配给4个口,来提高传输速率。同时连接的另一端也应该是4个TRUNK口。有些文章上说TRUNK可以和路由器或者主机连接,这里有一些疑问。
       TRUNK口的分配原则:
1.       TRUNK口的数目必须是2,4或8。
2.       必须使用同一组端口。
3.       必须是连续的端口,比如5,6,7,8口。
TRUNK口和VLAN之间有什么联系???

你可能感兴趣的:(K项目日志,路由器,网络,引擎,数据结构,工作,通讯)