在前面的学习中,我们学习了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就会产生。如图。)

要避免回路传播,在物理层面上线路是很有可能无法做到无环的,所以我们引入生成树算法(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 .

来看几个生成树的例子:

这个算法在网络拓扑中的详细实现写在了802.1D协议中,在以太网的生成树拓扑构建中被广泛使用。算法的模式就是输入一个任意的网络拓扑结构,然后在链路边中进行选择,最终给出一个生成树拓扑。这个算法需要做的事情有两个:

  • 选择一个根节点:往往选择的是MAC地址最小的host作为根节点(原因是一般会认为拓扑中拥有最小mac的网卡是最老的,后面大的mac一般是新加进来的)
  • 计算各个host到根节点的最短路径

其中计算各个host到根节点的最短路径的详细过程为:



给个流程图会好理解一点:

然后在生成树拓扑中网桥的flooding机制为:首先忽略掉不在生成树上面的所有port,然后当一个包到达网桥时,在除了ingress之外的ports发送这个包。

自学习机制

网桥和交换机中都有相对应的一块存储区域,来记录一些MAC和其对应的port。自学习机制的启用避免了过多flooding的浪费。自学习的步骤如下:

结合自学习机制,总结网桥中frame转发的规律:

Frame转发

  • **首先网桥里有一个转发表,这个表维护着帧转发的映射数据 **

    • 通过每个端口到达的源地址(src MAC)会被这个表记录下来,形成类似于MAC--port的键值对;
  • 然后当一个帧从端口X传进来时
    • 在转发表中寻找是否存在目标地址(dest MAC)对应的键值对;
    • 如果找不到该键值对,则 向除了X端口以外的端口进行转发 (flooding)
    • 如果列出了对应端口X的dest MAC,则将其丢弃(意味着在同一个LAN中)
    • 如果列出了端口Y的地址,则检查端口Y处于“ BlockingForwarding ”状态, 如果是Forwarding状态则进行传输
  • Blocking 状态的设置是用来创建生成树的

Switch 交换机

switch也分为二层(Layer 2 switches)和三层(Layer 3 switches)两类。三层交换机已经可以起到路由器的作用。二层交换机的端口是没有MAC地址的。

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被限制在子网中,并且允许子网之间有多条路径。

一些小的点

交换机毒化

虚拟局域网:见自顶向下6.4.4

计网学习笔记四 Bridge && Switch的更多相关文章

  1. Networking && Internet 计网学习笔记一

    Networking && Internet 计网学习笔记一 参考书籍: James F. Kurose, Keith W. Ross. 计算机网络-自顶向下方法 (7th). 机械工 ...

  2. 计网学习笔记二 Link Layer Service

    在上一周的计网学习了network和Internet的总论.在这一周开始的未来几讲将集中在链路层link layer,并且会有相应的计网lab完成.在这一讲中,我们主要关注链路层提供的服务. 课程资料 ...

  3. 计网学习笔记五 wireless && mobile networks

    老师把无线网络用一节课一遍过了-感觉没能学透,便课后自己总结,看书,找资料补充,把无线网络大概摸了个七七八八.虽然不算精细,但还能看!内容包括WLAN总概,WiFi-WLAN的实现,802.11规定的 ...

  4. 计网学习笔记三 MAC与LAN

    在上一讲中,我们学习了链路层可以提供的服务:framing,link access,reliable delivery,error detection&correction.这一讲我们从lin ...

  5. 计网学习笔记六 Network Layer Overview

    这节课开始进入了网络层的学习,讲述了网络层提供的功能,还有路由器内部是什么样子的,以及virtual circuit网络和datagram网络的一点比较. 网络层有什么作用呢?用一句话来说,就是需要负 ...

  6. 计网学习笔记七 IP protocol basic

    在这一节讲了IP协议的基本内容:包括IPv4提供的操作.数据报在IPv4下是怎么样的结构.数据报是怎样切片发送的.IPv4的编址方式有什么--IPv6在下一节讲网络层协议簇时细讲. IPv4协议的具体 ...

  7. 官网实例详解-目录和实例简介-keras学习笔记四

    官网实例详解-目录和实例简介-keras学习笔记四 2018-06-11 10:36:18 wyx100 阅读数 4193更多 分类专栏: 人工智能 python 深度学习 keras   版权声明: ...

  8. Typescript 学习笔记四:回忆ES5 中的类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  9. kvm虚拟化学习笔记(四)之kvm虚拟机日常管理与配置

    KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51 ...

  10. ZooKeeper学习笔记四:使用ZooKeeper实现一个简单的分布式锁

    作者:Grey 原文地址: ZooKeeper学习笔记四:使用ZooKeeper实现一个简单的分布式锁 前置知识 完成ZooKeeper集群搭建以及熟悉ZooKeeperAPI基本使用 需求 当多个进 ...

随机推荐

  1. React报错之ref返回undefined或null

    正文从这开始~ 总览 当我们试图在其对应的DOM元素被渲染之前访问其current属性时,React的ref通常会返回undefined或者null.为了解决该问题,可以在useEffect钩子中访问 ...

  2. 2023年江苏“领航杯”MISC一个很有意思的题目(别把鸡蛋放在同一个篮子里面)

    别把鸡蛋放在同一个篮子里面 题目附件:https://wwzl.lanzoue.com/i6HmX16finnc 1.题目信息 解压压缩包打开附件,获得5141个txt文档,每个文档都有内容,发现是b ...

  3. Mygin实现分组路由Group

    本篇是Mygin第五篇 目的 实现路由分组 为什么要分组 分组控制(Group Control)是 Web 框架应该提供的基础功能之一,对同一模块功能的开发,应该有相同的前缀.或者对一部分第三方接口, ...

  4. [转帖]linux下查看内存频率,内核函数,cpu频率

    https://www.cnblogs.com/lovesKey/p/10900501.html 查看CPU: cat /proc/cpuinfo # 总核数 = 物理CPU个数 X 每颗物理CPU的 ...

  5. [转帖]Oracle数据库开启NUMA支持

    NUMA简介 NUMA(Non Uniform Memory Access Architecture,非统一内存访问)把一台计算机分成多个节点(node),每个节点内部拥有多个CPU,节点内部使用共有 ...

  6. [转帖]Python基础之函数(四)

    https://www.jianshu.com/p/168e341fb81c 一.函数定义 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段:比如常用的print(),就是内建函数:通 ...

  7. [转帖]SQL标准

    SQL 的标准 1986 年 10 月,美国国家标准协会 ANSI 采用 SQL 作为关系数据库管理系统的标准语言,并命名为 ANSI X3. 135-1986,后来国际标准化组织(ISO)也采纳 S ...

  8. [转帖]第七篇:双管齐下,JVM内部优化与JVM性能调优

    文章目录 一.前言 二.编译时优化 2.1 Javac编译器 2.2 Java语法糖 2.2.1 泛型和泛型擦除 2.2.2 自动装箱.自动拆箱.遍历循环 2.2.3 条件编译 三.运行时优化(核心: ...

  9. CentOS测试yum update.

    我有一台centos7 1611 的机器 想着升级一下 简单进行测试 1. 操作系统的信息为: [root@CentOS1611 yum.repos.d]# uname -a Linux CentOS ...

  10. 400G 光模块的价格

    400G 光模块的价格  令人惊叹... https://www.fs.com/cn/c/40g-100g-transceivers-889?pro_type=&sortby=priced&a ...