镜像源
- select_all:布尔类型(true,false)。设置为 true 时,表示此网桥上的所有流量。
- select_dst_port:字符串(端口名称)。表示此端口接收的所有流量。
- select_src_port:字符串(端口名称)。表示此端口发送的所有流量。
- select_vlan:整形(1-4096)。表示携带此VLAN标签的流量。
镜像目的
- output_port:字符串(端口名称)。接收流量报文的观察端口。
- output_vlan:整形(1-4096)。表示只修改VLAN标签,原VLAN标签会被剥离。
镜像命令说明
ovs-vsctl -- --id=@m create mirror name=mirror0 -- add bridge br0 mirrors @m
ovs-vsctl set mirror mirror0 output_port=93fe199f-76b5-4361-8f4d-c769f34329ee
ovs-vsctl add Mirror <mirror-name> select_src_port <port-id>
ovs-vsctl add Mirror <mirror-name> select_dst_port <port-id>
ovs-vsctl set mirror mirror0 select_all=1
ovs-vsctl set mirror mirror0 select_all=0
# 获取端口的ID
ovs-vsctl get port <port_name> _uuid
ovs-vsctl remove Mirror <mirror-name> select_src_port <port-id>
ovs-vsctl remove Mirror <mirror-name> select_dst_port <port-id>
ovs-vsctl list Mirror
删除端口镜像
ovs-vsctl remove Bridge <bridge-name> mirrors <mirror-id>
试验环境
host 172.16.0.100上的br-int上端口信息
ovs-vsctl show
70bf1caa-538e-463f-8ea6-e982dad9a799
Bridge br-int
Port br-int
Interface br-int
type: internal
Port "tap2"
Interface "tap2"
type: internal
Port "tap3"
Interface "tap3"
type: internal
Port "tap1"
Interface "tap1"
type: internal
Port patch-int
Interface patch-int
type: patch
options: {peer=patch-tun}
Bridge br-tun
Port br-tun
Interface br-tun
type: internal
Port "vxlan0"
Interface "vxlan0"
type: vxlan
options: {key="100", remote_ip="172.16.1.75"}
Port patch-tun
Interface patch-tun
type: patch
options: {peer=patch-int}
ovs_version: "2.0.0"
镜像信息
目的端口为tap2,把源端口tap1的入和出流量全部镜像到tap2口
ovs-vsctl list mirror
_uuid : a564812f-9163-4f42-add5-39a300ccfb9e
external_ids : {}
name : "mirror0"
output_port : 93fe199f-76b5-4361-8f4d-c769f34329ee
output_vlan : []
select_all : false
select_dst_port : [ee34b776-7b0b-4d58-a651-71cc05debf52]
select_src_port : [ee34b776-7b0b-4d58-a651-71cc05debf52]
select_vlan : []
statistics : {tx_bytes=233864, tx_packets=2388}
[root@p57093v weiyanhua]# ovs-vsctl get port tap1 _uuid
ee34b776-7b0b-4d58-a651-71cc05debf52
[root@p57093v weiyanhua]# ovs-vsctl get port tap2 _uuid
93fe199f-76b5-4361-8f4d-c769f34329ee
[root@p57093v weiyanhua]# ovs-vsctl get port tap3 _uuid
9d151a7b-5e17-456f-9fd4-a4705784e245
试验验证
在ns2中的tap2口抓包
试验发现的问题
1.从patch口到tap1口的流量镜像不出来,但是从tap1口到patch口的流量可以镜像出来。即使使能了ovs-vsctl set mirror mirror0 select_all=1也镜像不到patch口到tap1口的流量。
2.同一个br桥上的两个tap口交互的流量,通过设置select_all=1或者 select_src_port <port-id> 加上select_dst_port <port-id>就可以镜像到出入的所有流量