09.以太网交换基础

文章发布时间:

最后更新时间:

页面浏览: 加载中...

以太网

早期的以太网使用共享线缆(HUB)接入的设备会共享带宽,泛洪处理数据
会导致数据帧的冲突问题(冲突域) CSMA/CD 可以缓解冲突的问题

  1. 先听后发:先侦听链路是否空闲,空闲时发送数据(非冲突时发送)
  2. 边听边发:在发送的过程中也会持续监听链路,如果发现冲突则停止发送(冲突停发)
  3. 随机延迟后重发:监听链路冲突缓解或解决后重新再发送数据

以太网的数据帧类型

  • Ethernet II:
    主要用于承载用户数据,或者普通二层流量
    使用 Type 来标识上层协议(如:0x0800 = IP、0x86DD = IPv6 等)

  • 802.3:
    主要用于承载控制协议流量(BPDU、IS-IS 格式帧等)
    使用 Length、LLC、SNAP 用于标识上层协议(一般使用 length 来标识)

  • MAC 地址(48 bit)
    是网卡的出厂地址,默认由厂商分配
    前 24 bit(OUI 指定,用于标识厂商)后 24 bit 由厂商分配,用于唯一标识一台设备

MAC 地址(帧类型)

  1. 单播:第 8 bit,固定为 0,偶数帧为单播数据帧
    例如:02-00-00-00-00-01 (02 代表是单播帧,也就是 XX-00-00-00-00-01,如果 XX 是偶数就是单播帧)

  2. 组播:第 8 bit,固定为 1,奇数帧为组播数据帧
    例如:01-00-5E-00-00-0A (01 代表是组播帧,也就是 XX-00-5E-00-00-0A,如果 XX 是奇数就是组播帧)

  3. 广播:所有 bit 位都等于 1,FF-FF-FF-FF-FF-FF 为广播帧

交换机对于不同的数据帧,处理方式

  • 学习功能:
    交换设备收到数据帧后,会根据数据帧的源 MAC 地址来进行记录
    记录 MAC 地址和接口的绑定关系(有相关记录的单播帧,称为已知单播,没有记录的称为,未知单播)

  • 已知单播:
    从一个接口收到单播数据帧,会查看目的 MAC 地址表是否有对应关系,如果有,则从记录的接口发出
    (交换设备的转发行为)

  • 未知单播:
    从一个接口收到单播数据帧,会查看目的 MAC 地址表是否有对应关系,如果没有,则从所有的其他接口发出
    (交换设备的泛洪处理)

  • 组播:
    收到一个组播数据帧,会先上送 CPU 处理,查看本设备是否监听
    如果有监听,则从对应的接口转发
    如果没有监听,则直接泛洪处理

  • 广播:
    收到一个广播数据帧,除了接收数据的接口,其余接口都做转发(泛洪)

冗余链路

冗余的交换链路会带来环路和广播风暴等问题,通过生成树解决

端口角色

RP:根端口,是非根交换机到达根桥最近的一个接口(一台非根交换机,有且只有 1 个)
DP:指定端口,每条链路都需要选举,最优的为指定端口(用于转发 BPDU 和用户数据)

选举参数

  1. Root ID:
    优先级 + MAC 地址
    优先级:16 bit = 0 —— 65535,但是后 12 bit 固定为 0(4096)
    优先级只能是 4096 的倍数,如:32768、0、4096、8192 等
    (优先级默认:32768 越小越优)

    如果优先级一致,则比较 MAC 地址(越小越优)

  2. RPC:
    根路径开销,非根设备到达根桥的总开销,最小的会成为 RP 端口

  3. BID:
    发送者的桥 ID,哪一台设备发送,就会填充该设备的桥 ID 信息
    优先级 + MAC 地址
    优先级:16 bit = 0 —— 65535,但是后 12 bit 固定为 0(4096)
    优先级只能是 4096 的倍数,如:32768、0、4096、8192 等
    (优先级默认:32768 越小越优)

  4. PID:
    优先级 + 端口 ID 组成
    优先级默认:128 越小越好,一致则比较端口 ID,越小越好
    例如:G0/0/1 接口, PID = 128.1

    1. 选举根桥:
      所有的交换设备都会认为自己是根桥,通过发送 BPDU 的报文进行选举
      比较参数 1 选举最优的设备成为根桥(有且只有一个)
      其余设备为非根交换机

    2. 非根交换机选举根端口:
      非根设备会比较本设备所有接口,哪一个到达根桥最近就会成为根端口
      比较参数 2 (数值最小的)

    3. 每段链路都需要选举 DP 端口
      先比较参数 1 和 2 如果无法选举,则比较3
      补充:双交换设备双链路相连,前 3 个选举参数一致,则会比较第 4 个参数 PID

    4. 阻塞端口:
      阻塞非 DP 和 RP 的端口,选出 AP 端口

配置命令:

  1. 修改设备的优先级
    方法一
    1
    stp   priority  0					// 把设备的优先级修改为 0
    方法二
    1
    2
    3
    stp   root   primary					// 指定设备为根桥,相当于把优先级改为 0

    stp root secondary // 指定设备为备份根桥,相当于把优先级改为 4096
  2. 修改接口开销
    1
    2
    interface  G0/0/X
    stp cost 100 // G0/0/X 接口默认开销为 20000,修改为 100
  3. 修改生成树类型
    1
    stp  mode  (stp、rstp、mstp)			// 默认为:MSTP  可以修改为其他类型
  4. 查看方式
    1
    2
    display  stp  					// 查看详细信息
    display stp brief // 查看摘要信息

STP 状态机

  1. discarding:不转发用户数据,不学习 MAC 地址(可以转发 BPDU) 是 AP 端口的最终状态

  2. learning:不转发用户数据,但是可以学习 MAC 地址,也可以转发 BPDU,是 DP 和 RP 的过渡状态

  3. forwarding:既可以转发用户数据,又可以学习 MAC 地址和转发 BPDU,是 DP 和 RP 的最终状态

    每个状态切换都需要等待一个 forward delay(15s)
    从 discarding 到 forwarding 需要 2 个 forward delay(30s)

    STP 的收敛速度非常慢,每次接口从 Down 到 Up 还需要等 30s 才能转发
    问题一:PC 设备接入后,DP 端口需要 30s 才能转发 PC 设备的流量

    问题二:当 RP 端口故障后,最优的 AP 会成为新的 RP 端口,但新 RP 端口到达转发状态需要 30s

    即:网络的变化或者端口抖动(频繁 up/down)都会使得交换网络等待 30s 才能恢复。这是用户无法接受的

    使用 RSTP 可以解决以上的问题

    1. EP 端口(边缘端口):
      用于连接终端设备(如:PC、服务器、IP 电话、打印机等)接口一旦 up 立刻进入 forwarding 状态
      无需等待 30s 的延迟

    2. AP 端口是 RP 的备份,AP 在 RSTP 中为预备端口,一旦 RP 故障。最优的 AP 会立刻切换至 RP 并且进入 forwarding 状态
      无需等待 30s 的延迟 (AP 在 RSTP 和 MSTP 中是 RP 的预备端口)

    • 端口快速切换到 forwarding 会产生哪些问题?
      如果端口接入就能转发有可能会产生环路问题,所以设置边缘端口时,为了保护交换设备,需要设置 BPDU 保护功能

配置命令:

  1. 配置端口为边缘端口
    1
    2
    3
    interface G0/0/X
    stp edged-port enable // 用于用户终端,接入就能访问网络,避免 30s 的等待延迟
    (如果边缘端口接入的是交换机,就会有环路的风险)
  2. 配置边缘端口保护
    1
    2
    stp bpdu-protection					// 开启后,只对边缘端口生效
    交换设备会发送 BPDU,一旦边缘端口收到 BPDU 就会主动关闭该接口(终端不会关闭)
  3. 设置自动恢复
    1
    error-down  auto-recovery  cause  bpdu-protection  interval  30		// 因为收到 BPDU 导致的端口 shutdown 可以在 30s 后自动恢复