如何建模候选配置产生的状态?NETCONF系统建模疑问
NETCONF系统建模场景的惯用解决方案探讨
系统分层结构
该系统分为两层:
- 下层:接收带标签的网络接口,根据接口标签处理流量;
- 上层:配置一组接口标签规则,通过SNMP定期发现接口、应用标签规则并更新下层配置。
已明确的建模逻辑
上层用户需要获取当前接口列表、接口标签及每个接口的打标时间。其中打标时间属于状态数据,接口列表和标签也归为动态数据存储范畴。这部分不适合用“预期”数据存储(如running),因为接口标签并非模板扩展的产物。
核心待解决问题
用户希望在将新的拟议标签规则应用到下层、产生实际影响前,先评估规则的执行结果。拟议规则可以放入候选(candidate)数据存储,但候选配置生成的标签结果应该存放在哪里?
现有不理想的解决方案
方案1:将活跃与拟议规则并入running存储
把活跃配置和拟议配置都放在running数据存储中,通过标识字段选择当前活跃规则。这种方式违背了设置candidate数据存储的初衷。
配置结构示例:
<running> labeling-rules "rule set 1": "mark interface X with 1" "mark interface Y with 2" "rule set 2": "mark interface Y with 1" "mark interface X with 2" active-labeling-rules = rule set 1 <operational> labeling rules ... active labeling rules = "rule set 1" (state) interfaces "interface X" "interface Y" (state) interface labeling per "rule set 1" "interface X has label 1 (labeled at 12:45)" "interface Y has label 2 (labeled at 11:07)" per "rule set 2" "interface X has label 2 (labeled at 09:00)" "interface Y has label 3 (labeled at 09:00)"
方案2:将两层建模为独立系统
把上下层拆分为独立系统,这种方式复杂度高,需要在系统间复制配置,还存在部分状态保留的问题。
下层配置示例
<running> labeling rules "mark interface X with 1" "mark interface Y with 2" <operational> labeling rules ... (state) interfaces "interface X" "interface Y" (state) interface labeling "interface X has label 1 (labeled at 12:45)" "interface Y has label 2 (labeled at 11:07)"
上层配置示例
<running> interface labeling "interface X has label 1" # labeled at? "interface Y has label 2" <operational> (state) interfaces "interface X" "interface Y" interface labeling "interface X has label 1" "interface Y has label 2"
内容的提问来源于stack exchange,提问作者PlushBeaver
相关产品推荐
相关产品推荐

