计网学习笔记四 Bridge && Switch
在前面的学习中,我们学习了MAC和LAN。在一个LAN里可以通信是很不错的,我们可以用一些东西让它变得更加不错!那就是我们接下来学习的网桥和交换机,其中包括了一点802.1D机制。😄
Bridge 网桥
注意:在自顶向下这本书中并没有介绍网桥的机制。
什么是网桥?
The bridge is a networking device in a computer network that is used to connect multiple LANs to a larger LAN.
也就是说,网桥是用来连接多个LAN的,也可以说网桥是用来把一个LAN切割成多个LAN。
它提供了多个LAN / WAN之间的交互,它的功能,也就是实现网桥的需求有:
- 存储和转发:会检查帧的终点mac在哪里,选择合适端口发出,会选择性存储MAC地址
- 对各个host透明:host不知道网桥的存在。
- 即插即用,存在自学习机制:不用进行人工配置,自学习LAN中的拓扑结构。
网桥的机制
首先我们来回顾一下以太网帧的发送:
发送方把frame传进broadcast链路,在链路上的每一个接收方都会把frame捕获,检查frame的MAC地址——如果frame的目标MAC和自己的相同或者目标MAC为FF:FF:FF:FF:FF:FF
(即广播帧)时,就将frame向上传输到网络层中。同时,以太网有着即插即用的特点,即无需进行个人配置。
接下来是介绍网桥bridge的机制:
802.1D 生成树算法
在以太网中,frame的传播可能会因为不当的拓扑结构产生一个很严重的问题:广播风暴。(如果拓扑中存在环路,并且没有恰当的机制来处理,broadcast storm
就会产生。如图。)
![](https://img2023.cnblogs.com/blog/2565949/202303/2565949-20230331175642156-2008612477.png)
要避免回路传播,在物理层面上线路是很有可能无法做到无环的,所以我们引入生成树算法(spanning tree
)。拓扑中的生成树特点需要有:(可以去看看数据结构里的生成树哈,感觉更好理解)
1.Sub-graph that includes all vertices but contains no cycles .
2.Links not in the spanning tree are not used to forward frames .
来看几个生成树的例子:
![](https://img2023.cnblogs.com/blog/2565949/202303/2565949-20230331175642665-717912931.png)
这个算法在网络拓扑中的详细实现写在了802.1D协议中,在以太网的生成树拓扑构建中被广泛使用。算法的模式就是输入一个任意的网络拓扑结构,然后在链路边中进行选择,最终给出一个生成树拓扑。这个算法需要做的事情有两个:
- 选择一个根节点:往往选择的是MAC地址最小的host作为根节点(原因是一般会认为拓扑中拥有最小mac的网卡是最老的,后面大的mac一般是新加进来的)
- 计算各个host到根节点的最短路径
其中计算各个host到根节点的最短路径的详细过程为:
![](https://img2023.cnblogs.com/blog/2565949/202303/2565949-20230331175642999-148120929.png)
![](https://img2023.cnblogs.com/blog/2565949/202303/2565949-20230331175643414-103246685.png)
![](https://img2023.cnblogs.com/blog/2565949/202303/2565949-20230331175643963-897753241.png)
给个流程图会好理解一点:
![](https://img2023.cnblogs.com/blog/2565949/202303/2565949-20230331175644377-1109962877.png)
然后在生成树拓扑中网桥的flooding机制为:首先忽略掉不在生成树上面的所有port,然后当一个包到达网桥时,在除了ingress之外的ports发送这个包。
自学习机制
网桥和交换机中都有相对应的一块存储区域,来记录一些MAC和其对应的port。自学习机制的启用避免了过多flooding的浪费。自学习的步骤如下:
![](https://img2023.cnblogs.com/blog/2565949/202303/2565949-20230331175644828-1347886691.png)
结合自学习机制,总结网桥中frame转发的规律:
Frame转发
- **首先网桥里有一个转发表,这个表维护着帧转发的映射数据 **
- 通过每个端口到达的源地址(src MAC)会被这个表记录下来,形成类似于
MAC--port
的键值对;
- 通过每个端口到达的源地址(src MAC)会被这个表记录下来,形成类似于
- 然后当一个帧从端口
X
传进来时:- 在转发表中寻找是否存在目标地址(dest MAC)对应的键值对;
- 如果找不到该键值对,则 向除了X端口以外的端口进行转发 (flooding)
- 如果列出了对应端口
X
的dest MAC,则将其丢弃(意味着在同一个LAN中) - 如果列出了端口Y的地址,则检查端口Y处于“ Blocking 或 Forwarding ”状态, 如果是
Forwarding
状态则进行传输
- Blocking 状态的设置是用来创建生成树的
Switch 交换机
switch也分为二层(
Layer 2 switches
)和三层(Layer 3 switches
)两类。三层交换机已经可以起到路由器的作用。二层交换机的端口是没有MAC地址的。
![](https://img2023.cnblogs.com/blog/2565949/202303/2565949-20230331175645305-1856518284.png)
Layer 2 switches 的需求
Layer 2 switches的需求和网桥的实现需求大差不差。switch具有的机制同样有:存储和转发,对host透明,即插即用自学习机制,解决广播风暴使用的生成树机制;它和bridge不同的点在于:
- bridge需要连接的是多个LAN(连接到LAN的bus上),通常只有2-4个端口;
- switch连接的是多个host或者多个子网,端口的数量多了很多,并且是无碰撞的(和bridge的“一个LAN一个碰撞域”不同,switch连接的host是“一个host一个碰撞域”,相当于点对点)
Layer 3 Switches 的使用
当连接的station数量多起来后,二层交换机已经不能满足需求,会产生一系列例如广播过载(broadcast overload
)、单一路径(Lack of Multiple Paths
等的问题。
三层交换机主要是在硬件上实现路由器的包转发(IP)逻辑,将二层交换机连成的多个LAN再连在一起。
如何解决二层交换机产生的问题?
-
Broadcast Overload:单一二层交换机实现多host广播未免太过吃力。这时加入的三层交换机可以把host分散到各个二层交换机中,此时二层交换机相当于一个hub。
-
Lack of Multiple Paths:多个二层交换机使用生成树机制实现无环路,但此时产生了单一路径的问题——两个station之间只有一条路径,限制了性能还降低了可靠性。此时将LAN拆散分成一个个子网,然后将子网用三层交换机连起来,那么MAC的broadcast被限制在子网中,并且允许子网之间有多条路径。
一些小的点
交换机毒化:
![](https://img2023.cnblogs.com/blog/2565949/202303/2565949-20230331175645916-275151250.png)
虚拟局域网:见自顶向下6.4.4