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 |