目录
一、链路层交换机
二、交换机:支持多节点同时传输
三、交换机:转发表或称交换表
四、交互机:自学习
1. 单个交换机自学习/转发的例子
2. 多个交换机自学习/转发的例子
五、交换机:数据帧的过滤/转发
六、交换机的交换特点
1、存储转发交换方式
2、快速分组交换方式
3、交换机的交换方式讨论
七、三层交换机*
1、三层交换机的工作原理
2、交换机 versus 路由器
八、VLAN
1、VLAN:动机
2、VLAN
3、基于端口的 VLAN
4、跨越多个交换机的 VLAN
一、链路层交换机
① 交换机是链路层设备
存储和转发数据帧:检查达到的数据帧的 MAC 地址,有选择的转发数据帧到一个或多个输出链路,当数据帧被转发到一个共享网段时,使用 CSMA/CD 来访问共享链路。
② 交换机对于主机是透明的
主机不关心是否存在交换机
③ 交换机的功能
- 过滤
- 转发
④ 交换机的特点
- 自学习
- 即插即用:交换机不需要手工配置
二、交换机:支持多节点同时传输
支持同时传输:A-to-A' 和 B-to-B' 可以同时传输,而不会发生碰撞。
- 每个主机由单独的链路直接连到交换机端口
- 交换机可以缓存数据帧
- 以太网协议在每个输入链路使用,无碰撞,全双工
- 每条链路自身是一个碰撞域
三、交换机:转发表或称交换表
Q:交换机是怎么知道 A' 可通过端口 4 达到, B' 可通过端口 5 到达呢?
A:每个交换机有一个交换机转发表,类似于路由器的路由表,其中每个条目包括:
- 主机的 MAC 地址
- 到达主机的端口
- 时戳:存活时间
交换机转发表类似如下形式:
Q:转发表中的条目是怎么建立的呢?是否类似于路由协议呢?
A:通过自学习。
四、交互机:自学习
交换机会学习通过自己的哪些端口可以到达哪些主机。
当接收到数据帧时,交换机
- “学习” 发送主机的位置,即到达端口
- 在转发表中记录发送主机/位置对
1. 单个交换机自学习/转发的例子
主机 A 想要向主机 A' 发送数据帧,该帧中:源 MAC 地址是 A,目的 MAC 地址是 A' 。主机 A 的数据帧传输到了交换机处,交换机 “学习”,在原始空的转发表中添加了主机 A 的 MAC 地址和它的到达端口。接着,交换机查询转发表,想找到主机 A' 的相关条目,可惜没有,因此交换机向与它相连的所有主机发送该数据帧,除了主机 A 。
主机 A' 接收到数据帧,发现是给自己的,因此进行完全接收;其它主机发现目的 MAC 地址与自己的不匹配,因此丢弃该数据帧。当主机 A' 向主机 A 发送数据帧时,数据帧传输到交换机,交换机先 “学习”,即添加主机 A' 的 MAC 地址和它的到达端口。然后,交换机查询转发表,发现有主机 A 的相应表目,因此直接通过端口 1 把数据帧传送给主机 A,不再需要像之前那样向所有主机发一份了。
2. 多个交换机自学习/转发的例子
C:S1 => A/B/S4 => S2/S3
I:S3 => S4 => S1
五、交换机:数据帧的过滤/转发
当交换机收到数据帧时:
- 记录到达链路和发送主机的 MAC 地址
- 使用数据帧的目的 MAC 地址,在转发表中检索
检索结果有以下三种情况:
〇 在转发表条目中找到目的 MAC 地址:
- ① 目的 MAC 地址对应的端口和数据帧的到达端口相同 —— 丢弃该数据帧
- ② 目的 MAC 地址对应的端口和数据帧的到达端口不同 —— 转发该数据帧
③ 在转发表条目中没有找到目的 MAC 地址 —— 向除了到达端口之外的所有端口转发
Q:为什么可以直接 “丢弃该数据帧” ?
六、交换机的交换特点
- 识别源 MAC 地址,更新转发表/交换表
- 识别目的 MAC 地址,根据转发表/交换表进行端口选择
Q:在识别目的 MAC 地址和源 MAC 地址的过程中是否需要接收并缓存完整的帧呢?
- 存储转发:缓存整个帧后再转发
- 快速分组/直通交换:识别出目的地址直接转发
路由器是存储转发设备:因为路由器需要修改 IP 分组的 ttl,所以它必须把分组缓存下来进行解封、修改、封装。而交换机不需要对帧进行修改,并且知道 MAC 地址后就能直接转发,因此交换机既可以采用存储转发的方式,又可以采取快速分组的方式。
1、存储转发交换方式
2、快速分组交换方式
3、交换机的交换方式讨论
- 存储转发:具有差错检测功能,转发时延较大,适用于出错率高的链路。
- 快速分组:不具有差错检测功能,转发时延较小,适用于时延要求高,出错率低的链路。
七、三层交换机*
传统的交换技术是在 OSI 网络参考模型中的数据链路层进行操作的,通常称做 “二层交换机”。三层交换是相对于传统的交换概念而提出的,它能够在OSI 网络参考模型中的网络层实现数据包的高速转发。简单地说,三层交换技术就是二层交换技术 + 三层转发技术,三层交换机就是 “二层交换机+基于硬件的路由器”。
1、三层交换机的工作原理
发送站点A在开始发送时,把自己的IP地址与B站的IP地址比较,判断B站是否与自己在同一子网内。
若目的站B与发送站A在同一子网内,则进行二层的转发。
若两个站点不在同一子网内,则发送站A要向“缺省网关”发出ARP请求,请求获得B的MAC地址。
如果三层交换机知道B的MAC地址,则向A回复B的MAC地址。否则三层交换机根据路由信息向B站广播一个ARP请求,B站得到此ARP请求后向三层交换机回复其MAC地址,三层交换机将B站的MAC地址保存到二层交换引擎的MAC地址表中,并回复给发送站A。
A直接用B的MAC地址封装数据帧,三层交换机接收到数据后直接进行二层交换。
2、交换机 versus 路由器
两者都是存储转发设备:
- 路由器:网络层设备(检查网络层头部)
- 交换机:链路层设备(检查链路层头部)
两者都有转发表:
- 路由器:使用路由算法计算转发表,基于 IP 地址转发
- 交换机:通过泛洪、自学习来学习转发表,基于 MAC 地址转发
八、VLAN
Virtual Local Area Network
1、VLAN:动机
2、VLAN
VLAN:利用支持 VLAN 的交换机,在一个实际的物理局域网内,定义多个虚拟的局域网。
基于端口的 VLAN:利用交换机内置的管理软件,将端口分组,使得一个单独的交换机像多个交换机那样工作。
3、基于端口的 VLAN
虽然这些主机都连在一个交换机上,但是连接 VLAN1 端口的主机只能和同样连接 VLAN1 端口的主机通信,对连接 VLAN2 端口的主机同理。
- 流量隔离:从 1-8 号端口进/出的帧,只能访问 1-8 号端口
- 动态成员:端口可以在 VLAN 之间动态调整
- VLAN 之间的转发:通过路由器来完成
在实际中,厂商会将路由功能和交换功能都整合在一台设备中。
4、跨越多个交换机的 VLAN
干线端口:trunk port,承载定义在多个物理交换机之上的 VLAN 间的流量。
802.1q 协议:对干线端口之间传输的帧,添加或移除额外的头部字段。
某一个 VLAN 内的流量帧,如果要跨域物理的交换机,那么需要使用 802.1q 格式,其中带有 VLAN ID 信息。注意:802.1q 协议只应用于交换机之间连接的端口!
图中的 16 号端口和 1 号端口就是干线端口。图中的红色链路,既帮助转发 VLAN1 的数据帧,又帮助转发 VLAN2 的数据帧。可见,该链路是属于所有 VLAN 的。注意:它只帮助转发给属于同一 VLAN 的端口,不可能帮助 VLAN1 端口转发给 VLAN2 端口。
主机传输给交换机的数据帧采用的是普通的帧格式,交换机会根据 802.1q 协议在数据帧中添加额外的头部字段,用于指示该数据帧来自哪个 VLAN 。因为 VLAN 是在交换机中设置的,所以交换机完全知道应该添加什么样的字段。
802.1q VLAN 帧格式*