BFShell 作为 Barefoot 开发工具链中的重要一部分,可用于与 Tofino 交换机进行交互,例如加载 P4 程序、调试数据平面或配置交换机行为,此文记录日常调试中常用命令。
1. 查看端口
1 2 3 4 5
| docker exec -it syncd /opt/bfn/install/bin/bfshell ucli
# 查看端口信息 pm show
|
2. 进 sde 查看 光模块信息
1 2 3 4 5 6 7
| docker exec -it syncd /opt/bfn/install/bin/bfshell ucli
# 读取端口1 光模块信息 bf_pltfm qsfp dump-info 1/0 bf_pltfm qsfp dump-info 20/0 bf_pltfm qsfp dump-info 35/0
|
3. 查看设备眼图信息
1
| bf-sde.bf_pltfm.rtmr> rtmr_eye_margin_show_all_chan 33 1
|
4. 端口的port-sd-show
1 2 3 4 5
| pm show info bf_pltfm qsfp oper bf_pltfm qsfp dump-info 33/0 pm port-sd-show 33/0
|
5. P4 查看 VLAN subinterface 表项
1 2 3 4
| docker exec -it syncd /opt/bfn/install/bin/bfshell bf_switch show hostif handle 2
|
34/0 |41/0|280|2/24|100G | RS |Ds|Au|YES|ENB|UP | NONE | 63753| 63735|
35/0 |42/0|276|2/20|100G | RS |Ds|Au|YES|ENB|DWN| NONE | 0| 0|
华工 100G CWDM4: port 1、2
旭创 100G CWDM4: port 17
旭创 100G CWDM4TR: port 19
海信 100G SR4: port 39
FINISAR 100G-SM-2KM+: port 40
bf-sde.pm show
6. 禁用/启用端口相关指令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| # 对比 配置值与实际值 # Compare sw/hw port cfg <dev> <pipe> <port> warm 0 0 8 warm 0 0 12 warm 0 1 52 warm 0 1 60 warm 0 2 24 warm 0 2 20
# enabled 端口 # bf_port_enable Enable a port <dev> <pipe> <port> bf_port_enable 0 0 8 bf_port_enable 0 0 12 bf_port_enable 0 1 52 bf_port_enable 0 1 60 bf_port_enable 0 2 0 bf_port_enable 0 2 4 bf_port_enable 0 2 20
# disabled 端口 # bf_port_disable Disable a port <dev> <pipe> <port> bf_port_disable 0 0 8 bf_port_disable 0 0 12 bf_port_disable 0 1 52 bf_port_disable 0 1 60 bf_port_disable 0 2 0 bf_port_disable 0 2 4 bf_port_disable 0 2 20
# bf_port_mtu_set Set MTU on a port <dev> <tx_mtu> <rx_mtu> <pipe> <port> bf_port_mtu_set 0 9000 9000 0 8
# oper 查看端口状态值 oper
# 清除端口状态 # Clear stats on <dev> <pipe> <port> bf_port_stats_clear 0 0 8
|
7. 使能端口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
| bfshell> ucli pm port-add 17/0 100G RS port-add 18/0 100G RS port-add 19/0 100G RS port-add 20/0 100G RS port-add 21/0 100G RS port-add 22/0 100G RS port-add 23/0 100G RS port-add 24/0 100G RS port-add 25/0 100G RS port-add 26/0 100G RS port-add 27/0 100G RS port-add 28/0 100G RS port-add 29/0 100G RS port-add 30/0 100G RS port-add 31/0 100G RS port-add 32/0 100G RS
port-add 33/0 100G RS port-add 34/0 100G RS port-add 35/0 100G NONE port-add 36/0 100G NONE port-add 37/0 100G NONE port-add 38/0 100G NONE port-add 39/0 100G RS port-add 40/0 100G RS port-add 41/0 100G NONE port-add 42/0 100G NONE port-add 43/0 100G NONE port-add 44/0 100G NONE port-add 45/0 100G RS port-add 46/0 100G RS port-add 47/0 100G RS port-add 48/0 100G RS port-add 49/0 100G RS port-add 50/0 100G NONE port-add 51/0 100G NONE port-add 52/0 100G NONE port-add 53/0 100G NONE port-add 54/0 100G RS port-add 55/0 100G RS port-add 56/0 100G RS port-add 57/0 100G NONE port-add 58/0 100G NONE port-add 59/0 100G NONE port-add 60/0 100G NONE port-add 61/0 100G RS port-add 62/0 100G RS port-add 63/0 100G RS port-add 64/0 100G RS
port-loopback 17/0 mac-near port-loopback 18/0 mac-near port-loopback 19/0 mac-near port-loopback 20/0 mac-near port-loopback 21/0 mac-near port-loopback 22/0 mac-near port-loopback 23/0 mac-near port-loopback 24/0 mac-near port-loopback 25/0 mac-near port-loopback 26/0 mac-near port-loopback 27/0 mac-near port-loopback 28/0 mac-near port-loopback 29/0 mac-near port-loopback 30/0 mac-near port-loopback 31/0 mac-near port-loopback 32/0 mac-near
port-enb 17/0 port-enb 18/0 port-enb 19/0 port-enb 20/0 port-enb 21/0 port-enb 22/0 port-enb 23/0 port-enb 24/0 port-enb 25/0 port-enb 26/0 port-enb 27/0 port-enb 28/0 port-enb 29/0 port-enb 30/0 port-enb 31/0 port-enb 32/0 port-enb 33/0 port-enb 34/0 port-enb 35/0 port-enb 36/0 port-enb 37/0 port-enb 38/0 port-enb 39/0 port-enb 40/0 port-enb 41/0 port-enb 42/0 port-enb 43/0 port-enb 44/0 port-enb 45/0 port-enb 46/0 port-enb 47/0 port-enb 48/0 port-enb 49/0 port-enb 50/0 port-enb 51/0 port-enb 52/0 port-enb 50/0 port-enb 51/0 port-enb 52/0 port-enb 53/0 port-enb 54/0 port-enb 55/0 port-enb 56/0 port-enb 57/0 port-enb 58/0 port-enb 59/0 port-enb 60/0 port-enb 61/0 port-enb 62/0 port-enb 63/0 port-enb 64/0
|
8. 手动 UP/DOWN 端口
bf-sde.pm> 中手动 up down 端口
ucli
pm
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| port-enb 1/0 port-enb 2/0 port-enb 17/0 port-enb 19/0 port-enb 39/0 port-enb 35/0 port-enb 40/0
port-dis 1/0 port-dis 2/0 port-dis 17/0 port-dis 19/0 port-dis 39/0 port-dis 40/0
|
9. 查看光模块厂商信息
1 2 3 4 5 6 7 8 9 10 11
| # 查看硬件 QSFP 信息 bf-sde.bf_pltfm.qsfp> info
Port Vendor PN rev Serial# code Bit Rate OUI Class Media --------------------------------------------------------------------------------------------------------------------- 1: HG GENUINE(华工 100G CWDM4) MTRQ-4CF51 00 CS20410010041 201123 25500 MBps 00:00:00 4 (3.5 W max.) (SMF): 2 km 2: HG GENUINE MTRQ-4CF51 01 3000027560048 220723 25500 MBps 00:00:00 4 (3.5 W max.) (SMF): 2 km 17: INNOLIGHT(旭创 100G CWDM4) TR-FC85S-N01 4A ICMBPR260043 221028 25500 MBps 00:00:00 3 (2.5 W max.) (Optical): 50 m (OM3): 70 m 19: INNOLIGHT(旭创 100G CWDM4TR) TR-FC13T-N00 4A INKAO4981261 20041101 25500 MBps 00:00:00 4 (3.5 W max.) (SMF): 2 km 39: Hisense(海信 100G SR4) LTA8531-PC+ 01 UPAA8000022 200801 25500 MBps 00:00:00 2 (2.0 W max.) (Optical): 50 m (OM3): 70 m 40: FINISAR CORP.(FINISAR 100G-SM-2KM+) FTLC4352RJPL A X6FARV3 211110 25500 MBps 00:00:00 6 (4.5 W max.) (SMF): 2 km
|
10. 按需下业务表项
1 2 3 4 5 6 7 8 9 10 11 12
| bfshell> bfrt_python bfrt
switch.pipe.SwitchIngress.tunnel.dst_classifyv4.add_with_local_region_hit(0x1000064,31)
switch.servicepipe1.TableServiceEgress.tunnel_rewrite.set_gw_ip.set_default_with_set_gw_src_ip(0xc0c0c01,0xc0c0c010000000000000000) switch.servicepipe1.tunnel_encap_1.add_with_encap_ipv4_vxlan(0b01,0x12b5) switch.tablepipe23.TableIngress.tunnel_match.eip_to_eid.add_with_eip_hit(1,0x1000064,0x0007,0x0007) switch.tablepipe23.TableIngress.tunnel_match.eip_info.add_with_set_eip_info(0x0007,0x0,0xC0A80003,0x0007e6,0xA000005) switch.tablepipe23.TableIngress.tunnel_match.eid_add_bridge.add_with_encap_tunnel4in4(0x0007,0) switch.tablepipe23.TableIngress.tunnel_match.eip_in_meter.add_with_set_eip_in_color(0x0007) switch.tablepipe23.TableIngress.tunnel_match.eip_in_drop.add_with_in_drop_count(0x0007)
|
11. bfshell 抓包
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| # 创建 snapshot(获取返回句柄 0x2581) snap-create -d 0 -p 2 -s 0 -e 11 -i 0
# # snap-trig-add -h 0x141 -n hdr_ipv4_dst_addr -v 0xc0a80000 -m 0x1fff0000
snap-trig-add -h 0x2581 -n local_md_ingress_port -v 0x140 -m 0x1ff
# 开启抓包 snap-state-set -h 0x2581 -e 1 # 关闭抓包 snap-state-set -h 0x2581 -e 0
# 查看抓包结果 snap-capture-get -h 0x2581
|
12. 其他常用命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| ucli
# 查看光模块DDM信息 get-ddm # Optical Module Digital Diagnostic Monitoring (DDM)
# 查看光模块信息 qsfp info #Checking what's plugged in
# 展示光模块信息 qsfp show
# 展示端口信息 pm show Port Status Report
# pipeline 管理 pipe_mgr snap-create/snap-capture-get Packet Capture
# bfrt表项管理入口 bfrt_python # 表项信息 info # 导出表项内容 dump # 添加/删除/查看表项 entry_add/delete/get
|
注: 当bfshell要执行的命令较多时,也直接传入文件执行批量命令内容
1
| /opt/bfn/install/bin/bfshell -b /root/multiple_cmds
|