将 Congress 表转换为基于 Neutron Group 的策略表¶
https://blueprints.launchpad.net/congress/+spec/congress-gbp-translation
本文档描述了如何将 Congress 策略与 Neutron 基于 Group 的策略 (GBP) 集成。
问题描述¶
Congress 提供了一种机制,允许 OpenStack 客户端定义应用于所有 OpenStack 组件(包括网络)的策略。Neutron 基于 Group 的策略为定义端点组之间的网络连接提供了一个高级抽象。
将 Congress 和 GBP 集成是可取的,以便 Congress 可以监控和强制执行 GBP 策略。可以使用 Congress 可达性表来指定端点之间的连接策略。可以将此表转换为一组表示 GBP 实体的表,例如策略目标组、策略规则、策略分类器等。
提议的变更¶
GBP 可以由以下表表示
端点 (endpoint_id)
端点组 (endpoint_id, endpoint_group_id)
分类器 (classifier_id, port, protocol, direction)
分类器组 (classifier_id, classifer_group_id)
动作 (action_id, action_type, action_value)
动作组 (action_id, action_group_id)
策略规则 (policy_rule_id, classifier_group_id, action_group_id)
合约 (contract_id, policy_rule_id)
策略实例 (endpoint_group_id, relation, contract_id)
可以定义一个 Congress 可达性策略表,以形成两个端点组之间的策略
可达 (id, group1, group2, src_port, dst_port)
目标是从输入的可达策略表转换为输出的 GBP 表,使用 Congress 策略语言,并使用诸如以下函数:
- PolicyInstance(group_id1, relation, contract_id) :-
reachable(contract_id, group_id1, group_id2, x, y), producer_relation(relation)
备选方案¶
无。
策略¶
以下是使用 Congress datalog 语法编写的策略示例,用于两个组(tier 1 和 tier 2)在端口 80 上双向通信。
操作员输入数据(来自操作员或云管理系统)
层级成员关系 (tier_id, vm_id)
(1, 100) (1, 101) (2, 102)
策略输入数据
- 层级 (tier_id)
(1) (2)
可达性策略表
- 可达 (id, src, dst, src_port, dst_port)
(10, tier1, tier2, *, 80)
(11, tier2, tier1, *, 80)
策略操作¶
这些表允许 Congress 监控和强制执行 GBP 策略。
数据源¶
Neutron 基于 Group 的策略。有关 GBP 的详细信息,请参见此处
https://wiki.openstack.org/wiki/GroupBasedPolicy/StackForge/repos
数据模型影响¶
无
REST API 影响¶
无。
安全影响¶
无。
通知影响¶
无。
其他最终用户影响¶
无。
性能影响¶
无。
其他部署者影响¶
无。
开发者影响¶
无。
依赖项¶
这取决于 Congress 的 GBP 数据源驱动程序的实现。
测试¶
将创建一些示例输入表,并通过检查输出触发表的内容来验证转换。
文档影响¶
所有转换细节都将记录在案。