实现机制
VCMP通过在各角色设备间交互VCMP报文实现VLAN的集中管理,VCMP报文只能在Trunk或Hybrid类型接口的VLAN 1上传输。VCMP为确保在各种场景下Server与Client的VLAN信息保持一致,VCMP协议定义了Summary-Advert、Subset-Advert和Advert-Request三种组播方式的报文。三种报文的作用及触发场景如表13-2所示。
报文类型 |
作用 |
触发场景 |
触发报文的角色 |
---|---|---|---|
Summary-Advert |
Server通过该报文向VCMP管理域内的其他设备通告域名、设备ID、配置修订号以及VLAN信息。 |
|
Server |
Subset-Advert |
Server通过该报文向VCMP管理域内的其他设备通告非默认配置的VLAN名称或VLAN描述。 |
Server上存在非默认配置的VLAN名称或VLAN描述,且满足以下任一条件:
Server发送Subset-Advert报文,以确保Server与Client上的VLAN信息实时同步,防止因传输丢包等原因导致的同步遗漏。 |
Server |
Advert-Request |
Client通过该报文主动请求同步VLAN信息,以便及时同步,避免不必要的等待。 |
|
Client |
其中,由Server发送的Summary-Advert和Subset-Advert报文会携带配置修订号。配置修订号用来确定Server发送的VLAN信息是否比当前的更新,Client使用它来判断是否需要同步Server的VLAN信息。它以8位十六进制数体现,高四位用来标识VCMP管理域或设备ID的变更,低四位用来标识VLAN的变更。只要Server有VLAN变更,配置修订号就会自动递增。而当VCMP管理域名或设备ID变更时,配置修订号的高四位会重新计算,低四位会清零。
Server上配置变更的VLAN同步机制
当Server上的配置变更(包括创建、删除VLAN,修改VLAN的名称、描述,VCMP管理域名、设备ID修改,以及Server重启等情况)时,Server会发送携带变更信息的Summary-Advert和Subset-Advert报文,以通告VCMP管理域内的Client进行同步。
下面以在Server上创建VLAN 100为例,介绍Server上配置变更的同步原理。假设Server上的VLAN的名称、描述均为缺省情况,即无需发送Subset-Advert报文。
如图13-2所示,SwitchA设置为Server,SwitchB设置为Transparent,SwitchC、SwitchD和SwitchE设置为Client,SwitchF设置为Silent。
- Server发送携带变更VLAN的Summary-Advert报文,以向邻居通告这个配置变更。
- Transparent收到Summary-Advert报文后,直接转发这个VCMP报文。
- Client收到Summary-Advert报文后:
- 如果Client上第一次收到该报文,则学习报文中携带的设备ID、配置修订号、VLAN信息。若本地Client的VCMP管理域名为空,则也会学习报文中携带的VCMP管理域名。
- 如果Client上不是第一次收到该报文,则进行如下处理:
- 根据Client上配置的认证密码以及报文携带的VCMP管理域名、设备ID、配置修订号等字段对报文进行VCMP认证。认证通过才会进行下一步。
- 将本地保存的VCMP管理域名、设备ID,分别与报文携带的进行比较。两者均相同才会进入下一步。
比较本地配置修订号与报文携带的配置修订号:
- 如果高四位不等,则Client根据Summary-Advert报文同步Server上的VLAN信息,并学习VCMP管理域名和设备ID。
- 如果高四位相等但本地配置修订号的低4位小于等于Summary-Advert报文中的配置修订号的低4位,则Client仅同步Server上的VLAN信息。
- 将Summary-Advert报文转发给VCMP管理域的其他设备。
本例中,Client不是第一次收到Summary-Advert报文,并且Client发现本地与Summary-Advert报文中的配置修订号的高4位相等,但本地配置修订号的低4位小于等于Summary-Advert报文中的配置修订号的低4位,于是根据Summary-Advert报文同步Server上的VLAN信息,在本地创建VLAN 100。
- Silent收到Summary-Advert报文,则直接丢弃该报文。
- 其他触发Summary-Advert报文的场景中,VLAN同步过程与此相同。
- 如果Server上存在非缺省配置的VLAN名称、描述,Server还会发送Subset-Advert报文。
- Client从Server同步VLAN信息后30分钟内,会自动生成一个名为vlan.dat的文件用于存储当前的VLAN信息,设备重启时会读取该文件获取重启前VLAN的信息。该文件不可以做修改、删除、覆盖等任何处理。只有在下面几种情况下,才会自动删除该文件:
- 通过命令reset vcmp清除VCMP的管理域信息。
- 通过命令vcmp role { server | silent | transparent } 修改设备的VCMP角色为非Client。
- 通过命令startup saved-configuration configuration-file配置新的配置文件,并且新配置文件的名称和当前配置文件的名称不一样。
- 执行reset saved-configuration命令,清除已经保存的配置文件。注意该操作会清除所有的配置信息。
新增Client的VLAN同步机制
为确保Server与Client上的VLAN信息的同步,Server每5分钟发送一次Summary-Advert报文,向全域通告VCMP管理域名、设备ID和配置修订号,Server还会发送Subset-Advert报文来通告发生变更的VLAN名称和VLAN描述。当新插入一台Client或Client重启时,为了及时获取Server上的VLAN配置信息,新Client和重启的Client会发送Advert-Request组播报文,请求Server的VLAN配置信息。下面介绍这种场景下的VLAN同步原理。假设Server上的VLAN的名称、描述均为缺省情况,即无需发送Subset-Advert报文。
如图13-3所示,SwitchA设置为Server,SwitchB设置为Transparent,SwitchC和SwitchE设置为Silent,SwitchD设置为Client,SwitchF为新插入的一台设备,作为Client。
新Client向邻居发送Advert-Request报文,请求Server的VLAN配置。
Client收到新Client的Advert-Request报文后,向邻居转发该报文。
Transparent收到Advert-Request报文,继续向邻居转发该报文。
- 如果:
Server收到Advert-Request报文:
- 根据Server上配置的认证密码以及报文携带的VCMP管理域名、设备ID、配置修订号等字段对报文进行VCMP认证。认证通过才会进行下一步。
- 如果该Advert-Request报文中的管理域名或设备ID非空,但与Server上配置的管理域名或设备ID不相等,则丢弃该Advert-Request报文;否则,回复携带Server上VLAN信息的Summary-Advert报文。
- Silent收到Advert-Request报文,则直接丢弃该报文。
- Client、Transparent、Silent、新Client收到Server回复的Summary-Advert报文后,如Server上配置变更的VLAN同步机制所述处理该报文。只不过本场景中,Client发现VCMP管理域名、设备ID和配置修订号跟Summary-Advert报文携带的相等,直接转发该报文;而新Client则会同步Server的VLAN信息,如果新Client没有配置VCMP管理域,还会学习Server的VCMP管理域名和设备ID。
Client重启或接口Up,也会触发Advert-Request报文,其VLAN同步过程与此类似。
如果Server上存在非缺省配置的VLAN名称、描述,Server还会发送Subset-Advert报文。
多Server告警机制
VCMP管理域内只能有一台Server。为防止用户假冒Server攻击网络,Server在收到Summary-Advert报文后,会将报文中的VCMP管理域名、设备ID、源MAC地址与本地的进行匹配。如果VCMP管理域名和设备ID匹配,但报文中的源MAC地址与本地的系统MAC地址不同,则会向网管发送“多Server”事件告警。
为了防止告警太多影响Server性能,VCMP抑制告警的发送次数,仅每30分钟向网管发送一次告警。
VCMP认证机制
未知交换机加入VCMP管理域,可能会将其设备上的VLAN信息同步到域内,进而影响域内网络的稳定。为防止未知交换机加入,使VCMP管理域更安全,可以为域中的Server和Client配置域认证密码。
如果Server或Client配置了域认证密码,则用该密码字符串(默认使用空字符串)作为Key值,对报文中的VCMP管理域名、设备ID等字段进行SHA-256摘要计算,并把得到的摘要信息随Summary-Advert报文、Subset-Advert报文或Advert-Request报文发送。域内每台Client在收到的Server的Summary-Advert或Subset-Advert报文时,则用本地配置的认证密码对报文中的VCMP管理域名、设备ID和配置修订号等字段进行SHA-256摘要计算,并把得到的摘要信息与报文中携带的摘要信息进行比较。如果匹配,则认证通过,进行后续VCMP处理;否则,丢弃该Summary-Advert或Subset-Advert报文。Server收到Client的Advert-Request报文时进行同样的认证处理。
如果未配置域密码,则直接认证通过。
- 同一VCMP管理域中的Server和每台Client上配置的域密码必须相同。
- 为充分保证设备安全,请用户定期修改密码。