1.1 交换网络介绍


常见的以太网设备包括Hub、交换机等。交换机工作在数据链路层,它有效地隔离了以太网中的冲突域,极大地提升了以太网性能。

image.png
随着企业网络的发展,越来越多的用户需要接入到网络,交换机提供了大量的接入端口能够很好地满足这种需求,同时,交换机也彻底解决了困扰早期以太网的冲突问题,极大地提升了以太网的性能,同时也提高了以太网的安全性。
交换机工作在数据链路层,对数据帧进行操作。在收到数据帧后,交换机会根据数据帧的头部信息对数据帧进行转发。

MAC地址漂移
image.png
image.png

  • 可以基于VLAN进行检测
  • 可以基于全局进行检测

image.png

1.2 交换机的转发行为

image.png
交换机中有一个MAC地址表,里面存放了MAC地址与交换机端口的映射关系。MAC地址表也称为CAM表。
如图所示:交换机对帧的转发操作行为一共有三种:泛洪(Flooding)、转发(Forwarding)、丢弃(Discarding)

  1. 泛洪:交换机把从某一端口进来的帧通过所有其它的端口转发出去(除这个帧进入到交换机的那个端口)
  2. 转发:交换机把从某一端口进来的帧通过另一个端口转发出去(另一个端口不能是帧进入交换机的那个端口)
  3. 丢弃:交换机把从某一端口进来的帧直接丢弃

交换机的基本工作原理可以概括地描述如下:

  1. 如果进入交换机的是一个单播帧,则交换机会去MAC地址表中查找这个帧的目的MAC地址。
    1. 如果查不到这个MAC地址,则交换机执行泛洪操作。
    2. 如果查到了这个MAC地址,则比较这个MAC地址在MAC地址表中对应的端口是不是这个帧进入交换机的那个端口。如果不是,则交换机执行转发操作。如果是,则交换机执行丢弃操作。
  2. 如果进入交换机的是一个广播帧,则交换机不会去查MAC地址表,而是直接执行泛洪操作。

另外,交换机还具有学习能力。当一个帧进入交换机后,交换机会检查这个帧的源MAC地址,并将该源MAC地址与这个帧进入交换机的那个端口进行映射,然后将这个映射关系存放进MAC地址表。

1.2.1 丢弃的情况

image.png

  • 当一个包从接口收到又要从该接口发出时会产生丢弃

PC1访问PC2
image.png

SW1的接口收包与发包情况:发现接口处收到了单播帧,但是出接口并没有任何数据,说明产生了丢包
image.png
SW2的接口有正常的数据包转发
image.png

1.3 交换机初始状态

image.png
初始状态下,交换机并不知道所连接主机的MAC地址,所以MAC地址表为空。本例中,SWA为初始状态,在收到主机A发送的数据帧之前,MAC地址表中没有任何表项。

1.4 MAC地址表

1.4.1 MAC地址表简介

image.png
主机A发送数据给主机C,一般会首先发送ARP请求来获取主机C的MAC地址,此ARP请求帧中的MAC地址是广播地址,源MAC地址是自己的MAC地址。SWA收到该帧后,会将源MAC地址和接收端口的映射关系添加到MAC地址表中。缺省情况下,交换机学习到的MAC地址表项的老化时间为300秒。如果在老化时间内再次收到主机A发送的数据帧,SWA中保存的主机A的MAC地址和G0/0/1的映射的老化时间会被刷新。此后,如果交换机收到目标MAC地址为00-01-02-03-04-AA的数据帧时,都将通过G0/0/1端口转发。

1.4.2 MAC地址表的组成

  • 动态表项
    • 由接口通过报文中的源MAC地址学习获得,表项可老化,默认时间300秒。
    • 在系统复位、接口板热插拔或接口板复位后,动态表项会丢失。
  • 静态表项
    • 由用户手工配置,并下发到各接口板,表项不可老化。
    • 在系统复位、接口板热插拔或接口板复位后,保存的表项不会丢失。
  • 黑洞表项
    • 由用户手工配置,并下发到各接口板,表项不可老化。
    • 配置黑洞MAC地址后,源MAC地址或目的MAC地址是该MAC的报文将会被丢弃。

image.png

配置静态MAC表项

  1. [Huawei]mac-address static 0011-2233-4455 GigabitEthernet 0/0/2 vlan 1

配置黑洞MAC表项

  1. [Huawei]mac-address blackhole 00aa-bbcc-ddee

配置动态MAC老化时间

  1. [Huawei]mac-address aging-time 400

查看MAC地址表项:

  1. [Huawei]display mac-address

1.4.3 收到不同MAC帧的处理

MAC地址有3类:

  1. 单播MAC帧
  2. 组播MAC帧
  3. 广播MAC帧
  • 收到目的MAC为单播帧时,交换机首先查看MAC地址表中是否存在该MAC对应的表项,如果没有则是未知单播帧,则执行泛洪处理。
  • 收到目的MAC为组播帧时,进行泛洪处理(当配置了IGMP Snooping后不进行泛洪)。
  • 收到目的MAC为广播帧时,进行泛洪处理(目的MAC全1)。

当第8bit是单数时是组播MAC,是双数时是单播MAC
01-00-00-02-03-04 —— 第一组为00000001(第8位为1时是组播地址,而后续前面bit置1加上末尾这个1使得无论怎样都会是奇数,所以只要前第一个字节是奇数则可以判断该MAC为组播MAC地址,而偶数的则为单播地址,因为没有末尾那个1,前面的比特都是偶数,所以怎么加都不会是偶数。)

1.4.4 以太网MAC地址

image.png
MAC地址总共为48bit,前24bit为各个厂商的唯一标识(由IEEE分配),后24bit为每个厂商为此网卡提供的唯一的身份标识。

例如:E8-4E-56-19-01-72

1.4.5 端口安全

image.png

  • 安全动态MAC地址
    • 会被老化
    • 重启后会丢失
    • 只能动态学习到
  • Sticky MAC地址
    • 不会被老化
    • 重启后不会丢失
    • 可以手工配置也可以动态学习到

image.png

  • 端口安全执行动作有三种
    • restrict:限制功能,丢弃报 文,会发送日志信息。
    • protect:保护功能,丢弃报文,不上报日志信息。
    • error-down:关闭功能,使端口处于关闭状态,并且会上报日志信息。

1.5 交换机工作机制

image.png

  1. PC1访问PC2,首先PC1自己与目的IP进行与运算,发现在同一网段,则直接发送二层帧,但是发现自己的ARP表中没有PC2的MAC,所以需要进行ARP来获取PC2的MAC地址,用来封装二层数据帧。
  2. SW1收到广播ARP帧时记录PC1的源MAC,将源MAC、接口、VLAN绑定为一个MAC地址表项。
  3. SW1收到广播帧进行一个泛洪操作。
  4. PC2收到广播的ARP包,解封装发现找的是自己,则进行ARP应答。
  5. SW1收到PC2的应答报文,记录从G0/0/2接口收到的PC2的源MAC。
  6. SW1发现目的MAC是PC1的MAC,则直接进行转发操作,将数据帧发送到G0/0/1接口。
  7. PC1发送后续的ICMP包,SW1收到后根据目的MAC直接进行转发操作。
  • 接口收到组播/广播、未知单播帧怎么处理?
  1. 首先针对数据帧源MAC进行一个学习/刷新。
  2. 组播/广播帧进行泛洪处理。
  3. 已知单播帧根据MAC地址表进行转发。
  4. 未知单播帧进行泛洪处理。

1.6 以太网帧结构

C9DAD69B37634207A5C5AAA97159C541.jpg

  • 目的MAC地址的第一个字节的最后一位,如果是0的话说明这是一个单播地址
  • 如果这一位为1,其它位不同,则表明这是一个组播地址
  • 如果MAC全为1,这说明这是一个广播地址

F4F41386E9D74D08BCC31C82BBBD7DA3.jpg
A4F654BE3D7149C087E2842B6C0890F5.jpg

二层数据帧封装

  • 数据帧封装分为两种帧格式封装,一种为Ethernet II定义格式,一种为IEEE802.3定义格式

注:如何区分数据包使用哪种格式

  • 当数据包的长度大于或等于1536Byte时为Ethernet II协议封装
  • 当数据包的长度小于或等于1500Byte时为IEEE802.3协议封装

BF4662E9409F49E88A0B17A50CE89716.jpg

1.5.1 Ethernet II帧格式

Ethernet ii帧格式.png

  • 6Byte的目的MAC地址
  • 6Byte的源MAC地址
  • 2Byte的Type类型(0x0800为IP、0x0806为ARP、0x8847为MPLS)
  • 46Byte-1500Byte的Data
  • 48Byte的FCS校验

**

  • 在Ethernet_II封装数据帧中:
    • 数据帧最小为64Byte:
      • 46Byte的数据单元+2Byte的Type+6Byte的D_MAC+6Byte的S_MAC+4Byte的FCS校验位
    • 数据帧最大为1518Byte:
      • 1500Byte的数据单元+2Byte的Type+6Byte的D_MAC+6Byte的S_MAC+4Byte的FCS校验位

1.5.2 IEEE802.3帧格式

image.png

  • 6Byte的目标MAC地址
  • 6Byte的源MAC地址
  • 2Byte的Length长度表示符
  • 3Byte的LLC链路控制子层:
    • 1Byte的D.SAP
    • 1Byte的S.SAP
  • 5Byte的S.NASP
    • 3Byte的Org Code
    • 2Byte的Type
  • 38Byte—1492Byte的Data数据
  • 4Byte的FCS校验位

IEEE802.3帧长度值小于等于1500

1.png

如果A主机发送的帧很小,很快完成帧的转发,而两台冲突主机相距很远,在主机A发送的帧传输到B的前一刻,B开始发送帧,这样,当A的帧到达B时,B检测到冲突,于是发送冲突信号,假如在B的冲突信号传输到A之前,A的帧已经发送完毕,那么A将检测不到冲突而误认为已经发送成功,因此必须有最小包长的限制。

1.7 基本参数配置

image.png
早期的以太网的工作模式都是10M半双工的。随着技术的发展,出现了全双工模式,接着又出现了百兆和千兆以太网。采用不同工作模式的设备无法直接相互通信,自协商技术的出现解决了不同以太网工作模式之间的兼容性问题。自协商的内容主要包括双工模式和运行效率。一旦协商通过,链路两端的设备就具有相同的工作模式
negotiation auto命令用来设置以太网端口的自协商功能。端口是否应该使能自协商模式,要考虑对接双方设备的端口是否都支持自动协商。
如果对端设备的以太网端口不支持自协商模式,则需要在本端端口上先使用undo negotiation auto命令配置为非自协商模式。之后,修改本端端口的速率和双工模式保持与对端一致,确保通信正常。
duplex命令用来设置以太网端口的双工模式。GE电口工作速率为1000Mbit/s时,只支持全双工模式,不需要与链路对端的端口共同协商双工模式。
speed命令用来设置端口的工作速率。配置端口的速率和双工模式之前需要先配置端口为非自协商模式