计算机网络往往由许多种不同类型的网络互连连接而成。如果几个计算机网络只是在物理上连接在一起,它们之间并不能进行通信,那么这种 “互连 ”并没有什么实际意义。因此通常在谈到 “互连 ”时,就已经暗示这些相互连接的计算机是可以进行通信的,也就是说,从功能上和逻辑上看,这些计算机网络已经组成了一个大型的计算机网络,或称为互联网络,也可简称为互联网、互连网。下面将从互联网的渐进历程逐一阐述各种设备的工作原理:

1、 Ethernet HUB

Ethernet HUB的中文名称叫做以太网集线器,其基本工作原理是广播技术(broadcast ),也就是 HUB 从任何一个端口收到一个以太网数据帧后,它都将此以太网数据帧广播到其它所有端口, HUB 不记忆哪一个 MAC 地址挂在哪一个端口——这里所说的广播是指 HUB 将该以太网数据帧发送到所有其它端口,并不是指 HUB 将该报文改变为广播报文。

以太网数据帧中含有源 MAC地址和目的MAC地址,对于与数据帧中目的 MAC地址相同的计算机执行该报文中所要求的动作;对于目的MAC地址不存在或没有响应等情况,HUB既不知道也不处理,只负责转发。HUB 工作原理:

2、二层交换技术

二层交换机的出现能够在一定程度上解决 HUB 存在的缺陷——主要是冲突严重的问题,其与 HUB 的区别从大的方面来看可以分为以下三点:

① 从 OSI 体系结构来看, HUB 属于OSI模型的第一层物理层设备,而交换机属于 OSI 的第二层数据链路层设备。也就意味着 HUB 只是对数据的传输起到同步、放大和整形的作用,对数据传输中的短帧、碎片等无法进行有效的处理,不能保证数据传输的完整性和正确性;而交换机不但可以对数据的传输做到同步、放大和整形,而且可以过滤短帧、碎片等。

② 从工作方式来看, HUB 是一种广播模式,当 HUB 的某个端口工作的时候,其他所有端口都能够收听到信息,容易产生广播风暴,当网络较大时网络性能会受到很大的影响;而当交换机工作的时候,只有发出请求的端口和目的端口之间相互响应而不影响其他端口,因此交换机就能够隔离冲突域,并在一定程度上抑制广播风暴。

③ 从带宽来看,HUB 不管有多少个端口,所有端口都是共享一条带宽,在同一时刻只能有二个端口传送数据,其他端口只能等待,同时 HUB 只能工作在半双工模式下(半双工模式——在通道中同时只能沿着一个方向传输数据);而对于交换机而言,每个端口都有一条独占的带宽,当二个端口工作时并不影响其他端口的工作,同时交换机不但可以工作在半双工模式下而且可以工作在全双工模式下(全双工模式——在通道中同时双向数据传输的能力)。

二层交换技术的工作原理: 由于二层交换技术是在 OSI 七层网络模型中的第二层,即数据链路层进行操作的, 因此交换机对数据报文的转发是建立在 MAC( Media Access Control )地址 --物理地址基础之上的,对于 IP 网络协议来说,它是透明的,即交换机在转发数据报文时, 无须知道信源机和信宿机的 IP 地址,只需知其物理地址(MAC 地址)即可。交换机在工作过程当中会不断的检测报文的源和目的 MAC 地址来建立MAC 地址表, 这个表说明了某个 MAC 地址是在哪个端口上被发现的 。这样当交换机收到一个报文时,它便会看一下该数据报文的目的 MAC 地址,核对一下自己的 MAC地址表以确认应该从哪个端口把数据报文发出去;但若交换机收到的报文在目的 MAC地址不能在地址表中找到时, 交换机会把 IP 报文广播出去——这正是二层交换机的弱点所在。

二层交换机的报文转发涉及到两个关键的线程:

学习线程:

①交换机接收网段上的所有数据帧,利用接收数据帧的源 MAC 地址建立 MAC 地址表;

②端口移动机制: 交换机如果发现一个报文的入端口和报文中源 MAC 地址的所在端口不同,就产生端口移动,将 MAC 地址学习到新的端口;

③地址老化机制:如果交换机在很长一段时间内没有收到主机发出的报文,则该主机对应的 MAC 地址就会被删除,等下次报文来的时候重新学习。

报文转发线程:

① 交换机在 MAC 地址表中查找数据帧的目的 MAC 地址,如果找到就将该数据发送到相应的端口,如果找不到就向所有的端口发送(广播);

② 如果交换机收到的报文中源 MAC 与目的 MAC 地址相同,则丢弃该报文;

③ 交换机向入端口以外的所有其它端口发送广播报文。

二层交换机的缺点: 传统的以太网交换机对接收到的数据帧根据 MAC 地址进行二层转发,因此将网段上的冲突域限制到了端口级,但却无法限制广播域的大小,在主机数量很多的情况下,广播泛滥的现象仍然很严重。

交换机三种转发方法特点(交换机基本原理和转发流程总结)(1)

3、VLAN技术

为解决在局域网中存在的广播泛滥和安全性的问题,引出了 VLAN即虚拟局域网的概念,所谓 VLAN 是一种将局域网内的设备逻辑地而不是物理地划分成一个个网段从而实现虚拟工作组的新兴技术。

VLAN 技术允许网络管理者将一个物理的 LAN 逻辑地划分成不同的广播域(或称虚拟 LAN ,即VLAN ),每一个 VLAN 都包含一组有着相同需求的计算机工作站,与物理上形成的 LAN 有着相同的属性。但由于它是逻辑地而不是物理地划分,所以同一VLAN 内的各个工作站无须被放置在同一个物理空间里, 即这些工作站不一定属于同一个物理 LAN 网段。一个 VLAN 内部的广播和单播流量都不会转发到其他 VLAN 中,从而有助于控制流量、减少设备投资、简化网络管理、提高网络的安全性。引入了VLAN以后,对二层交换机的报文转发线程产生了如下的影响:

1) 交换机在 MAC 地址表中查找数据帧中的目的 MAC 地址,如果找到(同时还要确保报文的入VLAN 和出VLAN是一致的),就将该数据帧发送到相应的端口,如果找不到,就向(VLAN 内)所有的端口发送;

2) 如果交换机收到的报文中源 MAC 地址和目的 MAC 地址所在的端口相同, 则丢弃该报文;

3) 交换机向( VLAN 内)入端口以外的其它所有端口转发广播报文。

Vlan 与二层交换的规则 :

主机和交换机之间传送的是 unTagged 报文

交换机之间用干道链路( Trunk )连接

交换机用 Tag 来标识报文所属的 VLAN

干道链路上传输的是 Tagged Frame

不同 VLAN 之间在二层不能相互通讯

虚拟局域网将一组位于不同物理网段上的用户在逻辑上划分成一个局域网内,在功能和操作上与传统 LAN基本相同,可以提供一定范围内终端系统的互联。 VLAN的优势主要表现在以下四个方面:

1) 建立虚拟工作组模型,使虚拟局域网中的各个设备很容易相互访问;

2) 限制广播范围;

3) 增加网络的安全性;

4) 动态网络管理。

VLAN 的划分:

基于端口的 VLAN;

基于 MAC的 VLAN;

基于协议的 VLAN;

基于 IP 地址的 VLAN;

基于 IP 子网的 VLAN;

基于组合策略的 VLAN。

802.1Q 协议规定了一段新的以太网祯字段,与标准的以太网祯头相比,VLAN报文格式在源地址后增加了一个4字节的802.1Q 标签。4 个字节的 802.1Q 标签中,包含了 2 个字节的标签协议标识(TPID--Tag Protocol Identifier,它的值是 8100),和两个字节的标签控制信息( TCI--Tag Control Information ),TPID 是 IEEE 定义的新的类型,表明这是一个加了 802.1Q 标签的报文。如图 1 所示:

交换机三种转发方法特点(交换机基本原理和转发流程总结)(2)

VLAN Identified( VLAN ID ): 这是一个 12位的域,指明 VLAN 的 ID ,一共 4096 个,每个支持 802.1Q 协议的主机发送出来的数据包都会包含这个域,以指明自己所属的VLAN 。

Canonical Format Indicator( CFI ) :这一位主要用于总线型的以太网与 FDDI 、令牌环网交换数据时的祯格式。

Priority :这 3 位指明祯的优先级。一共有 8种优先级,主要用于当交换机阻塞时,优先发送优先级高的数据包。

在交换机中,直接与主机相连的端口是无法识别 802.1Q 报文的,那么这种端口称为 Access 端口;对于交换机相连的端口,可以识别和发送 802.1Q 报文,那么这种端口称为Tag Aware 端口。

工作原理:在交换机中的报文转发过程中, 802.1Q 报文标识了报文所属的 VLAN;在跨越交换机的报文中,带有VLAN标签信息的报文尤其显得重要。例如,定义交换机中的1端口属于VLAN 2,且该端口类型为 Acess,当1端口接收到一个数据报文后,交换机会查看该报文中没有 802.1Q 标签,若没有交换机根据 1 端口所属的 VLAN2,自动给该数据包添加一个 VLAN 2的标签头,然后再将数据包交给数据库查询模块,数据库查询模块会根据数据包的目的地址和所属的 VLAN进行查找,之后交给转发模块,转发模块看到这是一个包含标签头的数据包,根据报文的出端口的性质来决定是否保留还是去掉标签头。如果端口是 Tag Aware 端口,则保留标签,否则删除标签头。一般情况下,两个交换机互连的端口一般都是Tag Aware 端口, 交换机和交换机之间交换数据包时是没有必要去掉标签的。

VLAN 的 IVL 和 SVL 方式

IVL : Independent Vlan Learning

SVL : Shared Vlan Learning

交换机三种转发方法特点(交换机基本原理和转发流程总结)(3)

在 IVL 方式下: 每个 VLAN 都有自己的对应的 MAC 地址表(抽象的概念并不是物理的),相互之间没有影响。一个 MAC 地址可以被学习到不同的 VLAN 中,因此对一个用户来说如果属于多个 VLAN ,那么每个 VLAN 内的信息都需要重新学习。而 SVL 方式下,一个地址表项对所有的 VLAN 都通用,表中的 MAC 用户不能有重复。

PVLAN

PVLAN , Primary-VLAN 特性的简称,主要通过将用户划入不同的 VLAN ,实现用户之间二层报文的隔离。为客户提供了更多的解决方案。

在PVLAN 的设计中采用了多个 Secondary VLAN 包含在一个 Primary VLAN 中的方式, 给用户提供了灵活的配置方式。 如果用户希望实现二层报文的隔离,可以采用了为每个用户分配一个 Secondary vlan的方式,每个VLAN 中只包含用户连接的端口和 Uplink port ;如果希望实现用户之间二层报文的互通,可以将用户连接的端口划入同一个 VLAN 中;同时创建Primary VLAN ,该 VLAN 包含所有 Secondary VLAN 中包含的端口和 Uplink 端口,这样对上层交换机来说,可以认为下层交换机中只有一个 Primary VLAN ,用来标识设备,而不必关心Primary VLAN 中的端口实际所属的 VLAN ,简化了配置,节省了 VLAN 资源。

交换机三种转发方法特点(交换机基本原理和转发流程总结)(4)

Primary VLAN 中的所有端口都不是 802.1Q的 Trunk 端口,包括与其它交换机相连的Uplink 口。每个端口的 PVID就是它所属 Secsondary VLAN 的 ID,Uplink 端口的PVID是 Primary VLAN 的 ID 。如图 3所示,在交换机中可以实现端口同时属于多个 VLAN ,其中端口 1为 Uplink端口,属于 Primary VLAN 1 ,端口 2,3,4为接入端口,分别属于 Secsondary VLAN 2 ,3,4。这样,从 PVLAN 的端口接收到的报文,可以被所有 Secsondary VLAN 接收到,而每个Secondary之间,则由于 VLAN 的隔离作用,而不能互通报文。

将 PVLAN 与 VLAN 的 IVL 、SVL 方式相结合,则图 3中两种情况的地址表如下:

PVLAN + SVL 方式: mac A vlan 2 port 2

mac B vlan 3 port 3

mac C vlan 4 port 4

PVLAN + IVL 方式:

1) vlan 2地址表: mac A vlan 2 port 2

2) vlan 3地址表: mac B vlan 3 port 3

3) vlan 4地址表: mac C vlan 4 port 4

4) vlan 1地址表: mac A vlan 1 port 2

mac B vlan 1 port 3

mac C vlan 1 port 4

采用 VLAN(虚拟局域网 ) 技术确实解决了一些问题,但也引发出一些新的问题:随着应用的升级, 网络规划者可根据情况在交换式局域网环境下将用户划分在不同 VLAN(虚拟局域网 ) 上,但是 VLAN(虚拟局域网 ) 之间通信是不允许的,要想通信就需要用路由器 / 三层交换机来桥接这些 VLAN(虚拟局域网 ) 。

交换机三种转发方法特点(交换机基本原理和转发流程总结)(5)

4、三层交换技术

随着网络模式的不断扩展, 网络的流量情况从 80/20 向 20/80 的规则扩展, 然而若仍然使用传统的路由器,则会在转发数据方面就会出现网络瓶颈的问题,因此采用三层交换机来代替路由器。

三层交换技术采用 Intranet 关键技术,将第二层交换机和第三层路由器两者的优势相结合。上面提到,二层交换技术是在 OSI 网络标准模型中的第二层——数据链路层进行操作的,而三层交换技术是在网络模型中的第三层实现了数据报文的高速转发。

因此简单地说,三层交换技术就是:二层交换技术+三层转发技术。下面比较一下三层交换机和路由器的区别:

① 性能: 传统路由器基于微处理器转发报文,靠软件处理,三层交换机通过ASIC硬件来进行报文转发,性能差别很大;

② 接口类型:三层交换机的接口基本上都是以太网接口没有路由接口类型丰富;

③ 三层交换机可以工作在二层模式,对于不需要路由的报文可以直接交换,而路由器不具有二层功能。

三层交换技术的工作原理:假设两个使用IP协议的站点 A、 B 通过第三层交换机进行通信,A 在开始发送时,把自己的 IP 地址与 B 的 IP 地址比较,判断 B 是否与自己在同一子网内。若 B 与 A 在同一子网内,则进行二层的转发, A 通过三层交换机转发,广播一个 ARP 请求报文,B 同样通过三层交换机转发返回其 MAC 地址,在此过程中, A 与 B 分别将对方的 MAC地址学习到自己的 MAC地址表,进行数据的二层转发;若两个站点不在同一子网内, A 向 “缺省网关 ”发出 ARP( 地址解析 )请求报文,而 “缺省网关 ”的 IP 地址其实是三层交换机的三层交换模块。当A对 “缺省网关 ”的 IP 地址发出一个ARP请求报文时,网关向A回复自己的 MAC 地址, 然后 A 再向网关发出数据报文,这时如果三层交换模块在以前的通信过程中已经知道 B 的 MAC 地址,就通过三层硬件转发表 IP fdb Table 直接将报文发送出去; 否则三层交换模块根据路由信息向 B 广播一个 ARP 请求, B 得到此 ARP 请求后向三层交换模块回复其 MAC 地址,三层交换模块将地址保存到三层硬件转发表,这样后面的工作就可以重复上面的操作,使得报文的转发过程得以高效执行。

举例:

交换机三种转发方法特点(交换机基本原理和转发流程总结)(6)

如图 4 所示:交换机上划分了两个 VLAN —— VLAN1 和 VLAN2 ,同时交换机中配置了路由接口来实现 VLAN1 和 VLAN2 的互通。 可以看到主机 A 和 B 属于VLAN1 ,网关为 1.1.1.1 ;主机 C 属于 VLAN2,网关为 2.2.2.2 ,另外还假设主机 A 、B、C 的 ARP表里面均没有彼此的 MAC 地址。

三层交换机的二层转发( A 向 B 发起 Ping 请求):

1) A 检查报文的目的 IP 地址,发现和自己在同一网段,需要进行二层转发;

2) A 检查自己的 ARP 表,发现 B 的 MAC 地址不在自己的 ARP 表里(注意:ARP表里记录了 IP 地址和 MAC 地址之间的对应关系,因而需要首先检查 ARP 表,通过目的 IP 地址得到 MAC 地址,再进行数据报文的发送操作);

3) A—— > Switch 发出 ARP 请求报文 (注意: ① ARP 请求报文是广播报文; ② 事实上,在二层转发时是 A —— >B 发出 ARP 请求报文,但需要经过交换机进行转发);

4) Switch 学习A的 MAC 地址到自己的 MAC 地址表(注意: MAC地址表是二层转发引擎,并且在二层转发时不能学习到 Switch 的 ARP 表和三层硬件转发表) ,并广播 ARP 请求报文;

5) B 接收到 ARP 请求报文,学习 A 的 MAC 地址到自己的 ARP 表;

6) B—— > Switch 发出 ARP 回应报文;

7) Switch 学习 B 的 MAC 地址到自己的 MAC 地址表, 并向 A 发出 ARP 回应报文;

8) A 接受到 B 的 ARP 回应报文,并学习 B 的 MAC 的地址;

9) A—— > Switch 发出 ICMP 请求报文;

10) Switch —— >B 转发 ICMP 请求报文;

11) B—— > Switch 发出 ICMP 回应报文;

12) Switch —— >A 转发 ICMP 回应报文。

三层交换机的三层转发(A向C发起 Ping 请求):

1) A 检查报文的目的 IP 地址,发现和自己不在同一网段,则需要进行三层转发,通过网关转发报文信息;

2) A 检查自己的 ARP 表,发现网关的 MAC 地址不在自己的 ARP 表里;

3) A—— >Switch (网关)发出 ARP 请求报文;

4) Switch 将 A 的 MAC 地址学习到自己的 MAC 地址表、 ARP 表和三层硬件转发表(即 IP fdb Table );

5) Switch —— >A 发出 ARP 回应报文;

6) A 接收 ARP 回应报文,并学习 Switch ( VLAN1 路由口)的 MAC 地址;

7) A—— >Switch 发出 ICMP 请求报文 (注意: 报文中的目的 MAC 地址是VLAN1的,源MAC地址是A的,目的IP地址是C的,源IP地址是 A 的);

8) Switch 接收 ICMP 请求报文,判断出该报文是三层报文(原因:目的 MAC 地址与 Switch 的 MAC 地址相同);

9) Switch 检查自己的 路由信息表 ,发现报文的目的 IP 地址在自己的直连网段;

10) Switch —— >C 发出 ARP 请求报文,该报文在 VLAN2 内广播;

11) C 接受到 ARP 请求报文,并学习 Switch ( VLAN2 路由接口)的 MAC 地址;

12) C—— >Switch 发出 ARP 回应报文;

13) Switch 学习 C 的 MAC 地址;

14) Switch —— >C 转发 ICMP 请求报文(注意:目的 MAC 地址是 C 的,源 MAC地址是 VLAN2 的,目的 IP 地址是 C 的,源 IP 地址是 A 的);

15) C—— >Switch 发出 ICMP 回应报文;

16) Switch —— >A 转发 ICMP 回应报文。

从上面的例子可以看到,三层交换机划分了两个 VLAN , A 与 B 之间的通信是在一个 VLAN 内完成的,相对于交换机而言属于二层数据流;而 A 与 C 之间的通信需要跨越 VLAN ,因此属于三层数据流。下面讨论三层转发技术需要特别注意的几个问题:

交换机如何判断一个报文是二层报文还是三层报文呢?从上面的例子中可以看出,从 A 到 B 的报文由于在同一个 VLAN 内部,因此目的 MAC 地址是 B 的 MAC 地址;而从 A 到 C 的报文由于需要跨越 VLAN ,这样报文的目的 MAC 地址是 Switch设备虚接口上 VLAN1 的 MAC 地址。简单来说,就是当报文的目的 MAC 地址与Switch 的 MAC 地址相同时,该报文就为三层报文。

三层转发的几个相关的数据表格: MAC 地址表(FIB Table),路由表( Route Table ),ARP 表( ARP Table ),三层硬件转发表( IP fdb Table )。MAC 地址表是二层转发引擎,主要记录 MAC 地址和报文发出的端口信息之间的对应关系;路由表记录路由信息; ARP 表服务于三层转发,主要记录 IP 地址与 MAC 地址之间的对应关系;三层硬件转发表能够记录路由接口和 VLAN 的对应关系,以及下一跳的 MAC地址和对应端口信息。其中三层硬件转发表( IP fdb Table )的所有信息均来源于ARP表和 MAC 地址表,当这两个表发生变化时, IP fdb Table 也随着变化。

三层转发流程中围绕涉及 IP fdb Table 到两个关键的线程:①转发线程——硬件根据报文中的信息查找 IP fdb Table 来转发报文;②学习线程——软件根据相关的信息来学习和维护 IP fdb Table 以保证路由的畅通。三层交换机之所以转发报文的速度很快,在很大程度上都是这个三层硬件转发表的功劳,因为当它记录了报文的目的 MAC地址时,就可以直接通过硬件来实现转发,速度极快。

综上,本文重点讨论了各种网络设备的交换原理和报文的转发流程,其中以三层交换机的报文转发流程为例,将三层交换的二层转发和三层转发进行了详细的描述。需要特别指出的是,在研究报文转发流程时要注意二层和三层的报文转发过程的不同以及四种数据表格之间的区别和联系。

,