NSA 1.2 FAQ
1、NSA 1.2V需要安装libpcap和libnspr两个库,请问如何安装?
答:XUNSA采用了libpcap和libnspr两个库,用户需要在自己的开发环境中预先安装这两个开发库,也可以直接编译NSA 1.2V源代码dist.src目录下的源代码进行安装。安装libnspr库方法如下:cd trunk/dist.src目录下,进入到nspr 目录,然后运行./configure; make; make install; 即可安装上libnspr。libpcap库的安装也是同样的方法。
2、在1.2版本芯片软件中,XUNSA的QOS流带宽管理的粒度是多少?是否支持优先级队列?如果支持的话,请问每个接口上支持几个?是否支持“每秒报文数量门限设置”、对UDP flood和ICMP flood的简单识别和抑制?
答:XUNSA的QOS流带宽管理的粒度是16Kbps,不支持优先级队列,也不支持每“秒报文数量门限设置“。
3、XUNSA为了提高SSN表项的下发性能,在执行nsa_add/mod/del_ssn时不直接对卡进行操作,而是在内存中设置了一个缓存,只有当缓存满的时候才会将这些SSN修改真实的写入NSA卡;请问SSN表项的起效是否是在写入了NSA卡时,还是在写入缓存时?NSA卡上缓存条数的上限是多少?
答:SSN表项的起效是在写入了NSA卡时,NSA卡上缓存条数是4对SSN表相即八条。
4、请问如下命令中,接在forward和mirror之后的参数 <0-7> <0-7> 是什么含义?
ssn add A.B.C.D A.B.C.D <1-65535> <1-65535> tcp forward <0-7> <0-7>
ssn add A.B.C.D A.B.C.D <1-65535> <1-65535> tcp mirror <0-7> <0-7>
答:第一个<0-7>表示一个五元组会话正向流的出接口,第二个<0-7>表示反向流的出接口;
5、请问如下命令中,接在tcp之后的参数 <1-2000000>是什么含义?
答:<1-2000000>代表将要建立SSN表项的条数。
6、请问1.2版本的nsa板卡在内核中是否是MAC为00:21:45:AB:CD:EF这块板卡?
答:是的。
7、是否用 ssn add 命令时,需要手动添加两个方向?比如需要如下两条,一个流才能转发成功?ssn add 192.168.0.3 192.168.0.4 5001 59658 tcp forward 1 0 ;ssn add 192.168.0.4 192.168.0.3 59658 5001 tcp forward 0 1
答:写一条就可以。
8、如果我要删除某一条ssn规则,命令如何写? 比如我写了一条这样的规则 ssn add 192.168.0.3 192.168.0.4 5001 59658 tcp forward 1 0如何将其删除?
答:在你添加完这条命令后,会在这条命令的下面显示调试信息,其中有这条ssn表相的ssn id,直接ssn delete ssn id就可以删除这条ssn规则。调试信息类似这条信息:add ssn tuple (0xc0a80003 0xc0a80004 0x138a 0xe925 0x1) at pos 0x508c74,其中0x508c74就是一条ssn规则的id.
9、请问如下命令中,参数<0-65535> 是指什么?{1-65535}是指什么,为何此处为{}标识,而不是<>,是否和<0-65535>是不同的用法? <0-15>是指什么?参数STRING是否是用需要匹配的字符串来替换?
access-list <0-65535> show
access-list <0-65535> invalidate
access-list <0-65535> classify A.B.C.D/M A.B.C.D/M {1-65535} {1-65535} udp
access-list <0-65535> classify A.B.C.D/M A.B.C.D/M {1-65535} {1-65535} udp no-match
access-list <0-65535> classify A.B.C.D/M A.B.C.D/M {1-65535} {1-65535} udp any-match
access-list <0-65535> classify A.B.C.D/M A.B.C.D/M {1-65535} {1-65535} udp match STRING
access-list <0-65535> classify A.B.C.D/M A.B.C.D/M {1-65535} {1-65535} udp match STRING <0-15>
答:参数<0-65535> 是指ACL ID;{1-65535}是指端口号。<0-15>是指待匹配字符串在数据包payload中的位置。STRING是待匹配的字符串。
10、请问如下命令中,参数<0-4096>是指什么?string-table set <0-4096> STRING 这条命令是什么含义?
string-table show <0-4096>
string-table add STRING
string-table del STRING
string-table set <0-4096> STRING
答:参数<0-4096>是指字符串在字符串表中的ID,string-table set <0-4096> STRING 这条命令是在字符串表中添加一个字符串,并设定其ID为<0-4096>之间的一个值。
11、请问如下命令中,参数<0x0-0xffffff>是指什么?hardware register set <0x0-0xffffff> <0x0-0xffffffff>命令中前后两个<0x0-0xffffff> 各指什么?参数<0-1>是指什么?register和dimm分别指什么意思?
hardware register get <0x0-0xffffff>
hardware register set <0x0-0xffffff> <0x0-0xffffffff>
hardware register test
hardware dimm <0-1> get <0x0-0xffffff>
hardware dimm <0-1> test
答:hardware register get <0x0-0xffffff> 中的<0x0-0xffffff>是指寄存器的地址。hardware register set <0x0-0xffffff> <0x0-0xffffffff>中第一个<0x0-0xffffff>是寄存器的地址,第二个<0x0-0xffffff>是要写入的值。参数<0-1>是指内存id.register和dimm分别指寄存器和内存。
12、请问1.2版本中是否有这样的函数--控制在报文需要镜像时,NSA 卡递交给CPU 镜像报文的大小?我在1.0版本中有看到这样的函数nsa_set_acl_mirror_size,但1.2中未找到。
答:NSA1.2版本中没有这样的函数。
13、请问1.2版本网卡是否具有 由该网卡向外主动发送数据包(不是转发和mirror)的功能?如果能主动发送数据包,请问对应的函数是什么?
答:NSA向外发送数据包的函数在源代码nsa_sci.c中,函数名为int npcp_send_data(struct npcp_controller *npcp, PRUint8 *packet, int len).
14、我用如下命令做了测试,有一些疑问(疑问见如下的红色字部分):
xunsa(config-nsa-0)# ssn add 192.168.0.3 192.168.0.4 5001 49622 tcp mirror 0 1
add time: 0 usecs
add ssn tuple (0xc0a80003 0xc0a80004 0x1389 0xc1d6 0x1) at pos 0x6b8a8
ssn cache statistics:
total_entries = 1 current_entries = 1
max_entries = 1 matched_entries = 0
full_0 = 0 full_1 = 0
//以上命令所得到的信息中的pos是否是正向流的ssn id?该ssn id是否是用于填入以下命令中的<0x0-0xffffff> 部分?
ssn delete <0x0-0xffffff>
ssn show <0x0-0xffffff>
ssn set <0x0-0xffffff> counter enable
ssn set <0x0-0xffffff> counter disable
ssn set <0x0-0xffffff> host
ssn set <0x0-0xffffff> drop
ssn set <0x0-0xffffff> forward outif <0-7>
ssn set <0x0-0xffffff> mirror outif <0-7>
答:以上命令所得到的信息中的pos是正向流的ssn id.该ssn id是用于填入以下命令中的<0x0-0xffffff> 部分.
15 、xunsa(config-nsa-0)# ssn show
ssn cache statistics:
total_entries = 2 current_entries = 2
max_entries = 2 matched_entries = 0
full_0 = 0 full_1 = 0 recent prepared pos (0xa33330, 0xa7ef58)
//pos 中的0xa7ef58是从何而来?
答:pos 中的0xa7ef58是反向流的ssn id.
16、xunsa(config-nsa-0)# ssn set 0xa32044 counter enable
ssn entry not add yet
//为何该ssn表项0xa32044是未添加?(在之前的命令的返回信息中有此id号--pos 0xa32044)
答:出现这种情况可能是该ssn规则已经老化掉了。
17、请问你们命令中的STRING是以 字符形式输入,还是 16进制的形式作为输入?可以以16进制的格式作为输入吗?
答:STRING支持以字符格式和16进制格式输入。
18、收到的数据包是从固定的e1000网卡传上来么?如果我的主板上有2个e1000网卡,板卡数据包是随机的从这两个e1000网卡中收上来还是固定从某个网卡收上来。如果板卡数据包是从固定某个网卡收上来,那该网卡选取规则是什么?是pci总线上第一个e1000网卡么?
答:收到的数据包是从NSA板卡所在的网卡传来的,其MAC地址为:00:21:45:AB:CD:EF ,这是它的唯一标识。
19、xunsa程序有无gcc make的版本?我们不会使用到windows平台,而其他模块都采用gcc make。
答:xunsa程序只有cmake跨平台编译版本。
20、为何用 nsa_dev_spi_update所得到的all_bytes_rx和all_bytes_tx相比实际发送的包大小,每个包要大12字节?(比如我实际发送了包大小为71字节的包,而由all_bytes_rx和all_bytes_tx所得到的该包大小是83字节?)
答:统计字节里面包含了:前导头是8字节,CRC是4字节。
21、struct nsa_spi结构体中的valid_packet_rx和error_packet_rx是依据什么来判断该网络包是valid或error?是NSA板卡中对于网络包有计算checksum来判断是否为合法包吗?还是用的其他什么机制?
答:如果报文长度错误或者CRC错误,就是错误报文,现在不对IPchecksum和TCP/UDP checksum进行计算了,只对CRC进行校验。
22、我NSA卡的struct nsa_spi结构体中的all_packet_rx、all_bytes_rx、all_packet_tx、all_bytes_tx等统计值如何才能清零?(系统重启没有清零)。
答:用hardware counter clear可以清零。
23、板卡抓上来的包,是不是其协议号都是0x8050?
答:是的。
24、请问我将一个流加入SSN流表,并设置其包处理动作为forward之后,当该流结束时,NSA卡会向用户态镜像哪些包?是只镜像带FIN的包,还是跟随FIN之后的不带FIN的包也会镜像?
答:会镜像fin包和rst包。
25、测试发现,NSA板卡发送统计信息的最小时间间隔不是你们所说的30秒而是15秒。NSA板卡统计信息上传的粒度究竟是多少时长?
答:统计信息上传的粒度是平均30s,存在一定的误差。NSA卡在30S内扫描完400万会话连接,扫描到一条连接,就会上传一条连接的统计信息。
26、经过多次测试发现,老化信息包总是在这个流没有包传输300s后才上传给用户态,而不是在老化30s后就马上上传老化信息给上层。这是为何?
答:我们软件设定的老化时间是10,单位是30s,也就是说老化时间是300s,所以老化信息包总是在这个流没有包传输300s后才上传给用户态。
27、请问SSN ID号可以由用户态程序随意指定吗?还是必须要采用XUNSA中的nsa_ssn_hash函数和ssn_pos函数来共同生成一个ID号?
答:SSN ID不可以由用户态指定,只能由XUNSA中的函数哈希得到。
28、问关于QOS表项的函数nsa_dev_qos_set参数中的max和min所代表的带宽的单位是什么?比如我将min置为1,这个1是代表1bits,还是1Bytes,或是KB,kb,MB,Mb等等
答:单位是64Kb.
29、请问你们的NPCP报文还是正常的Ethernet报文吗,如果不是是否能修改为正常的Ethenet报文?
答:我们的NPCP报文还是正常的Ethernet报文。
30、麻烦告诉我一下在xunsa代码中的nsa_dna结构体的各个成员的具体解释,谢谢
struct nsa_dna {
PRUint8 mac6?;
PRUint8 tcam;
#define TCAM_VALID 1
#define TCAM_INVALID 0
PRUint8 base_board_map;
PRUint8 addon_board_map;
#define ADDON_VALID 0x80
PRUint8 reserve7?;
char base_board_sn24?;
char addon_board_sn24?;
PRUint8 signature32?;
};
答:struct nsa_dna {
PRUint8 mac6?;----------------------------------NSA板卡的MAC地址:00:21:45:20:00:40。
PRUint8 tcam; -------------tcam功能是否打开;
#define TCAM_VALID 1
#define TCAM_INVALID 0
PRUint8 base_board_map;------------基板的属性 (如果是八个网口的话,我们有NSA卡上附加一块小板,小板上带四个网口)
基板网口为电口的话属性是0x8f,光口的话是0x80
PRUint8 addon_board_map;-----------小板的属性 (为0x80)
#define ADDON_VALID 0x80
PRUint8 reserve7?;------------------保留项
char base_board_sn24?;---------------基板的序列号
char addon_board_sn24?;---------------小板的序列号
PRUint8 signature32?;-----------------签名(保留项)
};
31、请问MAX_SCI_NUMS是否代表的是一个系统中最多能接受几块NSA板卡?最多2块?能设置大于2的值吗?
答:MAX_SCI_NUMS是代表的是一个系统中最多能接受几块NSA板卡,也可以支持大于2块的NSA卡,设置为2只是我们的一个示例。
32、crosslink能否设置一对多的关系,就是说我一个物理口进来、多个物理口出去(复制),或者多个物理口进来、一个物理口出去(汇聚)是否可以?
答:可以。
33、ssn是否可以指定某个会话路由到某个物理端口或者某几个物理端口?
答:可以。
34、acl的控制对象是会话还是数据包?
答:是会话。
35、NSA卡有带8个电口的规格的吗?
答:没有,NSA卡只有4个电口和4个光口、8个光口两种规格。
36、为什么我的NSA卡只能通过千M网口上网?
答:请注意看下您是否通过NSA卡的光口在上网,因为光口只支持千M上网。
37、在没有配置crosslink之前,NSA卡对TCP、UDP之外的数据包,默认的处理规则是什么?
答:对于pppoE数据包和分片数据包、畸形包,NSA卡默认的处理动作是上交CPU。其他报文,NSA卡默认丢弃。
38、在会话表中的CauseID表示了数据包上交的原因,具体总结如下:
0x10 -> 首包。
0x11 -> 会话表中为Host。
0x12 -> 会话表中为Mirror。
0x20 -> 未命中会话表的TCP/UDP报文。
特别解释如下:
1、对于所有的UDP数据包,如果没有命中SSN表相的话,CauseID=0x10;
2、对于TCP数据包,如果是SYN包,CauseID=0x10;如果是FIN或RST包,如果命中SSN表相的话,不管SSN表相的处理动作是什么,CauseID=0x11,如果没有命中SSN,CauseID=0x20.
| Associated Item | Comment |
|---|---|
| No Associated Items Found | |
| Version | Author | Last Modified | Score | Hits | Diff |
|---|---|---|---|---|---|
| #14 | 志伟 闫 | 2009-07-02 18:33:22 | 0 | 123 | Show diff |
| #13 | 志伟 闫 | 2009-03-31 18:07:53 | 0 | 96 | Show diff |
| #12 | 志伟 闫 | 2009-03-10 18:10:42 | 0 | 30 | Show diff |
| #11 | 志伟 闫 | 2009-03-10 17:41:05 | 0 | 28 | Show diff |
| #10 | Ricardo Chen | 2009-03-09 11:41:21 | 0 | 29 | Show diff |
| #9 | Ricardo Chen | 2009-03-09 11:37:22 | 0 | 22 | Show diff |
| #8 | Ricardo Chen | 2009-03-09 11:36:13 | 0 | 27 | Show diff |
| #7 | Ricardo Chen | 2009-03-09 11:35:20 | 0 | 26 | Show diff |
| #6 | 志伟 闫 | 2009-03-06 19:09:34 | 0 | 24 | Show diff |
| #4 | 志伟 闫 | 2009-03-06 19:05:15 | 0 | 25 | Show diff |
| #3 | 志伟 闫 | 2009-03-06 12:36:14 | 0 | 24 | Show diff |
| #2 | 志伟 闫 | 2009-02-21 11:36:16 | 0 | 38 | Show diff |
| #1 | 志伟 闫 | 2009-02-21 10:30:36 | 0 | 31 | |

