全文阅读传送门:http://www.ustack.com/wp-content/uploads/2013/11/Neutron%E9%98%B2%E7%81%AB%E5%A2%99.pdf
原作者:http://www.ustack.com/
以下是我的摘录:
数据模型
防火墙服务底层数据模型由三个类组成:FirewallPolicy, FirewallRule和Firewall。
FirewallRule是我们所说的防火墙规则,定义了包过滤所需的信息和匹配后的动作。
FirewallPolicy由若干个FirewallRule组成,它被作为模板来创建Firewall。
Firewall是系统最终要实现的防火墙。
Neutron作为多租户的网络服务模型,防火墙的这几个类都有租户ID属性。这样租户A的防火墙信息和租户B的防火墙信息就隔开了。FirewallPolicy有个audited属性,在参考实现中还没有实现。参考实现目前只支持一个租户只有一个Firewall。
防火墙与安全组
安全组很像防火墙参考实现,它们都是使用IPTables规则来做包过滤。他们之间的区别在于:
1. 安全组由L2 Agent来实现,也就是说L2 Agent,比如neutronopenvswitchagent和neutronlinuxbridgeagent,会将安全组规则转换成IPTables规则,而且一般发生在所有计算节点上。防火墙由L3 Agent来实现,它的规则会在租户的Router所在的L3 Agent节点上转化成IPTables规则。
2. 防火墙保护只能作用于跨网段的网络流量,而安全组则可以作用于任何进出虚拟机的流量。
3.防火墙作为高级网络服务,将被用于服务链中,而安全组则不能。
在Neutron中同时部署防火墙和安全组可以达到双重防护。外部恶意访问可以被防火墙过滤掉,避免了计算节点的安全组去处理恶意访问所造成的资源损失。即使防火墙被突破,安全组作为下一到防线还可以保护虚拟机。最重要的是,安全组可以过滤掉来自内部的恶意访问。
总结
Neutron的防火墙服务是一个高级网络服务,目标是作为网络服务链中的一个服务节点而存在。它和安全组构成了双重防护。防火墙的参考实现作用在Neutron的路由器上,所以只对跨子网的流量起作用。对于来自同网段的恶意攻击,我们还需要安全组来防护。
防火墙Policy的规则是有顺序的,而且每个规则可以被单独禁用和激活。这个特性给防火墙规则的部署和调试都提供了很强的灵活性。