VLAN Access/Trunk/Hybrid 备忘录

VLAN Access/Trunk/Hybrid 备忘录

种种原因太久不搞了,突然想起来记一下,怕真的忘了

vlan

交换机模式

  1. access

    当前端口下只能绑定一个 VLAN,一般用于直连计算机

    RX:

    1. 没有VLAN

      打上绑定的PVID,并接受数据

    2. 有VLAN

      如果 VLANID 匹配该端口绑定的 PVID 则接受数据。
      如果不匹配,丢弃。

    TX:

    如果 VLANID == PVID 则删除 VLAN 信息并从该口发送。

    如果 VLANID != PVID 则丢弃。

  2. trunk

    当前端口允许多个 VLAN 通过,可收发多个 VLAN 的数据,一般用于交换机互联。

    RX:

    1. 没有 VLAN 信息

      打上 PVID,然后检查该 PVID 是否在允许通行的列表中。

      如果存在,则接受;否则丢弃。

    2. 有 VLAN

      如果 VLANID 在允许通行的列表内,则接受数据。否则丢弃。

    TX:

    if (is_allow(vlan.id)) {
        if (vlan.id == pvid) {
            pkt = removeTag(pkt)
        }
        send(pkt)
    } else {
        drop(pkt)
    }
    
  3. hybrid

    类似 trunk,

    话说还没真的试过敲指令手动配置成这个样子。。。

    有空模拟台 h3c 试试

    RX:

    if (vlan == null) {
        pkt = addPVID(pkt)
        recv(pkt)
    } else if (!in_tag_list(vlan.id)) {
        drop(pkt)
    } else {
        recv(pkt)
    }
    

    TX:

    if (in_untag_list(vlan.id)) {
        pkt = removeTag(pkt)
        send(pkt)
    } else if (in_tag_list(vlan.id)) {
        send(pkt)
    } else {
        drop(pkt)
    }