searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

计算节点OVS工具介绍

2023-10-08 02:25:31
191
0
  1. 基本工具

    1. ovs-vsctl

1.1.1添加

添加桥

ovs-vsctl add-br br0 -- set bridge br0 datapath_typ=netdev

添加普通端口

ovs-vsctl add-port br0 ens3f0

添加vxlan

ovs-vsctl add-port br0 vxlan1 -- set interface vxlan1 type=vxlan options:key=flow options:local_ip=10.1.1.11 options:remote_ip=flow

添加dpdk物理口

ovs-vsctl add-port br0 nic2 -- set interface nic2 type=dpdkbond0 options:dpdk-devargs="0000:96:00.0"

添加dpdk虚机口

ovs-vsctl add-port br0 vhu3 -- set interface vhu3 type=dpdkvhostuserclient options:vhost-server-path="/var/run/openvswitch/vhu3"

添加bond

ovs-vsctl add-bond br0 dpdkbond0 nic1 nic2 -- set interface nic1 type=dpdk options:dpdk-devargs="0000:32:00.0" -- set interface nic2 type=dpdk options:dpdk-devargs="0000:98:00.0"

添加控制器

ovs-vsctl set-controller br0 "tcp:10.4.8.45:6633"

ovs-vsctl set-controller br0 "tcp:10.4.8.45:6633" "tcp:10.4.8.46:6633"

添加Manager

ovs-vsctl set-manager "ptcp:8890"

添加dpdk-init

ovs-vsctl add Open_vSwitch . other_config dpdk-init="true"

添加dpdk-socket-mem(重启生效)

ovs-vsctl add Open_vSwitch . other_config dpdk-socket-mem=’"4096,4096"’

添加pmd-cpu-mask

ovs-vsctl add Open_vSwitch . other_config pmd-cpu-mask="3ffc000000"

 

1.1.2 删除

删除端口

ovs-vsctl del-port [br0] ens3f0

删除桥

ovs-vsctl del-br br0

删除控制器

ovs-vsctl del-controller br0

删除Manager

ovs-vsctl del-manager

 

1.1.3修改

修改dpdk端口mtu

ovs-vsctl set interface nic1 mtu_request=9000

修改fail mode

ovs-vsctl set-fail-mode br0 secure

修改桥的datapath_type

ovs-vsctl set bridge br0 datapath_typ=netdev

修改bond模式

ovs-vsctl set port dpdkbond0 bond-mode=balance-tcp

修改lacp

ovs-vsctl set port dpdkbond0 lacp=active

修改dpdk-init

ovs-vsctl set Open_vSwitch . other_config:dpdk-init="true"

修改dpdk-socket-mem

ovs-vsctl set Open_vSwitch . other_config:dpdk-socket-mem="4096,4096"

修改pmd-cpu-mask

ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask="3ffc000000"

 

1.1.4查询

查询桥基本情况

ovs-vsctl show

 

查询ovs总体配置

ovs-vsctl list Open_vSwitch

 

查看桥具体信息

ovs-vsctl list bridge br-int

 

查看port具体信息

ovs-vsctl list port dpdkbond0

 

查看interface具体信息

ovs-vsctl list interface vhu2

查看controller具体信息

ovs-vsctl list controller

 

    1. ovs-ofctl

查询所有流表

ovs-ofctl -Oopenflow15 dump-flows br-int

按照条件查询流表

ovs-ofctl -Oopenflow15 dump-flows br-int table=200

ovs-ofctl -Oopenflow15 dump-flows br-int reg5=0x77103

ovs-ofctl -Oopenflow15 dump-flows br-int table=140,reg5=0x77103

ovs-ofctl -Oopenflow15 dump-flows br-int out_port=vxlan1

ovs-ofctl -Oopenflow15 dump-flows br-int out_group=100

ovs-ofctl -Oopenflow15 dump-flows br-int ipv6

ovs-ofctl -Oopenflow15 dump-flows br-int dl_dst=fe:80:3e:00:00:02

 

查询所有流表个数

ovs-ofctl -Oopenflow15 dump-aggregate br-int

按照条件查询流表个数

ovs-ofctl -Oopenflow15 dump-aggregate br-int table=140

ovs-ofctl -Oopenflow15 dump-aggregate br-int reg5=0x77103

ovs-ofctl -Oopenflow15 dump-aggregate br-int table=140,reg5=0x77103

ovs-ofctl -Oopenflow15 dump-aggregate br-int out_port=vxlan1

ovs-ofctl -Oopenflow15 dump-aggregate br-int out_group=100

ovs-ofctl -Oopenflow15 dump-aggregate br-int dl_dst=fe:80:3e:00:00:02

ovs-ofctl -Oopenflow15 dump-aggregate br-int ipv6

查询组表

ovs-ofctl -Oopenflow15 dump-groups br-int

查询组表状态

ovs-ofctl -Oopenflow15 dump-group-stats br-int 

查询meter

ovs-ofctl -Oopenflow15 dump-meters br-int

查询meter表状态

ovs-ofctl -Oopenflow15 meter-stats br-int

查询ct-limit

ovs-ofctl -Oopenflow15 dump-ct-limit br-int

查看所有port状态

ovs-ofctl -Oopenflow15 show br-int

1.3 ovs-appctl

查看支持的命令

ovs-appctl list-commands

查看bond状态

ovs-appctl bond/show

查看所有openflow流表包含隐藏流表

ovs-appctl bridge/dump-flows br-int

查看ovs最大会话数

ovs-appctl dpctl/ct-get-maxconns

查看ovs当前会话数

ovs-appctl dpctl/ct-get-nconns

查看所有会话

ovs-appctl dpctl/dump-conntrack

查看ct-limit使用情况

ovs-appctl dpctl/dump-ct-limits

查看datapath流表

ovs-appctl dpctl/dump-flows

查看分片报文情况

ovs-appctl dpctl/ipf-get-status

查看端口datapatch配置

ovs-appctl dpctl/show

查看端口报文计数

ovs-appctl dpctl/show -s

查看pmd状态

ovs-appctl dpif-netdev/pmd-perf-show

ovs-appctl dpif-netdev/pmd-rxq-show

ovs-appctl dpif-netdev/pmd-stats-show

查看openflow端口port number datapath port number

ovs-appctl dpif/show

查看lacp状态

ovs-appctl lacp/show

ovs-appctl lacp/show-stats

查看mempool

ovs-appctl netdev-dpdk/get-mempool-info

Down/up dpdk网卡

ovs-appctl netdev-dpdk/set-admin-state nic1 down|up

查看ovs路由表

ovs-appctl ovs/route/show

查看ovs mac

ovs-appctl tnl/arp/show

ovs-appctl tnl/neigh/show

查看upcall信息

ovs-appctl upcall/show

 

流表追踪

ofproto/trace {[dp_name] odp_flow | bridge br_flow} [OPTIONS...] [-generate|packet]

ovs-appctl ofproto/trace br-int "in_port=port-g3wilui20m" "fa163e313c83fa163e5350da080045000034263c40004006ff6dc0a80075a9fea9feca26161de4ed37bd5481615c801001f54a6600000101080a5cbc9d8521f04649"

带状态的流表追踪

vxlan口进行流表追踪,需要添加tun_id信息,tun_id信息可以从bond口抓包查看到vni值,或者从datapath流表中获取到tun_id。在添加tun_id信息的时候,不能用报文16进制码进行流表追踪,只能指定报文特性信息进行追踪。报文特性信息可以先不添加tun_id,用16进程码进行流表追踪,追踪结果最下面的内容就是报文特性信息,将报文特征信息复制出来,然后添加tun_id信息就可以追踪到正确的流表信息了。

ovs-appctl ofproto/trace br-int tun_id=0x9eb27,tcp,in_port=vxlan1,vlan_tci=0x0000,dl_src=fa:16:3e:f3:6d:cc,dl_dst=fa:16:3e:cb:4b:b7,nw_src=192.168.0.88,nw_dst=192.168.0.92,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=9001,tp_dst=59118 --ct-next "trk,est"

 

  1. 抓包工具

Ovs-dpdk环境下抓包工具主要是ovs-tcpdump,其本质调用的是内核tcpdump抓包工具,可一定程度参考tcpdump的使用方法。

tcpdump --help

    1. dpdkbond0口抓包

抓包如果有vlan,过滤报文的时候需要加vlan

vxlan报文

ovs-tcpdump -i dpdkbond0 -nne vlan and udp and port 4789

ovs-tcpdump -i dpdkbond0 -nne udp and port 4789

lacp报文

ovs-tcpdump -i dpdkbond0 -e ether proto 0x8809

 

按照vxlan内层报文信息过滤抓包

可以参考数据面工具中的cn-vxdump工具,该工具封装了内层报文过滤的方式。

 

 

示例:根据内层源mac4层协议类型抓包

ovs-tcpdump -i dpdkbond0 udp and udp[$((8+8+6+2)):4] = 0x3a99130c and udp[$((8+8+14+9)):1] = 6 -nne

 

    1. vxlan口抓包

ovs-tcpdump -i vxlan1 -nne host 192.168.0.99 and port 9001

    1. 虚机口抓包

ovs-tcpdump -i port-f85vg9n7sq -nne tcp

 

2.4抓包写入文件

ovs-tcpdump -i port-f85vg9n7sq -nne tcp -w 6.pcap

2.5解析报文

ovs-tcpdump抓到的报文可以拷贝出来直接用wireshark打开查看,也可以用命令来解析。

ovs-pcap 将报文解析成16进制,该命令在上述流表追踪中可以用到。

ovs-pcap icmp.pcap

tcpdump -r icmp.pcap -nne 将报文信息打印出来。

 

  1. ovs状态检查

如果可以获取到ovs-vaild-check工具,可以先用跑一下这个工具,如果没有,可以按照以下步骤排查基本问题。

3.1检查ovs进程状态

ps -ef | grep ovs

正常情况下,ovs具有ovsdb-serverovs-vswitchd两个进程。这个两个进程多了或者少了,进程状态都出现问题了

3.2 检查ovs基本配置

ovs-vsctl show

桥上端口没有error报错,有vxlan,有物理口。

 

3.3 检查物理口连接状态

ovs-appctl bond/show

3.4 检查虚机口link状态

ovs-vsctl list interfac port-rf0qb51w95

0条评论
0 / 1000
杨****昌
3文章数
1粉丝数
杨****昌
3 文章 | 1 粉丝
杨****昌
3文章数
1粉丝数
杨****昌
3 文章 | 1 粉丝
原创

计算节点OVS工具介绍

2023-10-08 02:25:31
191
0
  1. 基本工具

    1. ovs-vsctl

1.1.1添加

添加桥

ovs-vsctl add-br br0 -- set bridge br0 datapath_typ=netdev

添加普通端口

ovs-vsctl add-port br0 ens3f0

添加vxlan

ovs-vsctl add-port br0 vxlan1 -- set interface vxlan1 type=vxlan options:key=flow options:local_ip=10.1.1.11 options:remote_ip=flow

添加dpdk物理口

ovs-vsctl add-port br0 nic2 -- set interface nic2 type=dpdkbond0 options:dpdk-devargs="0000:96:00.0"

添加dpdk虚机口

ovs-vsctl add-port br0 vhu3 -- set interface vhu3 type=dpdkvhostuserclient options:vhost-server-path="/var/run/openvswitch/vhu3"

添加bond

ovs-vsctl add-bond br0 dpdkbond0 nic1 nic2 -- set interface nic1 type=dpdk options:dpdk-devargs="0000:32:00.0" -- set interface nic2 type=dpdk options:dpdk-devargs="0000:98:00.0"

添加控制器

ovs-vsctl set-controller br0 "tcp:10.4.8.45:6633"

ovs-vsctl set-controller br0 "tcp:10.4.8.45:6633" "tcp:10.4.8.46:6633"

添加Manager

ovs-vsctl set-manager "ptcp:8890"

添加dpdk-init

ovs-vsctl add Open_vSwitch . other_config dpdk-init="true"

添加dpdk-socket-mem(重启生效)

ovs-vsctl add Open_vSwitch . other_config dpdk-socket-mem=’"4096,4096"’

添加pmd-cpu-mask

ovs-vsctl add Open_vSwitch . other_config pmd-cpu-mask="3ffc000000"

 

1.1.2 删除

删除端口

ovs-vsctl del-port [br0] ens3f0

删除桥

ovs-vsctl del-br br0

删除控制器

ovs-vsctl del-controller br0

删除Manager

ovs-vsctl del-manager

 

1.1.3修改

修改dpdk端口mtu

ovs-vsctl set interface nic1 mtu_request=9000

修改fail mode

ovs-vsctl set-fail-mode br0 secure

修改桥的datapath_type

ovs-vsctl set bridge br0 datapath_typ=netdev

修改bond模式

ovs-vsctl set port dpdkbond0 bond-mode=balance-tcp

修改lacp

ovs-vsctl set port dpdkbond0 lacp=active

修改dpdk-init

ovs-vsctl set Open_vSwitch . other_config:dpdk-init="true"

修改dpdk-socket-mem

ovs-vsctl set Open_vSwitch . other_config:dpdk-socket-mem="4096,4096"

修改pmd-cpu-mask

ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask="3ffc000000"

 

1.1.4查询

查询桥基本情况

ovs-vsctl show

 

查询ovs总体配置

ovs-vsctl list Open_vSwitch

 

查看桥具体信息

ovs-vsctl list bridge br-int

 

查看port具体信息

ovs-vsctl list port dpdkbond0

 

查看interface具体信息

ovs-vsctl list interface vhu2

查看controller具体信息

ovs-vsctl list controller

 

    1. ovs-ofctl

查询所有流表

ovs-ofctl -Oopenflow15 dump-flows br-int

按照条件查询流表

ovs-ofctl -Oopenflow15 dump-flows br-int table=200

ovs-ofctl -Oopenflow15 dump-flows br-int reg5=0x77103

ovs-ofctl -Oopenflow15 dump-flows br-int table=140,reg5=0x77103

ovs-ofctl -Oopenflow15 dump-flows br-int out_port=vxlan1

ovs-ofctl -Oopenflow15 dump-flows br-int out_group=100

ovs-ofctl -Oopenflow15 dump-flows br-int ipv6

ovs-ofctl -Oopenflow15 dump-flows br-int dl_dst=fe:80:3e:00:00:02

 

查询所有流表个数

ovs-ofctl -Oopenflow15 dump-aggregate br-int

按照条件查询流表个数

ovs-ofctl -Oopenflow15 dump-aggregate br-int table=140

ovs-ofctl -Oopenflow15 dump-aggregate br-int reg5=0x77103

ovs-ofctl -Oopenflow15 dump-aggregate br-int table=140,reg5=0x77103

ovs-ofctl -Oopenflow15 dump-aggregate br-int out_port=vxlan1

ovs-ofctl -Oopenflow15 dump-aggregate br-int out_group=100

ovs-ofctl -Oopenflow15 dump-aggregate br-int dl_dst=fe:80:3e:00:00:02

ovs-ofctl -Oopenflow15 dump-aggregate br-int ipv6

查询组表

ovs-ofctl -Oopenflow15 dump-groups br-int

查询组表状态

ovs-ofctl -Oopenflow15 dump-group-stats br-int 

查询meter

ovs-ofctl -Oopenflow15 dump-meters br-int

查询meter表状态

ovs-ofctl -Oopenflow15 meter-stats br-int

查询ct-limit

ovs-ofctl -Oopenflow15 dump-ct-limit br-int

查看所有port状态

ovs-ofctl -Oopenflow15 show br-int

1.3 ovs-appctl

查看支持的命令

ovs-appctl list-commands

查看bond状态

ovs-appctl bond/show

查看所有openflow流表包含隐藏流表

ovs-appctl bridge/dump-flows br-int

查看ovs最大会话数

ovs-appctl dpctl/ct-get-maxconns

查看ovs当前会话数

ovs-appctl dpctl/ct-get-nconns

查看所有会话

ovs-appctl dpctl/dump-conntrack

查看ct-limit使用情况

ovs-appctl dpctl/dump-ct-limits

查看datapath流表

ovs-appctl dpctl/dump-flows

查看分片报文情况

ovs-appctl dpctl/ipf-get-status

查看端口datapatch配置

ovs-appctl dpctl/show

查看端口报文计数

ovs-appctl dpctl/show -s

查看pmd状态

ovs-appctl dpif-netdev/pmd-perf-show

ovs-appctl dpif-netdev/pmd-rxq-show

ovs-appctl dpif-netdev/pmd-stats-show

查看openflow端口port number datapath port number

ovs-appctl dpif/show

查看lacp状态

ovs-appctl lacp/show

ovs-appctl lacp/show-stats

查看mempool

ovs-appctl netdev-dpdk/get-mempool-info

Down/up dpdk网卡

ovs-appctl netdev-dpdk/set-admin-state nic1 down|up

查看ovs路由表

ovs-appctl ovs/route/show

查看ovs mac

ovs-appctl tnl/arp/show

ovs-appctl tnl/neigh/show

查看upcall信息

ovs-appctl upcall/show

 

流表追踪

ofproto/trace {[dp_name] odp_flow | bridge br_flow} [OPTIONS...] [-generate|packet]

ovs-appctl ofproto/trace br-int "in_port=port-g3wilui20m" "fa163e313c83fa163e5350da080045000034263c40004006ff6dc0a80075a9fea9feca26161de4ed37bd5481615c801001f54a6600000101080a5cbc9d8521f04649"

带状态的流表追踪

vxlan口进行流表追踪,需要添加tun_id信息,tun_id信息可以从bond口抓包查看到vni值,或者从datapath流表中获取到tun_id。在添加tun_id信息的时候,不能用报文16进制码进行流表追踪,只能指定报文特性信息进行追踪。报文特性信息可以先不添加tun_id,用16进程码进行流表追踪,追踪结果最下面的内容就是报文特性信息,将报文特征信息复制出来,然后添加tun_id信息就可以追踪到正确的流表信息了。

ovs-appctl ofproto/trace br-int tun_id=0x9eb27,tcp,in_port=vxlan1,vlan_tci=0x0000,dl_src=fa:16:3e:f3:6d:cc,dl_dst=fa:16:3e:cb:4b:b7,nw_src=192.168.0.88,nw_dst=192.168.0.92,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=9001,tp_dst=59118 --ct-next "trk,est"

 

  1. 抓包工具

Ovs-dpdk环境下抓包工具主要是ovs-tcpdump,其本质调用的是内核tcpdump抓包工具,可一定程度参考tcpdump的使用方法。

tcpdump --help

    1. dpdkbond0口抓包

抓包如果有vlan,过滤报文的时候需要加vlan

vxlan报文

ovs-tcpdump -i dpdkbond0 -nne vlan and udp and port 4789

ovs-tcpdump -i dpdkbond0 -nne udp and port 4789

lacp报文

ovs-tcpdump -i dpdkbond0 -e ether proto 0x8809

 

按照vxlan内层报文信息过滤抓包

可以参考数据面工具中的cn-vxdump工具,该工具封装了内层报文过滤的方式。

 

 

示例:根据内层源mac4层协议类型抓包

ovs-tcpdump -i dpdkbond0 udp and udp[$((8+8+6+2)):4] = 0x3a99130c and udp[$((8+8+14+9)):1] = 6 -nne

 

    1. vxlan口抓包

ovs-tcpdump -i vxlan1 -nne host 192.168.0.99 and port 9001

    1. 虚机口抓包

ovs-tcpdump -i port-f85vg9n7sq -nne tcp

 

2.4抓包写入文件

ovs-tcpdump -i port-f85vg9n7sq -nne tcp -w 6.pcap

2.5解析报文

ovs-tcpdump抓到的报文可以拷贝出来直接用wireshark打开查看,也可以用命令来解析。

ovs-pcap 将报文解析成16进制,该命令在上述流表追踪中可以用到。

ovs-pcap icmp.pcap

tcpdump -r icmp.pcap -nne 将报文信息打印出来。

 

  1. ovs状态检查

如果可以获取到ovs-vaild-check工具,可以先用跑一下这个工具,如果没有,可以按照以下步骤排查基本问题。

3.1检查ovs进程状态

ps -ef | grep ovs

正常情况下,ovs具有ovsdb-serverovs-vswitchd两个进程。这个两个进程多了或者少了,进程状态都出现问题了

3.2 检查ovs基本配置

ovs-vsctl show

桥上端口没有error报错,有vxlan,有物理口。

 

3.3 检查物理口连接状态

ovs-appctl bond/show

3.4 检查虚机口link状态

ovs-vsctl list interfac port-rf0qb51w95

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
1
0