d629b7b5fe
Fix spelling errors in the guide docs. Signed-off-by: John McNamara <john.mcnamara@intel.com> Acked-by: Rami Rosen <ramirose@gmail.com>
687 lines
15 KiB
ReStructuredText
687 lines
15 KiB
ReStructuredText
.. SPDX-License-Identifier: BSD-3-Clause
|
|
Copyright(c) 2016 Intel Corporation.
|
|
|
|
Live Migration of VM with SR-IOV VF
|
|
===================================
|
|
|
|
Overview
|
|
--------
|
|
|
|
It is not possible to migrate a Virtual Machine which has an SR-IOV Virtual Function (VF).
|
|
|
|
To get around this problem the bonding PMD is used.
|
|
|
|
The following sections show an example of how to do this.
|
|
|
|
Test Setup
|
|
----------
|
|
|
|
A bonded device is created in the VM.
|
|
The virtio and VF PMD's are added as slaves to the bonded device.
|
|
The VF is set as the primary slave of the bonded device.
|
|
|
|
A bridge must be set up on the Host connecting the tap device, which is the
|
|
backend of the Virtio device and the Physical Function (PF) device.
|
|
|
|
To test the Live Migration two servers with identical operating systems installed are used.
|
|
KVM and Qemu 2.3 is also required on the servers.
|
|
|
|
In this example, the servers have Niantic and or Fortville NIC's installed.
|
|
The NIC's on both servers are connected to a switch
|
|
which is also connected to the traffic generator.
|
|
|
|
The switch is configured to broadcast traffic on all the NIC ports.
|
|
A :ref:`Sample switch configuration <lm_bond_virtio_sriov_switch_conf>`
|
|
can be found in this section.
|
|
|
|
The host is running the Kernel PF driver (ixgbe or i40e).
|
|
|
|
The ip address of host_server_1 is 10.237.212.46
|
|
|
|
The ip address of host_server_2 is 10.237.212.131
|
|
|
|
.. _figure_lm_bond_virtio_sriov:
|
|
|
|
.. figure:: img/lm_bond_virtio_sriov.*
|
|
|
|
Live Migration steps
|
|
--------------------
|
|
|
|
The sample scripts mentioned in the steps below can be found in the
|
|
:ref:`Sample host scripts <lm_bond_virtio_sriov_host_scripts>` and
|
|
:ref:`Sample VM scripts <lm_bond_virtio_sriov_vm_scripts>` sections.
|
|
|
|
On host_server_1: Terminal 1
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
.. code-block:: console
|
|
|
|
cd /root/dpdk/host_scripts
|
|
./setup_vf_on_212_46.sh
|
|
|
|
For Fortville NIC
|
|
|
|
.. code-block:: console
|
|
|
|
./vm_virtio_vf_i40e_212_46.sh
|
|
|
|
For Niantic NIC
|
|
|
|
.. code-block:: console
|
|
|
|
./vm_virtio_vf_one_212_46.sh
|
|
|
|
On host_server_1: Terminal 2
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
.. code-block:: console
|
|
|
|
cd /root/dpdk/host_scripts
|
|
./setup_bridge_on_212_46.sh
|
|
./connect_to_qemu_mon_on_host.sh
|
|
(qemu)
|
|
|
|
On host_server_1: Terminal 1
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
**In VM on host_server_1:**
|
|
|
|
.. code-block:: console
|
|
|
|
cd /root/dpdk/vm_scripts
|
|
./setup_dpdk_in_vm.sh
|
|
./run_testpmd_bonding_in_vm.sh
|
|
|
|
testpmd> show port info all
|
|
|
|
The ``mac_addr`` command only works with kernel PF for Niantic
|
|
|
|
.. code-block:: console
|
|
|
|
testpmd> mac_addr add port 1 vf 0 AA:BB:CC:DD:EE:FF
|
|
|
|
The syntax of the ``testpmd`` command is:
|
|
|
|
Create bonded device (mode) (socket).
|
|
|
|
Mode 1 is active backup.
|
|
|
|
Virtio is port 0 (P0).
|
|
|
|
VF is port 1 (P1).
|
|
|
|
Bonding is port 2 (P2).
|
|
|
|
.. code-block:: console
|
|
|
|
testpmd> create bonded device 1 0
|
|
Created new bonded device net_bond_testpmd_0 on (port 2).
|
|
testpmd> add bonding slave 0 2
|
|
testpmd> add bonding slave 1 2
|
|
testpmd> show bonding config 2
|
|
|
|
The syntax of the ``testpmd`` command is:
|
|
|
|
set bonding primary (slave id) (port id)
|
|
|
|
Set primary to P1 before starting bonding port.
|
|
|
|
.. code-block:: console
|
|
|
|
testpmd> set bonding primary 1 2
|
|
testpmd> show bonding config 2
|
|
testpmd> port start 2
|
|
Port 2: 02:09:C0:68:99:A5
|
|
Checking link statuses...
|
|
Port 0 Link Up - speed 10000 Mbps - full-duplex
|
|
Port 1 Link Up - speed 10000 Mbps - full-duplex
|
|
Port 2 Link Up - speed 10000 Mbps - full-duplex
|
|
|
|
testpmd> show bonding config 2
|
|
|
|
Primary is now P1. There are 2 active slaves.
|
|
|
|
Use P2 only for forwarding.
|
|
|
|
.. code-block:: console
|
|
|
|
testpmd> set portlist 2
|
|
testpmd> show config fwd
|
|
testpmd> set fwd mac
|
|
testpmd> start
|
|
testpmd> show bonding config 2
|
|
|
|
Primary is now P1. There are 2 active slaves.
|
|
|
|
.. code-block:: console
|
|
|
|
testpmd> show port stats all
|
|
|
|
VF traffic is seen at P1 and P2.
|
|
|
|
.. code-block:: console
|
|
|
|
testpmd> clear port stats all
|
|
testpmd> set bonding primary 0 2
|
|
testpmd> remove bonding slave 1 2
|
|
testpmd> show bonding config 2
|
|
|
|
Primary is now P0. There is 1 active slave.
|
|
|
|
.. code-block:: console
|
|
|
|
testpmd> clear port stats all
|
|
testpmd> show port stats all
|
|
|
|
No VF traffic is seen at P0 and P2, VF MAC address still present.
|
|
|
|
.. code-block:: console
|
|
|
|
testpmd> port stop 1
|
|
testpmd> port close 1
|
|
|
|
Port close should remove VF MAC address, it does not remove perm_addr.
|
|
|
|
The ``mac_addr`` command only works with the kernel PF for Niantic.
|
|
|
|
.. code-block:: console
|
|
|
|
testpmd> mac_addr remove 1 AA:BB:CC:DD:EE:FF
|
|
testpmd> port detach 1
|
|
Port '0000:00:04.0' is detached. Now total ports is 2
|
|
testpmd> show port stats all
|
|
|
|
No VF traffic is seen at P0 and P2.
|
|
|
|
On host_server_1: Terminal 2
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
.. code-block:: console
|
|
|
|
(qemu) device_del vf1
|
|
|
|
|
|
On host_server_1: Terminal 1
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
**In VM on host_server_1:**
|
|
|
|
.. code-block:: console
|
|
|
|
testpmd> show bonding config 2
|
|
|
|
Primary is now P0. There is 1 active slave.
|
|
|
|
.. code-block:: console
|
|
|
|
testpmd> show port info all
|
|
testpmd> show port stats all
|
|
|
|
On host_server_2: Terminal 1
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
.. code-block:: console
|
|
|
|
cd /root/dpdk/host_scripts
|
|
./setup_vf_on_212_131.sh
|
|
./vm_virtio_one_migrate.sh
|
|
|
|
On host_server_2: Terminal 2
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
.. code-block:: console
|
|
|
|
./setup_bridge_on_212_131.sh
|
|
./connect_to_qemu_mon_on_host.sh
|
|
(qemu) info status
|
|
VM status: paused (inmigrate)
|
|
(qemu)
|
|
|
|
On host_server_1: Terminal 2
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Check that the switch is up before migrating.
|
|
|
|
.. code-block:: console
|
|
|
|
(qemu) migrate tcp:10.237.212.131:5555
|
|
(qemu) info status
|
|
VM status: paused (postmigrate)
|
|
|
|
For the Niantic NIC.
|
|
|
|
.. code-block:: console
|
|
|
|
(qemu) info migrate
|
|
capabilities: xbzrle: off rdma-pin-all: off auto-converge: off zero-blocks: off
|
|
Migration status: completed
|
|
total time: 11834 milliseconds
|
|
downtime: 18 milliseconds
|
|
setup: 3 milliseconds
|
|
transferred ram: 389137 kbytes
|
|
throughput: 269.49 mbps
|
|
remaining ram: 0 kbytes
|
|
total ram: 1590088 kbytes
|
|
duplicate: 301620 pages
|
|
skipped: 0 pages
|
|
normal: 96433 pages
|
|
normal bytes: 385732 kbytes
|
|
dirty sync count: 2
|
|
(qemu) quit
|
|
|
|
For the Fortville NIC.
|
|
|
|
.. code-block:: console
|
|
|
|
(qemu) info migrate
|
|
capabilities: xbzrle: off rdma-pin-all: off auto-converge: off zero-blocks: off
|
|
Migration status: completed
|
|
total time: 11619 milliseconds
|
|
downtime: 5 milliseconds
|
|
setup: 7 milliseconds
|
|
transferred ram: 379699 kbytes
|
|
throughput: 267.82 mbps
|
|
remaining ram: 0 kbytes
|
|
total ram: 1590088 kbytes
|
|
duplicate: 303985 pages
|
|
skipped: 0 pages
|
|
normal: 94073 pages
|
|
normal bytes: 376292 kbytes
|
|
dirty sync count: 2
|
|
(qemu) quit
|
|
|
|
On host_server_2: Terminal 1
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
**In VM on host_server_2:**
|
|
|
|
Hit Enter key. This brings the user to the testpmd prompt.
|
|
|
|
.. code-block:: console
|
|
|
|
testpmd>
|
|
|
|
On host_server_2: Terminal 2
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
.. code-block:: console
|
|
|
|
(qemu) info status
|
|
VM status: running
|
|
|
|
For the Niantic NIC.
|
|
|
|
.. code-block:: console
|
|
|
|
(qemu) device_add pci-assign,host=06:10.0,id=vf1
|
|
|
|
For the Fortville NIC.
|
|
|
|
.. code-block:: console
|
|
|
|
(qemu) device_add pci-assign,host=03:02.0,id=vf1
|
|
|
|
On host_server_2: Terminal 1
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
**In VM on host_server_2:**
|
|
|
|
.. code-block:: console
|
|
|
|
testpmd> show port info all
|
|
testpmd> show port stats all
|
|
testpmd> show bonding config 2
|
|
testpmd> port attach 0000:00:04.0
|
|
Port 1 is attached.
|
|
Now total ports is 3
|
|
Done
|
|
|
|
testpmd> port start 1
|
|
|
|
The ``mac_addr`` command only works with the Kernel PF for Niantic.
|
|
|
|
.. code-block:: console
|
|
|
|
testpmd> mac_addr add port 1 vf 0 AA:BB:CC:DD:EE:FF
|
|
testpmd> show port stats all.
|
|
testpmd> show config fwd
|
|
testpmd> show bonding config 2
|
|
testpmd> add bonding slave 1 2
|
|
testpmd> set bonding primary 1 2
|
|
testpmd> show bonding config 2
|
|
testpmd> show port stats all
|
|
|
|
VF traffic is seen at P1 (VF) and P2 (Bonded device).
|
|
|
|
.. code-block:: console
|
|
|
|
testpmd> remove bonding slave 0 2
|
|
testpmd> show bonding config 2
|
|
testpmd> port stop 0
|
|
testpmd> port close 0
|
|
testpmd> port detach 0
|
|
Port '0000:00:03.0' is detached. Now total ports is 2
|
|
|
|
testpmd> show port info all
|
|
testpmd> show config fwd
|
|
testpmd> show port stats all
|
|
|
|
VF traffic is seen at P1 (VF) and P2 (Bonded device).
|
|
|
|
.. _lm_bond_virtio_sriov_host_scripts:
|
|
|
|
Sample host scripts
|
|
-------------------
|
|
|
|
setup_vf_on_212_46.sh
|
|
~~~~~~~~~~~~~~~~~~~~~
|
|
Set up Virtual Functions on host_server_1
|
|
|
|
.. code-block:: sh
|
|
|
|
#!/bin/sh
|
|
# This script is run on the host 10.237.212.46 to setup the VF
|
|
|
|
# set up Niantic VF
|
|
cat /sys/bus/pci/devices/0000\:09\:00.0/sriov_numvfs
|
|
echo 1 > /sys/bus/pci/devices/0000\:09\:00.0/sriov_numvfs
|
|
cat /sys/bus/pci/devices/0000\:09\:00.0/sriov_numvfs
|
|
rmmod ixgbevf
|
|
|
|
# set up Fortville VF
|
|
cat /sys/bus/pci/devices/0000\:02\:00.0/sriov_numvfs
|
|
echo 1 > /sys/bus/pci/devices/0000\:02\:00.0/sriov_numvfs
|
|
cat /sys/bus/pci/devices/0000\:02\:00.0/sriov_numvfs
|
|
rmmod i40evf
|
|
|
|
vm_virtio_vf_one_212_46.sh
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Setup Virtual Machine on host_server_1
|
|
|
|
.. code-block:: sh
|
|
|
|
#!/bin/sh
|
|
|
|
# Path to KVM tool
|
|
KVM_PATH="/usr/bin/qemu-system-x86_64"
|
|
|
|
# Guest Disk image
|
|
DISK_IMG="/home/username/disk_image/virt1_sml.disk"
|
|
|
|
# Number of guest cpus
|
|
VCPUS_NR="4"
|
|
|
|
# Memory
|
|
MEM=1536
|
|
|
|
taskset -c 1-5 $KVM_PATH \
|
|
-enable-kvm \
|
|
-m $MEM \
|
|
-smp $VCPUS_NR \
|
|
-cpu host \
|
|
-name VM1 \
|
|
-no-reboot \
|
|
-net none \
|
|
-vnc none -nographic \
|
|
-hda $DISK_IMG \
|
|
-netdev type=tap,id=net1,script=no,downscript=no,ifname=tap1 \
|
|
-device virtio-net-pci,netdev=net1,mac=CC:BB:BB:BB:BB:BB \
|
|
-device pci-assign,host=09:10.0,id=vf1 \
|
|
-monitor telnet::3333,server,nowait
|
|
|
|
setup_bridge_on_212_46.sh
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Setup bridge on host_server_1
|
|
|
|
.. code-block:: sh
|
|
|
|
#!/bin/sh
|
|
# This script is run on the host 10.237.212.46 to setup the bridge
|
|
# for the Tap device and the PF device.
|
|
# This enables traffic to go from the PF to the Tap to the Virtio PMD in the VM.
|
|
|
|
# ens3f0 is the Niantic NIC
|
|
# ens6f0 is the Fortville NIC
|
|
|
|
ifconfig ens3f0 down
|
|
ifconfig tap1 down
|
|
ifconfig ens6f0 down
|
|
ifconfig virbr0 down
|
|
|
|
brctl show virbr0
|
|
brctl addif virbr0 ens3f0
|
|
brctl addif virbr0 ens6f0
|
|
brctl addif virbr0 tap1
|
|
brctl show virbr0
|
|
|
|
ifconfig ens3f0 up
|
|
ifconfig tap1 up
|
|
ifconfig ens6f0 up
|
|
ifconfig virbr0 up
|
|
|
|
connect_to_qemu_mon_on_host.sh
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
.. code-block:: sh
|
|
|
|
#!/bin/sh
|
|
# This script is run on both hosts when the VM is up,
|
|
# to connect to the Qemu Monitor.
|
|
|
|
telnet 0 3333
|
|
|
|
setup_vf_on_212_131.sh
|
|
~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Set up Virtual Functions on host_server_2
|
|
|
|
.. code-block:: sh
|
|
|
|
#!/bin/sh
|
|
# This script is run on the host 10.237.212.131 to setup the VF
|
|
|
|
# set up Niantic VF
|
|
cat /sys/bus/pci/devices/0000\:06\:00.0/sriov_numvfs
|
|
echo 1 > /sys/bus/pci/devices/0000\:06\:00.0/sriov_numvfs
|
|
cat /sys/bus/pci/devices/0000\:06\:00.0/sriov_numvfs
|
|
rmmod ixgbevf
|
|
|
|
# set up Fortville VF
|
|
cat /sys/bus/pci/devices/0000\:03\:00.0/sriov_numvfs
|
|
echo 1 > /sys/bus/pci/devices/0000\:03\:00.0/sriov_numvfs
|
|
cat /sys/bus/pci/devices/0000\:03\:00.0/sriov_numvfs
|
|
rmmod i40evf
|
|
|
|
vm_virtio_one_migrate.sh
|
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Setup Virtual Machine on host_server_2
|
|
|
|
.. code-block:: sh
|
|
|
|
#!/bin/sh
|
|
# Start the VM on host_server_2 with the same parameters except without the VF
|
|
# parameters, as the VM on host_server_1, in migration-listen mode
|
|
# (-incoming tcp:0:5555)
|
|
|
|
# Path to KVM tool
|
|
KVM_PATH="/usr/bin/qemu-system-x86_64"
|
|
|
|
# Guest Disk image
|
|
DISK_IMG="/home/username/disk_image/virt1_sml.disk"
|
|
|
|
# Number of guest cpus
|
|
VCPUS_NR="4"
|
|
|
|
# Memory
|
|
MEM=1536
|
|
|
|
taskset -c 1-5 $KVM_PATH \
|
|
-enable-kvm \
|
|
-m $MEM \
|
|
-smp $VCPUS_NR \
|
|
-cpu host \
|
|
-name VM1 \
|
|
-no-reboot \
|
|
-net none \
|
|
-vnc none -nographic \
|
|
-hda $DISK_IMG \
|
|
-netdev type=tap,id=net1,script=no,downscript=no,ifname=tap1 \
|
|
-device virtio-net-pci,netdev=net1,mac=CC:BB:BB:BB:BB:BB \
|
|
-incoming tcp:0:5555 \
|
|
-monitor telnet::3333,server,nowait
|
|
|
|
setup_bridge_on_212_131.sh
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Setup bridge on host_server_2
|
|
|
|
.. code-block:: sh
|
|
|
|
#!/bin/sh
|
|
# This script is run on the host to setup the bridge
|
|
# for the Tap device and the PF device.
|
|
# This enables traffic to go from the PF to the Tap to the Virtio PMD in the VM.
|
|
|
|
# ens4f0 is the Niantic NIC
|
|
# ens5f0 is the Fortville NIC
|
|
|
|
ifconfig ens4f0 down
|
|
ifconfig tap1 down
|
|
ifconfig ens5f0 down
|
|
ifconfig virbr0 down
|
|
|
|
brctl show virbr0
|
|
brctl addif virbr0 ens4f0
|
|
brctl addif virbr0 ens5f0
|
|
brctl addif virbr0 tap1
|
|
brctl show virbr0
|
|
|
|
ifconfig ens4f0 up
|
|
ifconfig tap1 up
|
|
ifconfig ens5f0 up
|
|
ifconfig virbr0 up
|
|
|
|
.. _lm_bond_virtio_sriov_vm_scripts:
|
|
|
|
Sample VM scripts
|
|
-----------------
|
|
|
|
setup_dpdk_in_vm.sh
|
|
~~~~~~~~~~~~~~~~~~~
|
|
|
|
Set up DPDK in the Virtual Machine
|
|
|
|
.. code-block:: sh
|
|
|
|
#!/bin/sh
|
|
# this script matches the vm_virtio_vf_one script
|
|
# virtio port is 03
|
|
# vf port is 04
|
|
|
|
cat /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
|
|
echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
|
|
cat /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
|
|
|
|
ifconfig -a
|
|
/root/dpdk/usertools/dpdk-devbind.py --status
|
|
|
|
rmmod virtio-pci ixgbevf
|
|
|
|
modprobe uio
|
|
insmod /root/dpdk/x86_64-default-linux-gcc/kmod/igb_uio.ko
|
|
|
|
/root/dpdk/usertools/dpdk-devbind.py -b igb_uio 0000:00:03.0
|
|
/root/dpdk/usertools/dpdk-devbind.py -b igb_uio 0000:00:04.0
|
|
|
|
/root/dpdk/usertools/dpdk-devbind.py --status
|
|
|
|
run_testpmd_bonding_in_vm.sh
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Run testpmd in the Virtual Machine.
|
|
|
|
.. code-block:: sh
|
|
|
|
#!/bin/sh
|
|
# Run testpmd in the VM
|
|
|
|
# The test system has 8 cpus (0-7), use cpus 2-7 for VM
|
|
# Use taskset -pc <core number> <thread_id>
|
|
|
|
# use for bonding of virtio and vf tests in VM
|
|
|
|
/root/dpdk/x86_64-default-linux-gcc/app/testpmd \
|
|
-l 0-3 -n 4 --socket-mem 350 -- --i --port-topology=chained
|
|
|
|
.. _lm_bond_virtio_sriov_switch_conf:
|
|
|
|
Sample switch configuration
|
|
---------------------------
|
|
|
|
The Intel switch is used to connect the traffic generator to the
|
|
NIC's on host_server_1 and host_server_2.
|
|
|
|
In order to run the switch configuration two console windows are required.
|
|
|
|
Log in as root in both windows.
|
|
|
|
TestPointShared, run_switch.sh and load /root/switch_config must be executed
|
|
in the sequence below.
|
|
|
|
On Switch: Terminal 1
|
|
~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
run TestPointShared
|
|
|
|
.. code-block:: console
|
|
|
|
/usr/bin/TestPointShared
|
|
|
|
On Switch: Terminal 2
|
|
~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
execute run_switch.sh
|
|
|
|
.. code-block:: console
|
|
|
|
/root/run_switch.sh
|
|
|
|
On Switch: Terminal 1
|
|
~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
load switch configuration
|
|
|
|
.. code-block:: console
|
|
|
|
load /root/switch_config
|
|
|
|
Sample switch configuration script
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
The ``/root/switch_config`` script:
|
|
|
|
.. code-block:: sh
|
|
|
|
# TestPoint History
|
|
show port 1,5,9,13,17,21,25
|
|
set port 1,5,9,13,17,21,25 up
|
|
show port 1,5,9,13,17,21,25
|
|
del acl 1
|
|
create acl 1
|
|
create acl-port-set
|
|
create acl-port-set
|
|
add port port-set 1 0
|
|
add port port-set 5,9,13,17,21,25 1
|
|
create acl-rule 1 1
|
|
add acl-rule condition 1 1 port-set 1
|
|
add acl-rule action 1 1 redirect 1
|
|
apply acl
|
|
create vlan 1000
|
|
add vlan port 1000 1,5,9,13,17,21,25
|
|
set vlan tagging 1000 1,5,9,13,17,21,25 tag
|
|
set switch config flood_ucast fwd
|
|
show port stats all 1,5,9,13,17,21,25
|