惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
Netflix TechBlog - Medium
I
InfoQ
Engineering at Meta
Engineering at Meta
Jina AI
Jina AI
Recent Announcements
Recent Announcements
T
The Blog of Author Tim Ferriss
P
Proofpoint News Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
D
Docker
Microsoft Security Blog
Microsoft Security Blog
宝玉的分享
宝玉的分享
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
GbyAI
GbyAI
博客园 - Franky
博客园 - 聂微东
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 叶小钗
酷 壳 – CoolShell
酷 壳 – CoolShell
B
Blog RSS Feed
WordPress大学
WordPress大学
MyScale Blog
MyScale Blog
月光博客
月光博客
罗磊的独立博客

蛮荆

如何获取更多的免费服务器 Kubernetes 调度器队列 - 设计与实现 Kubernetes 调度器 - 核心流程 Kubernetes Networking Model & CNI Kubernetes 控制器管理总结 Kubernetes CronJob 设计与实现 Kubernetes Job 设计与实现 Kubernetes HPA 设计与实现 Kubernetes Deployment 滚动更新实现原理 Kubernetes GC 设计与实现 Kubernetes Pod 驱逐 - 设计与实现 Kubernetes Daemonset 设计与实现 Kubernetes ReplicaSet 设计与实现 Kubernetes EndPoint 设计与实现 Kubernetes Informer 设计与实现 降本增效之应用优化 (三) 日志存储与检索 Kubernetes Pod 设计与实现 - 创建流程 Kubernetes 探针设计与实现 Unix 编程艺术名句摘录 Kubernetes - CRI 概述 Golang 编译速度为什么这么快? Kubernetes Pod 设计与实现 - Pause 容器 Kubernetes - kube-proxy 代理模式工程优化 Kubernetes 应用最佳实践 - 优雅关闭长连接 Kubernetes Service 类型和会话亲和性 Kubernetes 为什么需要 Ingress Kubernetes 架构 - 控制平面和数据平面 降本增效之应用优化 (二) 大报表 Go 语言如何获取 CPU 利用率 降本增效之应用优化 (一) Redis
网络基础: 交换机 (拾遗补缺)
2017-07-16 · via 蛮荆

网络基础: 交换机 (拾遗补缺)

2017-07-16 计算机网络

交换机的作用

将很多主机、网关连接在一起,形成一个广播域,使得广播报文仅在这个广播域内传播。

交换机和网卡

可以简单地认为,交换机的每个网线接口后面都是一块网卡,网线接口和后面的电路部分加在一起称为一个 “端口”,也就是说交换机的一个端口就相当于计算机上的一块网卡。

交换机的工作方式和网卡的不同之处在于:

网卡本身具有 Mac 地址,收到到包之后,判断接收方 Mac 地址是不是自己,如果不是发给自己的包,直接丢弃。

交换机的端口不判断接收方 Mac 地址,而是将包存入到缓冲区,然后查询包的接收方 Mac 地址是否已经在 Mac 地址表中有记录了。

Mac 地址表主要包含两个信息:

  1. 设备 (主机) 的 Mac 地址
  2. 设备 (主机) 连接在交换机的哪个端口上

如图所示,Mac 地址和端口一一对应,通过 Mac 地址表可以快速判断出收到的包应该转发到哪个端口。

图片来源: 网络是怎样连接的(户根勤)


Mac 表的维护

交换机 Mac 地址表示例

写入

收到包时,将发送方 Mac 地址以及其输入端口的号码写入 Mac 地址表中。

由于收到包的端口连接着发送这个包的设备,所以只要将这个包的发送方 Mac 地址写入地址表即可。

后续再次收到发往这个地址的包时,交换机就可以将它转发到正确的端口了。

交换机每次收到包时都会执行这个操作,因此只要某个设备发送过网络包,它的 Mac 地址就会被记录到地址表中。

删除

地址表中的记录不能永久有效,应该一段时间不使用后就自动删除。

删除地址表中某条记录,可以防止设备移动时产生问题。

例如开会时把笔记本电脑从办公桌拿到会议室,这时设备就发生了移动,从交换机的角度来看,就是本来 (无线 Wifi) 连接在某个端口上的笔记本电脑消失了。这时如果交换机收到了发往这台笔记本电脑的包,依然会将包转发到原来的端口,通信就会出错。

为了避免上述通信出错问题,必须定时删除过期的记录。

更新

但是,交换机如何知道这台笔记本电脑已经从原来的端口 (位置) 移走了呢?其实很简单,只要笔记本电脑连接到会议室 (新的) 交换机,交换机就会根据笔记本电脑发出的包来更新它的地址表,这样,后续的通信就不会出错了。

重启

当地址表的内容出现异常时,只要重启一下交换机就可以重置地址表,也不需要手动进行维护 (果然,90% 的问题都可以通过重启解决)。


特殊操作

目标端口和源端口相同

当交换机发现一个包的目标端口和源端口是同一个端口,就会直接丢弃这个包。

找不到指定的 Mac 地址

如果交换机在 Mac 地址表中找不到指定的 Mac 地址,这可能是因为具有该地址的设备还没有向交换机发送过包,或者这个设备 (主机) 已经离线,导致其地址被删除了。

这种情况下,交换机无法判断应该把包转发到哪个端口,只能将包转发到除了源端口之外的所有端口上 (类似广播),这样无论该设备连接在哪个端口上都能收到这个包 (当然,除了该设备外,其他设备收到包之后会直接丢弃)。

广播

如果接收方 Mac 地址是一个广播地址,那么交换机会将包发送到除源端口之外的其他所有端口 (这里的端口指的是交换机上的 “网线接口”)。

Mac 广播地址: FF:FF:FF:FF:FF:FF

IP 广播地址: 255.255.255.255

如图所示,设备 1 发送了一个广播消息,然后被交换机转发到了设备 2 和设备 3。

交换机广播示例


三层交换机

L3 (三层) 交换机是一种在 L2 (二层) 交换机的基础上增加了路由选择功能的网络硬件,能够基于硬件实现网络功能和转发分组。

L2 交换机可以通过使用 VLAN 分割广播域,但主机之间的包交换必须位于同一 VLAN 范围内,对位于不同 VLAN 上的主机进行通信时,则必须使用路由功能,因此需要在网络上添加额外的路由器。

图片来源: 图解网络硬件(三轮贤一)

L3 交换机无需其他路由器,自身就可以直接完成 VLAN 配置、不同 VLAN 之间的通信。

图片来源: 图解网络硬件(三轮贤一)

现代化的基础设施架构方案中,越来越多组织的内部网络核心交换机采用 L3 交换机。

交换机 VS 集线器

全双工模式

全双工模式是交换机特有的工作模式,它可以同时进行发送和接收操作,集线器不支持。

使用集线器时,如果多台计算机同时发送信号,信号就会在集线器内部混杂在一起,进而无法使用,这种现象称为碰撞,是以太网的一个重要特征。

转发

交换机只将包转发到具有特定 Mac 地址的主机所连接 (对应) 的端口,其他无关端口都是空闲的,这些空闲的端口可以传输其他的包,因此交换机可以同时转发多个包。

集线器会将输入的信号广播到所有的端口,如果同时输入多个信号就会发生碰撞,无法同时传输多路信号,因此从设备整体的转发能力来看,交换机要高于集线器。


FDB

转发表(Forwarding Information Base,FIB)存储了路由器或交换机用于转发数据包的路由信息,用于指导网络设备对数据包进行转发和路由选择,表中的每个条目包含目标网络地址、下一跳地址(或出接口)以及其他相关信息。

网路邻接表 表示网络设备上的邻居关系列表,存储了网络设备直接相连的其他设备的信息,如 Mac 地址、IP 地址等,主要用于维护设备之间的直接通信关系,以便进行数据包的交换和转发。

图片来源: 图解网络硬件(三轮贤一)

# 转发信息库示例

Destination       Next Hop          Interface
0.0.0.0/0         192.168.1.1       Ethernet0
192.168.1.0/24    0.0.0.0           Ethernet1
10.0.0.0/8        192.168.1.2       Ethernet2

所有目标 IP 为 0.0.0.0/0 的数据包,都会被转发到下一跳路由地址 192.168.1.1 (也可以称为网关)。

# 邻接表示例

Neighbor Device   Interface         Mac Address        IP Address
Router1           Ethernet0         00:1A:2B:3C:4D:5E  192.168.1.1
Switch1           Ethernet1         00:11:22:33:44:55  10.0.0.1
Host1             Ethernet2         00:AA:BB:CC:DD:EE  192.168.1.10

下一跳路由地址 192.168.1.1 的路由设备,对应的 Mac 地址为 00:1A:2B:3C:4D:5E。

L3 交换机将转发表和邻接表整合成一份表,FDB(Forwarding Database,转发数据库),注册于内存中并通过硬件处理完成高速检索。

下面是 L3 交换机的内部处理示例图。

图片来源: 图解网络硬件(三轮贤一)