ACL模块介绍

ACL模块介绍
关键词:ACL, QoS,端口过滤,流镜像,流重定向

1. ACL简介

1.1. ACL的用途

ACL(Access Control List,访问控制列表),顾名思义主要用于访问控制,属安全类应用。最初主要以防火墙类的安全应用为主,用其指定的2、3层特征参数规则集,来过滤端口收发的数据包,以及截获这些包作一些特殊处理(如:认证等)。
因其天生具有选择性处理包的功能特性,伴随着包交换逐渐由端口处理转向流处理的重心偏移,将其作为流选器的需求不断涌现,从而使ACL渐渐有了新的扩展应用,如:流镜像、流重定向等等。
ACL作为流选器使用时,其“Permit”动作不再表示“允许包通过”,而是表示此包被流选中,可以对其作特定的流操作;同理“Deny”也不再表示“丢包”,而是表示此包不被流选中,不对其做任何操作。
当ACL作为流选器,与一些比如限速(流限速)之类的QoS操作绑定一起应用时,就属于QoS的应用范畴了。
可见,ACL只是一个单纯的流选工具,与什么操作绑定,就起什么作用(与端口过滤绑定,就是过滤器;与包镜像器绑定,就是流镜像器;与包重定向器绑定,就是流重定向器;与限速器绑定,就是流限速器)。

1.2. ACL的使用方法

一条ACL就是一个规则集合的列表,用ACL号来标识;每条规则也称为“Rule”,用RuleID来标识。
常见的规则类型有:ICMP规则、IP规则、TCP规则、UDP规则、MAC规则等等。这些规则提供了捕获转发包的一些常用的2、3层特征参数。至于具体的命令行配置,请参考第3节。
ACL的具体用法,可以参考文档《ACL自测报告》,里面有较详细的用法实例讲解。

1.3. ACL的实现原理

ACL目前有以下三种实现手段,各有优缺点:
 基于软转发平台实现的纯软ACL
最早一代的ACL技术,基本上都是纯软件实现的过滤参数列表。实际上,就是一套较复杂的对转发包参数做检查的规则集合。显然,这就要求硬件平台所有的转发包,都先中转到设备CPU上经过ACL的检查后,再转发到目标端口。因此,转发设备一启动ACL功能,就会大大降低转发效率(大约只有平时的70%)。
缺点:大大降低包转发效率;
优点:软件实现的ACL,灵活性最高,可以随意增加新的规则类型。

 基于硬件转发平台流处理能力的纯硬ACL
为了满足不断发展的QoS需要,新一代的交换芯片大都具有较强的流处理能力。这些硬件的流处理芯片,是专为ACL和QoS这两种流应用设计的。只要在这些硬件流处理能力之上,开发出满足我们应用需求的驱动即可实现ACL、QoS功能。我们公司的ACL、QoS模块就是这样实现的。
缺点:
a) 硬件实现的ACL,灵活性很低,ACL能力固定,扩展性很差;
b) 因为硬件能力的千差万别,导致软件为了适应不同硬件的流处理能力,需要做的差异化处理较多。
优点:效率高,不影响包的线性转发效率。

 基于硬件转发平台实现的软、硬结合ACL
可见,纯软、纯硬的ACL都各有优缺点。自然而然,软、硬方案结合的ACL实现手段也就出现了。在硬件高效地流处理能力之上,再配合以灵活的软件处理,就可实现高效、灵活的双优ACL。实现手段与软转发类似,都是软硬结合。设备CPU不关心的转发,都走硬件平台;CPU关心的转发(如:组播),都中转走软件平台。ACL也类似,硬件能处理的流能力,都由硬件处理;硬件只能部分处理的,处理完硬件部分的包再中转到CPU的软转发那里,继续剩下的ACL软处理。这种实现方案,技术难度较高。
缺点:
a) 因为硬件能力的千差万别,导致软件为了适应不同硬件的流处理能力,需要做的差异化处理较多。
b) 对硬件的线性转发效率,有时(用到软转发时)会有影响。
优点:
a) 扩展性较好,增加新的规则类型较容易;
b) 效率较高,对包的线性转发效率影响不大。

2. ACL模块介绍

我们的ACL模块按功能,可分为五个子模块:
 ACL全局控制模块
 ACL端口过滤模块
 ACL TimeRange模块(目前,计划关闭此模块)
 ACL流镜像模块
 ACL流重定向模块
下面逐项说明。

  1. ACL全局控制模块
    ACL的全局控制有两项:ACL功能的全局开关、ACL过滤的全局默认动作。
    ACL全局开关,可以打开、关闭所有ACL相关的应用:端口过滤、流镜像、流重定向都被其控制。只有ACL开关打开时,ACL才能绑定到接口生效,才能配置默认动作;ACL开关关闭时,所有接口上的ACL绑定,都会被清除。ACL开关可以随时开合。系统缺省关闭。
    ACL过滤的全局默认动作,是为所有绑定ACL过滤功能的端口,提供默认的过滤处理。即,如果端口收到的包,匹配不到所有绑定的ACL规则,就作此默认处理(通过或丢包)。此默认动作,对ACL的流镜像、流重定向应用无效,只对ACL端口过滤有效,且可以随时修改,即时生效。系统缺省通过。
  2. ACL端口过滤模块
    一个端口通过绑定特定的ACL,来过滤收到的数据包。
  3. ACL流镜像模块
    一个端口通过绑定特定的ACL,来镜像收到的数据包到设定的目标端口。
  4. ACL流重定向模块
    一个端口通过绑定特定的ACL,来转发收到的数据包到设定的目标端口。

3. ACL命令行

 全局视图下的命令

  1. ACL全局开关
    config access-list service [enable | disable]
  2. ACL全局默认过滤动作
    config access-list default-action [permit | deny]
  3. 进入ACL视图
    access-list <1-5000>
  4. 创建any规则的ACL
    access-list <1-5000> [permit | deny] any
  5. 创建IP规则的ACL
    access-list <1-5000> [permit | deny] ip dip [any | <A.B.C.D/M>] sip[any | <A.B.C.D/M>]
  6. 创建TCP规则的ACL
    access-list <1-5000> [permit | deny] tcp dip [any | <A.B.C.D/M>] dst-port [any | <0-65535>] sip [any | <A.B.C.D/M>] src-port [any | <0-65535>]
  7. 创建UDP规则的ACL
    access-list <1-5000> [permit | deny] udp dip [any | <A.B.C.D/M>] dst-port [any | <0-65535>] sip [any | <A.B.C.D/M>] src-port [any | <0-65535>]
  8. 创建ICMP规则的ACL
    access-list <1-5000> [permit | deny] icmp dip [any | <A.B.C.D/M>] sip[any | <A.B.C.D/M>]
  9. 创建MAC规则的ACL
    access-list <1-5000> [permit | deny] mac destination <ABCD.ABCD.ABCD> source <ABCD.ABCD.ABCD>
  10. 创建MAC IP规则的ACL
    access-list <1-5000> [permit | deny] mac destination <ABCD.ABCD.ABCD> [any | <A.B.C.D/M>] source <ABCD.ABCD.ABCD> [any | <A.B.C.D/M>]
  11. 查看所有ACL
    show access-list
  12. 查看某条ACL
    show access-list <1-5000>
  13. 删除所有ACL
    undo access-list
  14. 删除某条ACL
    undo access-list <1-5000>

 ACL视图下的命令

  1. ACL优先级设定
    access-list priority <1-5000>
  2. 创建any规则
    rule <1-5000> [permit | deny] any
  3. 创建IP规则
    rule <1-5000> [permit | deny] ip dip [any | <A.B.C.D/M>] sip[any | <A.B.C.D/M>]
  4. 创建TCP规则
    rule <1-5000> [permit | deny] tcp dip [any | <A.B.C.D/M>] dst-port [any | <0-65535>] sip [any | <A.B.C.D/M>] src-port [any | <0-65535>]
  5. 创建UDP规则
    rule <1-5000> [permit | deny] udp dip [any | <A.B.C.D/M>] dst-port [any | <0-65535>] sip [any | <A.B.C.D/M>] src-port [any | <0-65535>]
  6. 创建ICMP规则
    rule <1-5000> [permit | deny] icmp dip [any | <A.B.C.D/M>] sip[any | <A.B.C.D/M>]
  7. 创建MAC规则
    rule <1-5000> [permit | deny] mac destination <ABCD.ABCD.ABCD> source <ABCD.ABCD.ABCD>
  8. 创建MAC IP规则
    rule <1-5000> [permit | deny] mac destination <ABCD.ABCD.ABCD> [any | <A.B.C.D/M>] source <ABCD.ABCD.ABCD> [any | <A.B.C.D/M>]
  9. 查看所有RULE
    show rule
  10. 查看某条RULE
    show rule <1-5000>
  11. 删除所有RULE
    undo rule
  12. 删除某条RULE
    undo rule <1-5000>

 接口视图下的命令

  1. 接口绑定ACL过滤
    access-list <1-5000>
  2. 接口绑定ACL镜像
    access-list <1-5000> mirror port <slot/port>
  3. 接口绑定ACL重定向
    access-list <1-5000> redirect port <slot/port>
  4. 查看接口绑定的所有ACL
    show access-list
  5. 查看接口绑定的某条ACL
    show access-list <1-5000>
  6. 取消接口绑定的所有ACL
    undo access-list
  7. 取消接口绑定的某条ACL
    undo access-list <1-5000>

4. ACL技术规格

  1. 我们的ACL模块,使用纯硬件的流处理能力,不会影响交换芯片的线性转发效率。目前,适用于BCM56300、56500、56510、56514这四款交换芯片。
  2. 由于这四款芯片的流处理器,都不支持输出端口字段。因此,我们的ACL和QoS规则,都只能作用于端口的输入处理阶段。
  3. 由于交换芯片的上位CPU端口的包接收处理,属于CPU的包输出处理阶段。因此,我们的ACL和QoS规则,都不能作用于CPU端口的收包处理。
  4. 我们的OLT系统虽然最多允许配置1到5000号的ACL,实际上受硬件限制,这些ACL不能同时作用到端口上生效。56300最多允许1024(128×8)条流规则;56500最多允许2048(128×16)条流规则;56510和56514最多允许4096(256×16)条流规则。
  5. BCM56300的流处理能力相对较弱,不支持MAC+IP的ACL、QoS规则。56300的QoS能力也较弱,不支持set queueid的流操作。这些我们对56300都做了特殊处理(隐藏或简化)。
  6. 这四款芯片的流处理器,都不能支持端口一级的DSCP映射,只有全局的一张映射表,因此,相关的全局设置命令移到了隐藏节点下。
  7. 因为ACL、QoS规则,都共用硬件流处理器,所以两个独立的模块会相互影响,体现在:规则数目占用,优先顺序这两个方面。
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值