概述

计算机网络是分层的,我们通常所说的以太网是数据链路层的网络,这是因为以太是数据链路层面上的一种协议,其所对应的设备就是二层交换机,接下来看一下二层交换机的通信原理

以太网二层交换机通信原理

二层交换机在接收到主机发送的报文的时候会学习报文中的源mac地址,并在交换机上面的mac地址表中查找对应的目的mac地址所对应的端口,如果找不到就直接广播该报文。这其中包含了两个对象:主机、交换机。

  • 主机:会缓存arp表项(ip和mac地址的对应关系),可以使用arp -a来查看,通常情况下arp表项是动态的。
  • 二层交换机:会缓存mac地址信息和端口的对应情况,不过其中不会包含对应的arp表项,因为arp表项是ip和mac地址的对应关系,很明显交换机并不具备ip信息。

上面我们知道主机会缓存ip对应的mac信息,不过这些信息并不是从一开始就存在的,而是动态生成的,并且具有老化时间。arp表项的生成依赖于arp协议,这是从主机发送的广播报文(对应的目的mac为全f)。

上面的这种方式存在以下两种问题:

  • 当同一个子网内包含了较多的主机的时候,将会形成广播风暴
  • 没有对单播的数据报文进行访问控制

上述问题的解决依赖于以太网的vlan技术

以太网vlan技术

以太网的vlan技术是通过配置交换机的端口实现了同一个子网的不同组的划分,这样可以保证数据的交换只会发生在特定的区间内(并不一定是同组,跟端口类型有关系),从而减少了广播风暴,并且实现了单播报文的控制。

实现原理

以太网的vlan是通过在目的mac和源mac地址后面增加一定的字节用来标识该报文所属的vlan,交换机的端口将会处理和其相关的报文。这里有两个主体:报文、交换机端口,我们将会从交换机的端口出发,来深入了解一下端口对于报文的处理的逻辑:

  • access口:

    • 接收报文处理规则:接收无tag的报文,此时会加上端口的pvid,接收的数据包含tag的时候只允许tag和pvid相等的情况
    • 发送报文处理规则:只能够发送包含的tag和该接口对应的pvid相同的数据帧
    • 配置端口命令:
      • 默认进入用户管理界面
      • 使用 system-view 进入系统视图
      • 创建全局的vlan,vlan batch 3 to 4,其中如果vlan不连续可以直接使用空格来表征(也可以vlan 4创建一个vlan)
      • 配置端口vlan,需要先进入对应的端口,指定其对应的接口类型和pvid:
        • interface Gb 0/0/1 (指定端口)
        • port link-type access(指定端口类型)
        • port default vlan 3(配置端口pvid)
        • diaplay this 可以查看配置是否生效,最后可以quit退出
    • 使用场景:通常使用在交换机和终端的链接的地方
  • trunk口:

    • 接收报文处理规则:接收无tag的报文,此时会加上端口对应的pvid,接收的数据帧中包含的tag需要在该接口的vlan-list(起到了pvid的作用,不过范围更广了)中才接收,这一点和a口类似,只不过a口允许的是pvid,这里允许的是一个list

    • 发送报文处理规则:判断数据帧的tag是否在vlan-list中,如果在才处理,并且和pvid相等,则去掉tag并转发,如果和pvid不同则透传,这个是增强的A口的功能(A口不具备透传非pvid的情况)

    • 配置端口命令:

      • 默认进入用户管理界面
      • 使用 system-view 进入系统视图
      • 配置端口vlan,需要先进入对应的端口,指定其对应的接口类型和pvid:
        • 进入端口:interface Eth-trunk 1
        • 配置端口类型: port link-type trunk
        • 配置vlan-list:port trunk allow-pass vlan 4(允许pvid为4的数据通过)

      值得注意的是这里并没有配置trunk的pvid,而是使用了系统默认的pvid,其实是可以的

    • 使用场景:通常用在交换机之间的数据交换,当vlan-list和pvid一致的时候trunk实现的就是access接口

  • hybrid口:

    • 接收报文处理规则:如果数据报文是untag的报文就直接加上pvid,否则判断vlan-list中是否包含了该tag,是则接受,否则丢弃,可以看到这和trunk端口类似。
    • 发送报文处理规则:接口发送报文的时候判断数据报文是否在vlan-list中,是才处理,否则不处理,对于是的情况如果数据帧中对应的vlanid在untag vlan-list中则剥去标签并转发,否则直接透传,可以看到这里增强了Trunk口的剥去pvid的规则
    • 配置端口命令:
      • 默认进入用户管理界面
      • 使用 system-view 进入系统视图
      • 配置端口vlan,需要先进入对应的端口,指定其对应的接口类型和pvid:
        • interface xxx 进入接口
        • undo port default vlan(解除vlan其他类型的限制,初始化可以不用作)
        • port link-type hybrid,指定端口类型
        • port hybrid pvid vlan 3,指定端口的pvid
        • port hybrid untagged vlan 3 to 5,指定端口能处理的untag vlan-list
    • 使用场景:一般是在A口和trunk都不满足的情况下使用,更一般的是用来实现不同vlan之间的通信(通过vlan的untag vlan-list实现,毕竟是要去不同vlan对应的标签的),而且通常应该是在主机侧,并不在交换机之间

以太网端口聚集技术

以太网端口聚集技术用来实现端口的负载均衡、并可以实现链路的备份。

具体做法

  • 默认进入用户管理界面
  • 使用 system-view 进入系统视图
  • sysname xxx 重命名设备
  • interface Eth-Trunk 1,创建eth-trunk端口
  • trunkport GigabitEthernet 0/0/9将指定接口添加到对应的eth-trunk中
  • interface Eth-Trunk 1 进入eth-trunk端口
  • port link-type trunk,配置ethtrunk类型并指定其vlan-list:port trunk allow-pass vlan 4或者port trunk allow-pass vlan 3 5添加也可以

以太网堆叠技术

TODO 省略

其他命令

display mac-address display this save