6506QACL工作原理.docx

上传人:b****3 文档编号:10821387 上传时间:2023-05-27 格式:DOCX 页数:24 大小:119.75KB
下载 相关 举报
6506QACL工作原理.docx_第1页
第1页 / 共24页
6506QACL工作原理.docx_第2页
第2页 / 共24页
6506QACL工作原理.docx_第3页
第3页 / 共24页
6506QACL工作原理.docx_第4页
第4页 / 共24页
6506QACL工作原理.docx_第5页
第5页 / 共24页
6506QACL工作原理.docx_第6页
第6页 / 共24页
6506QACL工作原理.docx_第7页
第7页 / 共24页
6506QACL工作原理.docx_第8页
第8页 / 共24页
6506QACL工作原理.docx_第9页
第9页 / 共24页
6506QACL工作原理.docx_第10页
第10页 / 共24页
6506QACL工作原理.docx_第11页
第11页 / 共24页
6506QACL工作原理.docx_第12页
第12页 / 共24页
6506QACL工作原理.docx_第13页
第13页 / 共24页
6506QACL工作原理.docx_第14页
第14页 / 共24页
6506QACL工作原理.docx_第15页
第15页 / 共24页
6506QACL工作原理.docx_第16页
第16页 / 共24页
6506QACL工作原理.docx_第17页
第17页 / 共24页
6506QACL工作原理.docx_第18页
第18页 / 共24页
6506QACL工作原理.docx_第19页
第19页 / 共24页
6506QACL工作原理.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

6506QACL工作原理.docx

《6506QACL工作原理.docx》由会员分享,可在线阅读,更多相关《6506QACL工作原理.docx(24页珍藏版)》请在冰点文库上搜索。

6506QACL工作原理.docx

6506QACL工作原理

6506QACL工作原理及案例分析

6506的QACL工作比较特殊,配置起来有许多注意事项,随着6500系列产品在全球的展开,维护和技术支持任务会越来越重,有必要向广大用服兄弟解释芯片的工作原理,公布一些技术细节。

一、规则匹配过程

首先介绍一下6506采用的芯片的结构:

1、PT表项(PacketTypeTable):

用于设置报文的封装格式、以太网类型等;

其中几个常用的字段为:

Encapsulation:

报文的封装类型,包括EthernetII,IEEE802.2/802.3SNAP,Netware802.3Raw,

IEEE802.2/802.3;

Ethernettype:

以太网类型,只对EthernetII,IEEE802.2/802.3SNAP有效;

PackettypeID:

如果所有字段匹配上后,就得到一个ID号,以与别的表项相区别;

表中除了ID字段的其他字段属于匹配字段,有相应Mask设置,如果Mask=0,则表示该字段是不关心的,即不参与比较/匹配过程。

ID字段的取值是由程序控制的,如果两个表项其他的字段完全相同,则他们的ID号就是相同的。

2、SrHG表项(SourceHostGroupTable):

用于设置源二、三层信息,如源IP,源Mac,源端口等;

3、

DstHG表项(DestinationHostGroupTable):

用于设置目的二、三层信息,如目的IP,目的Mac,目的端口等;

 

SrHG表项与DstHG表项在CAM表中的表示是相同的,实际上是同一张表,当Source/Destination=0时,表示记录的是源信息,是SrHG表;当Source/Destination=1时,表示记录的是目的信息,是DstHG表。

其中几个常用的字段为:

Entrytype:

表项类型,有IP,IPX,L2,L3四个类型,其中L3没有用到;类型不同对其后各

字段的解释就不同。

还有一点要格外注意:

我们的qaclmode有L2/L3(Link/IP)

两种模式,type=L2只在L2Mode下有效,type=IP/IPX只在L3Mode下有效。

有时配置的规则不起作用,可能是Mode没有设置正确;

IPAddress:

报文的源或目的IP,只对type=IP有效;

DiffServ/IPPrecedence:

IP优先级,DSCP;

PhysicalPortMask:

端口掩码,表示对从哪些端口进/出的报文,规则生效。

我们配置IP

规则时,在多个端口下发,在底层只占用了一个SrHG表项,就是应为该字段

可以表示多个端口信息。

这显然大大节约了表项资源;

VlanID:

我们当前只支持入Vlan设置,且只能在Link规则才可配;

MacAddress:

报文的源或目的Mac,只对type=L2有效;

PhysicalPort:

物理端口号,表示对从哪些端口进/出的报文,规则生效。

HostGroupID:

如果所有字段匹配上后,就得到一个ID号,以与别的表项相区别;

表中除了ID字段的其他字段属于匹配字段,有相应Mask设置,如果Mask=0,则表示该字段是不关心的,即不参与比较/匹配过程。

ID字段的取值是由程序控制的,如果两个表项除去Port外其他的字段完全相同,则他们的ID号就是相同的。

4、SrL4表项(SourceLayer4Table):

用于设置协议类型、TCPFlag、L4源端口号、Socket等;

5、DstL4表项(DestinationLayer4Table):

用于设置协议类型、TCPFlag、L4目的端口号、Socket等;

 

SrL4表项与DstL4表项在CAM表中的表示是相同的,实际上是同一张表,当Source/Destination=0时,表示记录的是源信息,是SrL4表;当Source/Destination=1时,表示记录的是目的信息,是DstL4表。

其中几个常用的字段为:

Type:

表项类型,有IP,IPX两个类型,类型不同对其后各字段的解释就不同。

L4Protocol:

报文的TransportLayer协议号,如配置了Tcp规则,该字段=6;

PortNumber:

TCP/UDP报文的端口号;

L4LayerGroupID:

如果所有字段匹配上后,就得到一个ID号,以与别的表项相区别;

表中除了ID字段的其他字段属于匹配字段,有相应Mask设置,如果Mask=0,则表示该字段是不关心的,即不参与比较/匹配过程。

ID字段的取值是由程序控制的,如果两个表项其他的字段完全相同,则他们的ID号就是相同的。

6、

MR表项(MainRuleTable):

用于设置相应匹配动作。

有上述五张表,我们可以得到5个ID号;这5个ID就表示我们对该规则的匹配条件,现在就

可以来做相应动作了。

MR表项就是匹配这几个ID号,然后做相应动作。

表中的这几个ID字段属于匹配字段,有相应Mask设置,如果Mask=0,则表示该字段是不关心的,即不参与比较/匹配过程

配置一条规则时,要根据规则内容分散到不同的多个表项中去。

即上层下发一条流规则,底层需要将其内容进行分解,设置到不同的硬件表项当中去。

(我们首先要明确规则是如何进行分解,底层有哪些表项?

例1:

aclnamer1advanced

rule0permittcpsoure1.1.1.10eq10destination1.1.1.20eq20

inte2/0/1

packet-filterinboundipr1rule0

底层将设置5个表项:

SrHG表项:

包含信息source1.1.1.10,inte2/0/1;

DstHG表项:

包含信息destination1.1.1.20;

SrL4表项:

包含信息tcp,soureporteq10;

DstL4表项:

包含信息tcp,destinationporteq20;

MR表项:

包含信息permit动作。

例2:

aclnamer2link

rule0denyrarpingress0-0-1egress0-0-3

inte2/0/1

packet-filterinboundlinkr2rule0

底层将设置4个表项:

PT表项:

包含信息Ethernettype=0835;

SrHG表项:

包含信息SrMac0-0-1,inte2/0/1;

DstHG表项:

包含信息DstMac0-0-3;

MR表项:

包含信息deny动作。

每下发一条规则到芯片,都会设置相应表项,当然表项的个数是随着规则内容不同而变化的。

(如例2中的规则只有PT,SrHG,DstHG三个表项)芯片的规则匹配要经过一系列的查找过程。

前5张表都有一个ID号,芯片对前5张表,按表项在CAM中的位置一次匹配,匹配上第一个表项,记下其ID号;接着匹配下一张表,这样得到5个ID号;(如例2中的规则没有SrL4,DstL4表项,在匹配这两个表时,就匹配上缺省表项得到SrL4ID=0和DstL4ID=0)最后,在根据这5个ID号去匹配MR表(对例2中的规则,其MR表项的SrL4ID和DstL4ID字段,要设为不关心。

),并执行相应的动作。

从该过程来看,每个报文进行匹配时,对每一张表只匹配了一次,这虽然大大提高了匹配速度,但显然是非穷举的方法,在某些情况下会造成规则匹配不上等情况。

我们的规则之所以难配,都是这个原因造成的。

以下对几个典型例子进行分析:

例3:

rule1:

protocol61.1.1.10.0.0.0eq201.1.1.30.0.0.0

rule2:

protocol61.1.1.10.0.0.01.1.1.30.0.0.0eq30precedence4

PT

SrHG

DstHG

SrL4

DstL4

MR

rule1

1.1.1.1,in:

3(id=1)

1.1.1.3(id=1)

Tcp,port:

20(id=1)

(-,1,1,1,-)

rule2

1.1.1.1,in:

3precedence:

4(id=2)

1.1.1.3precedence:

4(id=2)

Tcp,port:

30(id=2)

(-,2,2,-,2)

在端口3上,先下发rule1,再下发rule2;

在处理这些表项时,对每个表项按“长度”(有多少个有效字段)进行排序,如rule1的SrHG有2个有效字段,而rule2的SrHG有3个有效字段,所以匹配SrHG表项时,就先匹配rule2的SrHG表项(注意这里对IP地址的大小网段没有做区分)。

MR的表项有效字段个数相同,就先匹配后下发的MR表项。

构造报文1.1.1.1(eq20)==>1.1.1.3,该报文的tos域为0x10(precedence:

4)。

它的匹配情况是:

(0,2,2,1,0),没有匹配上任何一条规则。

 

例4:

rule1:

any1.1.1.20.0.0.0

rule2:

1.1.1.10.0.0.01.1.1.30.0.0.0

PT

SrHG

DstHG

SrL4

DstL4

MR

rule1

in:

2,5,6(id=1)

1.1.1.2(id=1)

(-,1,1,-,-)

rule2

1.1.1.1,in:

2,3,4(id=2)

1.1.1.3(id=2)

(-,2,2,-,-)

先在端口2,5,6上,下发rule2,

再在端口2,3,4上,下发rule1;

构造报文1.1.1.1==>1.1.1.3ingress2

匹配情况是(0,2,2,0,0),匹配上rule2。

但若构造报文1.1.1.1==>1.1.1.2ingress2

它的匹配情况是(0,2,1,0,0),没有匹配上任何一条规则。

从中可以看出,如果下发的配置比较相似,就比较容易出问题。

这是芯片特性决定的,只能尽量减小其影响,不能完全规避。

其中心就是这是个不完全匹配的过程。

我们的处理一般是,对规则做一些变通。

既然本质是不完全匹配,我们就再构造出几个辅助规则,使之变为完全匹配。

如对例3,我们构造规则

rule3:

protocol61.1.1.10.0.0.0eq201.1.1.30.0.0.0precedence4

rule3与rule1的动作相同。

PT

SrHG

DstHG

SrL4

DstL4

MR

rule1

1.1.1.1,in:

3(id=1)

1.1.1.3(id=1)

Tcp,port:

20(id=1)

(-,1,1,1,-)

rule2

1.1.1.1,in:

3precedence:

4(id=2)

1.1.1.3precedence:

4(id=2)

Tcp,port:

30(id=2)

(-,2,2,-,2)

rule3

1.1.1.1,in:

3precedence:

4(id=2)

1.1.1.3precedence:

4(id=2)

Tcp,port:

20(id=1)

(-,2,2,1,-)

这样对报文1.1.1.1(eq20)==>1.1.1.3precedence4

它的匹配情况是:

(0,2,2,1,0),匹配上rule3,由于rule3与rule1的动作相同,也就相当于匹配上rule1。

与规则匹配有关的另一个关键点是表项的匹配次序。

芯片在匹配每一张表时是按照从低地址向高地址的次序来匹配的,因此如何组织这些表项就是一个很重要的问题。

同时我们也讨论一下下发ACL规则个数的问题。

CAM表中的表项个数是有限的,固定不变的。

PT表项个数为64个,但由于PTID只有5位,其实可用的只有32项;HG表项有128项,而SrHGID和DstHGID各占6位,相当于SrHG表项有64项,DstHG也有64项;L4表项与HG的情况相同,SrL4与DstL4表项也是各有64项;而MR表项有512条,可谓非常多了。

在下发规则时,我们对每张表从高地址开始分配,因此后下发的往往排在下面,优先级会高一些。

为了使匹配过程更合理一些,在处理这些表项时,对每个表项按“长度”(有多少个有效字段)进行排序,长度大的放在低地址处,长度小的放在高地址处。

(注意这里对IP地址的大小网段没有做区分)。

MR的表项有效字段个数相同,就先匹配后下发的MR表项。

因此,配置了许多ACL规则,下发次序是非常重要的,这决定了哪些表项被匹配,哪些没有被匹配。

经常有人问这样的问题:

6506能够下发多少条ACL规则?

为什么我下发了60条就不能再下发了?

准确的数目谁也不能确定,因为每一条规则下发时对应的底层表项个数不相同,而下发的个数就是受底层表项资源的限制;资源耗尽了,就不能再下发了。

一般来说,也就是60条左右。

因为下发规则时,总要在端口上下发,就要占用一个SrHGID,而总共只有64个这种ID,在初始化时,我们又占去了几条,可用的大约在60条左右。

当然,如果深究,就麻烦的多。

其中一点就是not-carefor-interface。

Not-carefor-interface是一个非常重要的参数,用在packet-filter命令当中。

虽然也是在端口上下发,但其不设置端口信息,相当于该规则在这个芯片上全局有效。

它对于节约表项资源有重大价值有重要意义,也使得组网配置更加灵活,有时少了它,甚至都不能满足组网需求。

 

二、案例部分

 

以上我们分析了S6506芯片的工作原理,以及可能遇到的问题。

本节通过一些实例来进一步详细解释。

例5、6506上配置4个网段,每个网段包含一个服务器的小网段。

要求:

任何一台PC可以访问每一个服务器网段,相同网段可以互访,而不同网段的PC机不能互访。

举例如下:

假设4个网段分别为:

10.1.0.0/16

10.2.0.0/16

10.3.0.0/16

10.4.0.0/16

而4个服务器小网段分别为:

10.1.1.0/24

10.2.1.0/24

10.3.1.0/24

10.4.1.0/24

6506上配置了FT48和GB8U两块业务板。

具体配置如下:

/*任何一台PC可以访问每一个服务器网段*/

aclnameAccessServeradvanced

rule0permitipdestination10.1.1.00.0.0.255

rule1permitipdestination10.2.1.00.0.0.255

rule2permitipdestination10.3.1.00.0.0.255

rule3permitipdestination10.4.1.00.0.0.255

rule4permitipsource10.1.1.00.0.0.255

rule5permitipsource10.2.1.00.0.0.255

rule6permitipsource10.3.1.00.0.0.255

rule7permitipsource10.4.1.00.0.0.255

/*相同网段可以互访*/

aclnameAccessInsideadvanced

rule0permitipsource10.1.0.00.0.255.255destination10.1.0.00.0.255.255

rule1permitipsource10.2.0.00.0.255.255destination10.2.0.00.0.255.255

rule2permitipsource10.3.0.00.0.255.255destination10.3.0.00.0.255.255

rule3permitipsource10.4.0.00.0.255.255destination10.4.0.00.0.255.255

/*不同网段的PC机不能互访*/

aclnameDenyInteradvanced

rule0denyip

/*接下来,要在相关芯片上全局下发,假设在slot1上插有GB8U,slot3上插有FT48,要把上述规则在这两块板子的所有芯片全局下发*/

/*在GB8U上全局下发*/

intg1/0/1

packet-filterinboundipDenyInternot-carefor-interface

packet-filterinboundipAccessInsidenot-carefor-interface

packet-filterinboundipAccessServernot-carefor-interface

 

/*在FT48上全局下发*/

/*先在第一个芯片上下发*/

inte3/0/1

packet-filterinboundipDenyInternot-carefor-interface

packet-filterinboundipAccessInsidenot-carefor-interface

packet-filterinboundipAccessServernot-carefor-interface

/*再在第二个芯片上下发*/

inte3/0/48

packet-filterinboundipDenyInternot-carefor-interface

packet-filterinboundipAccessInsidenot-carefor-interface

packet-filterinboundipAccessServernot-carefor-interface

为什么要这样做?

还是列表来分析吧。

PT

SrHG

DstHG

SrL4

DstL4

MR

AccessServee_0

10.1.10/24(id=1)

(-,-,1,-,-)

AccessServee_1

10.2.10/24(id=2)

(-,-,2,-,-)

AccessServee_2

10.3.10/24(id=3)

(-,-,3,-,-)

AccessServee_3

10.4.10/24(id=4)

(-,-,4,-,-)

AccessServee_4

10.1.10/24(id=1)

(-,1,-,-,-)

AccessServee_5

10.2.10/24(id=2)

(-,2,-,-,-)

AccessServee_6

10.3.10/24(id=3)

(-,3,-,-,-)

AccessServee_7

10.4.10/24(id=4)

(-,4,-,-,-)

AccessInside_0

10.1.0.0/16(id=5)

10.1.0.0/16(id=5)

(-,5,5,-,-)

AccessInside_1

10.2.0.0/16(id=6)

10.2.0.0/16(id=6)

(-,6,6,-,-)

AccessInside_2

10.3.0.0/16(id=7)

10.3.0.0/16(id=7)

(-,7,7,-,-)

AccessInside_3

10.4.0.0/16(id=8)

10.4.0.0/16(id=8)

(-,8,8,-,-)

DedyInter_3

(-,-,-,-,-)

按我们的下发次序,对各表项的匹配次序为从上到下进行。

大家可以构造几个报文来验证一下其正确性。

如果再要求只有网段10.1.0.0/16可以访问外部网络。

aclnameAccessOutsideadvanced

rule0permitipsource10.1.0.00.0.255.255destination0.0.0.0127.255.255.255

rule1permitipsource10.1.0.00.0.255.255destination128.0.0.0127.255.255.255

rule2permitipsource0.0.0.0127.255.255.255destination10.1.0.00.0.255.255

rule3permitipsource128.0.0.0127.255.255.255destination10.1.0.00.0.255.255

rule4permitipsource10.1.1.00.0.0.255destination0.0.0.0127.255.255.255

rule5permitipsource10.1.1.00.0.0.255destination128.0.0.0127.255.255.255

rule6permitipsource0.0.0.0127.255.255.255destination10.1.1.00.0.0.255

rule7permitipsource128.0.0.0127.255.255.255destination10.1.1.00.0.0.255

在接口上按如下次序下发:

packet-filterinboundipDenyInternot-carefor-interface

packet-filterinboundipAccessOutsidenot-carefor-interface

packet-filterinboundipAccessInsidenot-carefor-interface

packet-filterinboundipAccessServernot-carefor-interface

上例中有大小网段的嵌套关系,因此规则的下发次序至观重要,我们总是把大网段先下发,而小网段后下发。

否则,将先匹配大网段,而永远不会匹配到小网段。

例6:

VLAN2:

10.42.12.129-10.42.12.190255.255.255.192

VLAN3:

10.42.12.193-10.42.12.254255.255.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2