以太网是一种基于 CSMA/CD(Carrier Sense Multiple Access/Collision Detect,载波侦听多路访问/冲突检测)的共享通讯介质的数据网络通讯技术,当主机数目较多时会导致冲突严重、广播泛滥、性能显著下降甚至使网络不可用等问题。通过交换机实现 LAN 互联虽然可以解决冲突(Collision)严重的问题,但仍然不能隔离广播报文。
在这种情况下出现了VLAN(Virtual Local Area Network,虚拟局域网)技术,这种技术可以把一个LAN划分成多个虚拟的LAN——VLAN,每个VLAN是一个广播域,VLAN内的主机间通信就和在一个LAN内一样,而VLAN间则不能直接互通,这样,广播报文被限制在一个VLAN内。
VLAN 的划分不受物理位置的限制:不在同一物理位置范围的主机可以属于同一个 VLAN;一个VLAN 包含的用户可以连接在同一个交换机上,也可以跨越交换机,甚至可以跨越路由器
VLAN 的优点如下:
• 限制广播域。广播域被限制在一个 VLAN 内,节省了带宽,提高了网络处理能力。
• 增强局域网的安全性。VLAN 间的二层报文是相互隔离的,即一个 VLAN 内的用户不能和其它VLAN 内的用户直接通信,如果不同 VLAN 要进行通信,则需通过路由器等三层设备。
• 灵活构建虚拟工作组。用 VLAN 可以划分不同的用户到不同的工作组,同一工作组的用户也不必局限于某一固定的物理范围,网络构建和维护更方便灵活
要使网络设备能够分辨不同 VLAN 的报文,需要在报文中添加标识 VLAN 的字段。
其中 DA 表示目的 MAC 地址,SA 表示源 MAC 地址,Type 表示报文所属协议类型。
IEEE 802.1Q 协议规定在目的 MAC 地址和源 MAC 地址之后封装 4 个字节的 VLAN Tag,用以标识VLAN 的相关信息。
如 图 1-3 所示,VLAN Tag包含四个字段,分别是TPID(Tag Protocol Identifier,标签协议标识符)、Priority、CFI(Canonical Format Indicator,标准格式指示位)和VLAN ID。
• TPID 用来判断本数据帧是否带有 VLAN Tag,长度为 16bit,缺省取值为 0x8100。
• Priority 表示报文的 802.1P 优先级,长度为 3bit。用于ACL和QOS
• CFI 字段标识 MAC 地址在不同的传输介质中是否以标准格式进行封装,长度为 1bit,取值为0 表示 MAC 地址以标准格式进行封装,为 1 表示以非标准格式封装,缺省取值为 0。
• VLAN ID 标识该报文所属 VLAN 的编号,长度为 12bit,取值范围为 0~4095。由于 0 和 4095为协议保留取值,所以 VLAN ID 的取值范围为 1~4094。
vlan {valn-id1 [to vlan-id2]} //创建指定vlan或批量创建vlan
vlan 100 //进入vlan视图
port g0/0/1 //添加端口
interface vlan 100 //进入vlan-if
ip address 192.168.0.1 24 //配置接口地址
mtu size
default //恢复VLAN接口的缺省配置
undo shutdown //vlan接口缺省为打开状态
不同 VLAN 间的主机不能直接通信,需要通过路由器等网络层设备进行转发,设备提供 VLAN 接口实现对报文进行三层转发的功能。VLAN 接口是一种三层模式下的虚拟接口,主要用于实现 VLAN 间的三层互通,它不作为物理实体存在于设备上。每个 VLAN 对应一个 VLAN 接口,在为 VLAN 接口配置了 IP 地址后,该接口即可作为本 VLAN 内网络设备的网关,对需要跨网段的报文进行基于 IP 地址的三层转发.
基于端口划分 VLAN 是 VLAN 最简单、最有效的划分方法。它按照设备端口来定义 VLAN 成员,将指定端口加入到指定 VLAN 中之后,端口就可以转发指定 VLAN 的报文。
(1) 端口的链路类型
根据端口在转发报文时对 Tag 标签的不同处理方式,可将端口的链路类型分为三种:
• Access连接:端口发出去的报文不带tag标签。一般用于和不能识别VLAN tag的终端设备相连,或者不需要区分不同VLAN成员时使用。
• Trunk连接:端口发出去的报文,端口缺省VLAN内的报文不带tag,其它VLAN内的报文都必须带tag。通常用于网络传输设备之间的互连。
• Hybrid连接:端口发出去的报文可根据需要设置某些VLAN内的报文带tag,某些VLAN内的报文不带tag。通常用于相连的设备是否支持VLAN tag不确定的情况。
(2) 缺省VLAN
除了可以设置端口允许通过的 VLAN,还可以设置端口的缺省 VLAN。在缺省情况下,所有端口的缺省 VLAN 均为 VLAN1,但用户可以根据需要进行配置.
ACESS端口(二层端口、二层聚合口、二层虚拟以太网接口)配置:
int g0/0/0
port link-type access //缺省为access类型
port access vlan 100
TRUNK端口:
int g0/0/0
port link-type trunk
port trunk permit vlan 10|all
port trunk pvid vlan 10 //配置缺省VLAN,可选,一般不配置
HYBRID端口:
int g0/0/0
port link-type hybrid
port hybrid vlan 10 tagged //配置允许vlan 10的报文以tagged方式进行接受和发送
port hybrid vlan 20 untagged //配置允许vlan 20的报文以tagged方式接受,以untagged的方式进行发送。
port hybrid pvid vlan 20 //配置缺省VLAN,可选,一般不配置
基于 MAC 划分 VLAN 是 VLAN 的另一种划分方法。它按照报文的源 MAC 地址来定义 VLAN 成员,将指定报文加入该 VLAN 的 Tag 后发送。该功能通常会和安全(比如 802.1X)技术联合使用,以实现终端的安全、灵活接入。
只有设备的系统工作模式为 SPC 时才支持基于 MAC 的 VLAN 功能。
• 基于 MAC 的 VLAN 功能只能在 Hybrid 端口配置。
• 基于 MAC 的 VLAN 功能主要用于在用户的接入设备的下行端口上进行配置,因此不和聚合功能同时使用。
手工配置静态MAC VLAN
mac-vlan mac-address 701C-E749-1605 vlan 10 [priority priority] //配置MAC-VLAN
int g0/0/1
port link-type hybrid
port hybrid vlan 10 untagged
mac-vlan enable //使能MAC VLAN功能
动态MAC-VLAN只是多了配置认证功能的步骤
system-view
vlan 10
ip-subnet-vlan [ip-subnet-index] ip ip-address [mask] //配置 VLAN与制定的IP子网或IP地址关联
int g0/0/0
port link-type hybrid
port hybrid vlan vlan-id-list {tagged|untagged}
port hybrid ip-subnet-vlan vlan vlan-id
Super VLAN 可以对 VLAN 进行聚合,从而大幅缩减实际需要的 VLAN 接口数量,解决 IP 地址紧张的问题。其原理是一个 Super VLAN 和多个 Sub VLAN 关联,关联的 Sub VLAN 公用 Super VLAN对应的 VLAN 接口(即 Super VLAN interface)的 IP 地址作为三层通信的网关地址,此时 Sub VLAN间的三层通信以及 Sub VLAN 与外部的三层通信均借用 Super VLAN interface 来实现,从而节省了IP 地址资源
Super VLAN 配置包括三个必选步骤:
(1) 创建 Sub VLAN。
(2) 创建 Super VLAN,并将 Super VLAN 和 Sub VLAN 关联起来。
(3) 配置 Super VLAN interface
vlan 100
supervlan //配置该vlan为Super VLAN
subvlan 10 20 //配置subvlan
intterface vlan 100
ip address 192.168.1.254 24 //配置地址
local-proxy-arp enable //开启本地ARP代理(IPv4),实现subvlan三层互通
随着语音技术的日益发展,语音设备应用越来越广泛,尤其在宽带小区,网络中经常同时存在语音数据和业务数据两种流量。通常,语音数据在传输时需要具有比业务数据更高的优先级,以减少传输过程中可能产生的时延和丢包现象。
Voice VLAN 是为用户的语音数据流而专门划分的 VLAN。通过划分 Voice VLAN 并将连接语音设备的端口加入 Voice VLAN,系统自动为语音报文修改 QoS(Quality of Service,服务质量)参数,来提高语音数据报文优先级、保证通话质量。
当 IP 电话接入设备时,需要设备完成以下两个任务:
(1) 识别 IP 电话,获取 IP 电话的 MAC,从而进行安全认证及提高语音报文的优先级;
(2) 将 Voice VLAN 信息通告给 IP 电话,IP 电话能够根据收到的 Voice VLAN 信息完成自动配置,使 IP 电话发出的语音报文在 Voice VLAN 内传输。
设备可以根据进入端口的数据报文中的源 MAC 地址字段来判断该数据流是否为语音数据流。源MAC 地址符合系统设置的语音设备 OUI(Organizationally Unique Identifier,全球统一标识符)地址的报文被认为是语音数据流。
用户可以预先设置OUI地址,也可以使用缺省的OUI地址作为判断标准。
传统的 Voice VLAN 是通过手工配置的 OUI 地址作为 IP 电话的匹配规则和接入条件,由于可配置的 OUI 地址数量有限,这种方式限制了可接入网络的 IP 电话的类型(将源 MAC 匹配同一 OUI 地址的 IP 电话视为一个类型)。在设备上配置了通过 LLDP 自动发现 IP 电话功能后,设备将通过 LLDP 自动发现对端设备,并与对端设备通过 LLDP 的 TLV 进行信息交互。如果通过端口收到的 LLDP System Capabilities TLV 中的信息发现对端设备具有电话能力,则认为对端设备是 IP 电话并将设备上配置的 Voice VLAN 信息通过 LLDP 发送给对端设备。这种方式使接入网络的 IP 电话类型不再受限于 OUI 地址的数量。在完成 IP 电话的发现过程后,端口将继续完成 Voice VLAN 的其余功能,即端口将自动加入 Voice VLAN,并提高从该 IP 电话发出的语音数据的优先级。为防止 IP 电话无法通过端口上配置的认证功能,设备还会将 IP 电话的 MAC 地址添加到 MAC 地址表中。
dis vlan 10
dis int vlan 10
dis port trunk | {begin|exlude|include regular-expression}
dis mac-vlan all
dis mac-vlan interface | {begin|exlude|include regular-expression}
MAC 地址表记录了与本设备相连的设备的 MAC 地址、本设备上与该设备相连的设备的接口号以及所属的 VLAN ID。在转发数据时,设备根据报文中的目的 MAC 地址查询 MAC 地址表,快速定位出接口,从而减少广播。
MAC 地址表项的生成方式有两种:自动生成、手工配置。
MAC 地址表项分为:静态 MAC 地址表项、动态 MAC 地址表项、黑洞 MAC 地址表项。
• 静态 MAC 地址表项由用户手工配置,表项不老化;
•黑洞 MAC 地址表项用于丢弃含有特定 MAC 地址的报文(例如,出于安全考虑,可以屏蔽某个用户接收报文),由用户手工配置,表项不老化;
• 动态 MAC 地址表项包括用户配置的以及设备通过源 MAC 地址学习得来的,表项有老化时间。
设备在转发报文时,根据 MAC 地址表项信息,会采取以下两种转发方式:
• 单播方式:当 MAC 地址表中包含与报文目的 MAC 地址对应的表项时,设备直接将报文从该表项中的转发出接口发送。
• 广播方式:当设备收到目的地址为全 1 的报文,或 MAC 地址表中没有包含对应报文目的MAC 地址的表项时,设备将采取广播方式将报文向除接收接口外的所有接口进行转发。
mac-address {dynamic|static} 701C-E749-1605 int g0/0/0 vlan 10 //全局视图下配置动态/静态MAC地址 表项
mac-address backhole mac-address vlan 10 //配置黑洞MAC地址表项
mac-address timer {aging seconds | no-aging} //配置动态表项老化时间,缺省300秒。
int g0/0/2
mac-address {dynamic|static} 701C-E749-1605 vlan10 //端口视图下配置
有时为了保证设备的安全,需要关闭 MAC 地址学习功能。常见的危及设备安全的情况是:黑客使用大量源 MAC 地址不同的报文攻击设备,导致设备 MAC 地址表资源耗尽,造成设备无法根据网络的变化更新 MAC 地址表。关闭 MAC 地址学习功能可以有效防止这种攻击。
int g0/0/0 //关闭指定端口的MAC地址学习功能
mac-address mac-learing disable
vlan 10
mac-address mac-learing disable //关闭指定vlan的MAC地址学习功能
display mac-address [ mac-address [ vlan vlan-id ] | [ [ dynamic | static ] [ interface interface-type interface-number ] | blackhole ] [ vlan vlan-id ] [ count ] ] [ | { begin | exclude | include }
regular-expression ] //显示MAC地址表信息
dis mac-address vlan 10
dis mac-address aging-time
dis mac-address mac-learning