运行./run_switchd.sh -p <program_name>
或者./run_switchd.sh -p <program_name> --arch=tf
可以进入bf_shell
控制面操作
up需要的端口
需要注意的是 这里的端口是与实际接线有关的 如果不确定的话需要去机房实地考察接线情况或者咨询网管
另外以下所有交互界面使用?都可以获得一定的帮助:
使用如下命令可以查看目前的端口联通情况:
1
2
3bfshell> ucli
bfsde> pm
bfsde.pm> show
在
bfsde.pm>
界面使用如下命令可以配置端口的开启和关闭:端口开启:
port add <conn_id/chnl> <speed> <fec>
这里的fec可以选RS/NONE/FC;哪一个能用用哪一个port enb <conn_id/chnl>
端口开启的例子(比如13口开100G;因为是100G所以只能13/0):
port-add 13/0 100G RS
port-enb 13/0
show
(多次 如果正常的话OPR那一栏会从DWN变成UP)
端口关闭例子:
port-dis 13/0
这个对应于enb指令port-del 13/0
bfsde.pm>
可以通过..
退到bfsde>
;
控制面下表
手动下表案例
需要注意的是 并不是物理上的13口就意味着形如:
ig_intr_tm_md.ucast_egress_port = port;
这条命令中的port为13;
事实上,需要在bfsde.pm>
中使用show -a
进行确认:
1 | ------+----+---+----+-------+----+--+--+---+---+---+--------+----------------+----------------+- |
比如这里应该是28;
在bfshell
输入bfrt_python
可以下类似于如下的表项:
对应14口
1 | bfrt.aplusb.pipe.SwitchIngress.ipv4_lpm.add_with_ipv4_forward(hdr_ipv4_dstAddr="192.168.42.8",dstAddr="10:70:fd:00:d8:ac",port=20) |
对应13口:
1 | bfrt.aplusb.pipe.SwitchIngress.ipv4_lpm.add_with_ipv4_forward(hdr_ipv4_dstAddr="192.168.42.7",dstAddr="10:70:fd:00:da:cc",port=28) |
python下表
debug 抓包操作 snapshot
能够在交换机控制面装多个”钩子“,并且打印符合”钩子“要求的第一个数据包经 过的时候的stage信息;
snap-create -d 0 -p 0xFFFF -s 0 -e 11 -i 0
-s 0 -e 11
表示从第0个stage到第11个stage的信息
snap-ig-mode-set -h 0xff581 -m 1
- 这里的
0xff581
来自于第一条的输出;相当于一个handler
- 这里的
snap-trig-add -h 0xff581 -n hdr_ipv4_dstAddr -v 0 -m 0
- 这是用于匹配的规则;这里表示监视
hdr_ipv4_dstAddr
这个信息,-v表示 值,-m表示掩码;值掩码符合要求的时候发生命中 - 这种规则可以有多条
- 这是用于匹配的规则;这里表示监视
snap-state-set -h 0xff581 -e 1
- 表示启用
0xff581
这个监视器
- 表示启用
snap-capture-get -h 0xff581 -p 0
- 打印信息;这个时候直接打印是啥都没有的;只有符合条件的第一个包经 过交换机才能抓到东西(可以打印每一个stage的匹配情况)