dpctl 命令实践

Posted heimafeitian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dpctl 命令实践相关的知识,希望对你有一定的参考价值。

dpctl 命令实践

dpctl 程序是一个命令行工具用来检测和管理 OpenFlow 数据通路,它能够显示当前的状态数据通路,包括功能配置和表中的条目,以及合适使用 OpenFlow 的内核模块,可以用来添加,删除,修改和监视 datapaths。

查看交换机端口信息基本情况(TCP 端口 6634 是默认交换机监听端口)。

1
2
3
4
5
6
7
8
9
10
# dpctl show tcp:9.123.137.25:6634
features_reply (xid=0x94af8117): ver:0x1, dpid:1
n_tables:255, n_buffers:256
features: capabilities:0xc7, actions:0xfff
 1(s1-eth1): addr:2e:d1:ca:aa:af:67, config: 0, state:0
     current:    10GB-FD COPPER
 2(s1-eth2): addr:66:93:32:1e:9b:9e, config: 0, state:0
     current:    10GB-FD COPPER
 LOCAL(s1): addr:5e:bc:ab:cc:dc:43, config: 0x1, state:0x1
get_config_reply (xid=0x92fc9e48): miss_send_len=0

查看流表信息:

1
2
# dpctl dump-flows tcp:9.123.137.25:6634
stats_reply (xid=0xe2c7ea1e): flags=none type=1(flow)

此时,流表为空,执行 h1 ping h2 无法得到响应。因此我们需要通过 dpctl 手动添加流表项,实现转发。

手动添加流表项:

1
2
3
4
5
6
7
8
# dpctl add-flow tcp:9.123.137.25:6634 in_port=1,actions=output:2
# dpctl add-flow tcp:9.123.137.25:6634 in_port=2,actions=output:1
# dpctl dump-flows tcp:9.123.137.25:6634     
  stats_reply (xid=0x131ed782): flags=none type=1(flow)
  cookie=0, duration_sec=13s, duration_nsec=401000000s, table_id=0, priority=32768,
  n_packets=0, n_bytes=0,idle_timeout=60,hard_timeout=0,in_port=1,actions=output:2
  cookie=0, duration_sec=5s, duration_nsec=908000000s, table_id=0, priority=32768,
  n_packets=0, n_bytes=0,idle_timeout=60,hard_timeout=0,in_port=2,actions=output:1

此时查看流表可以看到新的转发信息,同时可以在 h1 和 h2 之间可以相互连通。

dpctl 其他常用操作

创建 datapath 编号为 0

1
#dpctl adddp n1:0

增加两个网络设备到新的 datapath

1
2
#dpctl adddp n1:0 eth0
#dpctl adddp n1:0 eth1

检测数据通路接收的流量

1
#dpctl monitor n1:0

在数据通路中删除网络设备

1
#dpctl delif nl:0 eth0

 

以上是关于dpctl 命令实践的主要内容,如果未能解决你的问题,请参考以下文章

dpctl 工具使用

逆向及Bof基础实践

VSCode自定义代码片段——git命令操作一个完整流程

VSCode自定义代码片段——cli的终端命令大全

VSCode自定义代码片段4——cli的终端命令大全

更新片段参数的最佳实践?