采用与交换板交互的方式配置PF/VF。

This commit is contained in:
Lu Qiuwen
2019-11-27 15:18:48 +08:00
parent a643223c88
commit cd7afe2477
18 changed files with 434 additions and 86 deletions

View File

@@ -1,28 +1,132 @@
#!/bin/bash
# set -x
CURRENT_PATH=`dirname $0`
TP_SVR=192.168.100.5
TP_PORT=10000
REMOTE_CONTROL_BIN=switch_control_client_non_block
function get_netdev_by_pci()
{
DEV_LIST=`ifconfig -a |grep flags |awk -F: '{print $1}'`
for i in ${DEV_LIST}
do
ethtool -i ${i} |grep bus-info |grep "$1" > /dev/null 2>&1
if [ $? -eq 0 ];then
TARGET=${i}
break
fi
done
echo ${TARGET}
}
function pf_setup()
{
ifconfig ens1 up
modprobe 8021q
vconfig add ens1 100
vconfig set_flag ens1.100 1 1
ifconfig ens1.100 192.168.100.1 netmask 255.255.255.0 up
sleep 1
}
echo 0 > /sys/class/net/ens1/device/sriov_numvfs
sleep 1
function vf_setup()
{
echo 8 > /sys/class/net/ens1/device/sriov_numvfs
sleep 1
sleep 5
ifconfig ens1f3 up
ip link set ens1 vf 2 vlan 200
ifconfig ens1f3 192.168.200.1 netmask 255.255.255.0
ifconfig enp8s0 up
ifconfig enp9s0 up
ifconfig ens1f1 up
ifconfig ens1f2 up
ifconfig ens1f3 up
ifconfig ens1f4 up
ifconfig ens1f5 up
ifconfig ens1f6 up
ifconfig ens1f7 up
ifconfig enp1s1 up
ifconfig ens1f1 up
ifconfig ens1f2 up
ifconfig ens1f3 up
ifconfig ens1f4 up
ifconfig ens1f5 up
ifconfig ens1f6 up
ifconfig ens1f7 up
ifconfig enp1s1 up
sleep 5
}
function bring_down_pfvf()
{
echo 0 > /sys/class/net/ens1/device/sriov_numvfs
ifconfig ens1 down
sleep 3
}
# Main loop
while :
do
FAIL_FLAG=0
# Make sure PF is valid
ping ${TP_SVR} -c 1
if [ $? -ne 0 ];then
echo "Please make sure switch board is up."
bring_down_pfvf
pf_setup
continue
fi
# Make sure TestPoint is up.
${CURRENT_PATH}/${REMOTE_CONTROL_BIN} -s ${TP_SVR} -n ${TP_PORT} -c "show version"
if [ $? -ne 0 ];then
echo "Cannot reach TestPoint!"
echo "Please make sure TestPoint is up and in remote-listen mode."
sleep 5
continue
fi
# Create VFs and get MAC addresses
vf_setup
PF=`get_netdev_by_pci 01:00.0`
VF1=`get_netdev_by_pci 01:00.1`
VF2=`get_netdev_by_pci 01:00.2`
VF3=`get_netdev_by_pci 01:00.3`
VF4=`get_netdev_by_pci 01:00.4`
VF5=`get_netdev_by_pci 01:00.5`
VF6=`get_netdev_by_pci 01:00.6`
VF7=`get_netdev_by_pci 01:00.7`
VF8=`get_netdev_by_pci 01:01.0`
MAC1=`ifconfig ${VF1} |grep ether |awk -F' ' '{print $2}'`
MAC2=`ifconfig ${VF2} |grep ether |awk -F' ' '{print $2}'`
MAC3=`ifconfig ${VF3} |grep ether |awk -F' ' '{print $2}'`
MAC4=`ifconfig ${VF4} |grep ether |awk -F' ' '{print $2}'`
MAC5=`ifconfig ${VF5} |grep ether |awk -F' ' '{print $2}'`
MAC6=`ifconfig ${VF6} |grep ether |awk -F' ' '{print $2}'`
MAC7=`ifconfig ${VF7} |grep ether |awk -F' ' '{print $2}'`
MAC8=`ifconfig ${VF8} |grep ether |awk -F' ' '{print $2}'`
MAC9=`ifconfig ${PF} |grep ether |awk -F' ' '{print $2}'`
# Make sure VFs are valid
MAC_TABLE=`${CURRENT_PATH}/${REMOTE_CONTROL_BIN} -s ${TP_SVR} -n ${TP_PORT} -c "show mac table all"`
for i in ${MAC1} ${MAC2} ${MAC3} ${MAC4} ${MAC5} ${MAC6} ${MAC7} ${MAC8} ${MAC9}
do
echo ${MAC_TABLE} |grep ${i} > /dev/null 2>&1
if [ $? -ne 0 ];then
echo "MAC ${i} is not in table!"
FAIL_FLAG=1
break
fi
done
if [ ${FAIL_FLAG} -eq 1 ];then
bring_down_pfvf
continue
fi
echo "PF/VF setup successful."
exit 0
done

View File

@@ -1,8 +0,0 @@
#!/bin/sh
systemctl stop mrzcpd
systemctl stop mrtunnat
systemctl stop mrenv
echo 0 > /sys/class/net/ens1/device/sriov_numvfs
ifconfig ens1.100 down
vconfig rem ens1.100
ifconfig ens1 down

View File

@@ -6,7 +6,6 @@ Before=mrenv.service
[Service]
ExecStart=/opt/tsg/env/setup
ExecStop=/opt/tsg/env/stop
Type=oneshot
RemainAfterExit=yes

View File

@@ -5,9 +5,9 @@
dest: "/opt/tsg/env/"
mode: 0755
- name: "copy stop script"
- name: "copy switch_control_client_non_block"
copy:
src: "{{ role_path }}/files/stop"
src: "{{ role_path }}/files/switch_control_client_non_block"
dest: "/opt/tsg/env/"
mode: 0755

View File

@@ -1,25 +1,115 @@
#!/bin/bash
# set -x
CURRENT_PATH=`dirname $0`
TP_SVR=192.168.100.5
TP_PORT=10000
REMOTE_CONTROL_BIN=switch_control_client_non_block
modprobe 8021q
function get_netdev_by_pci()
{
DEV_LIST=`ifconfig -a |grep flags |awk -F: '{print $1}'`
for i in ${DEV_LIST}
do
ethtool -i ${i} |grep bus-info |grep "$1" > /dev/null 2>&1
if [ $? -eq 0 ];then
TARGET=${i}
break
fi
done
echo ${TARGET}
}
function pf_setup()
{
ifconfig ens1 up
modprobe 8021q
vconfig add ens1 100
vconfig set_flag ens1.100 1 1
ifconfig ens1.100 192.168.100.2 netmask 255.255.255.0 up
sleep 1
}
echo 0 > /sys/class/net/ens1/device/sriov_numvfs
sleep 1
function vf_setup()
{
echo 4 > /sys/class/net/ens1/device/sriov_numvfs
sleep 1
sleep 5
ifconfig ens1f3 up
ip link set ens1 vf 2 vlan 200
ifconfig ens1f3 192.168.200.2 netmask 255.255.255.0
ifconfig enp8s0 up
ifconfig enp9s0 up
ifconfig ens1f1 up
ifconfig ens1f2 up
ifconfig ens1f3 up
ifconfig ens1f4 up
ifconfig ens1f1 up
ifconfig ens1f2 up
ifconfig ens1f3 up
ifconfig ens1f4 up
sleep 5
}
function bring_down_pfvf()
{
echo 0 > /sys/class/net/ens1/device/sriov_numvfs
ifconfig ens1 down
sleep 3
}
# Main loop
while :
do
FAIL_FLAG=0
# Make sure PF is valid
ping ${TP_SVR} -c 1
if [ $? -ne 0 ];then
echo "Please make sure switch board is up."
bring_down_pfvf
pf_setup
continue
fi
# Make sure TestPoint is up.
${CURRENT_PATH}/${REMOTE_CONTROL_BIN} -s ${TP_SVR} -n ${TP_PORT} -c "show version"
if [ $? -ne 0 ];then
echo "Cannot reach TestPoint!"
echo "Please make sure TestPoint is up and in remote-listen mode."
sleep 5
continue
fi
# Create VFs and get MAC addresses
vf_setup
PF=`get_netdev_by_pci 01:00.0`
VF1=`get_netdev_by_pci 01:00.1`
VF2=`get_netdev_by_pci 01:00.2`
VF3=`get_netdev_by_pci 01:00.3`
VF4=`get_netdev_by_pci 01:00.4`
MAC0=`ifconfig ${PF} |grep ether |awk -F' ' '{print $2}'`
MAC1=`ifconfig ${VF1} |grep ether |awk -F' ' '{print $2}'`
MAC2=`ifconfig ${VF2} |grep ether |awk -F' ' '{print $2}'`
MAC3=`ifconfig ${VF3} |grep ether |awk -F' ' '{print $2}'`
MAC4=`ifconfig ${VF4} |grep ether |awk -F' ' '{print $2}'`
# Make sure VFs are valid
MAC_TABLE=`${CURRENT_PATH}/${REMOTE_CONTROL_BIN} -s ${TP_SVR} -n ${TP_PORT} -c "show mac table all"`
for i in ${MAC0} ${MAC1} ${MAC2} ${MAC3} ${MAC4}
do
echo ${MAC_TABLE} |grep ${i} > /dev/null 2>&1
if [ $? -ne 0 ];then
echo "MAC ${i} is not in table!"
FAIL_FLAG=1
break
fi
done
if [ ${FAIL_FLAG} -eq 1 ];then
bring_down_pfvf
continue
fi
echo "PF/VF setup successful."
exit 0
done

View File

@@ -1,7 +0,0 @@
#!/bin/sh
systemctl stop mrzcpd
systemctl stop mrenv
echo 0 > /sys/class/net/ens1/device/sriov_numvfs
ifconfig ens1.100 down
vconfig rem ens1.100
ifconfig ens1 down

View File

@@ -5,9 +5,9 @@
dest: "/opt/tsg/env/"
mode: 0755
- name: "copy stop script"
- name: "copy switch_control_client_non_block"
copy:
src: "{{ role_path }}/files/stop"
src: "{{ role_path }}/files/switch_control_client_non_block"
dest: "/opt/tsg/env/"
mode: 0755

View File

@@ -1,23 +1,115 @@
#!/bin/bash
ifconfig ens8 up
# set -x
modprobe 8021q
CURRENT_PATH=`dirname $0`
TP_SVR=192.168.100.5
TP_PORT=10000
REMOTE_CONTROL_BIN=switch_control_client_non_block
modprobe 8021q
function get_netdev_by_pci()
{
DEV_LIST=`ifconfig -a |grep flags |awk -F: '{print $1}'`
for i in ${DEV_LIST}
do
ethtool -i ${i} |grep bus-info |grep "$1" > /dev/null 2>&1
if [ $? -eq 0 ];then
TARGET=${i}
break
fi
done
echo ${TARGET}
}
function pf_setup()
{
ifconfig ens8 up
vconfig add ens8 100
vconfig set_flag ens8.100 1 1
ifconfig ens8.100 192.168.100.3 netmask 255.255.255.0 up
sleep 1
}
echo 0 > /sys/class/net/ens8/device/sriov_numvfs
sleep 1
function vf_setup()
{
echo 4 > /sys/class/net/ens8/device/sriov_numvfs
sleep 1
sleep 5
ifconfig ens8f3 up
ip link set ens8 vf 2 vlan 200
ifconfig ens8f3 192.168.200.3 netmask 255.255.255.0
ifconfig enp8s0 up
ifconfig enp9s0 up
ifconfig ens8f1 up
ifconfig ens8f2 up
ifconfig ens8f3 up
ifconfig ens8f4 up
ifconfig ens8f1 up
ifconfig ens8f2 up
ifconfig ens8f3 up
ifconfig ens8f4 up
sleep 5
}
function bring_down_pfvf()
{
echo 0 > /sys/class/net/ens8/device/sriov_numvfs
ifconfig ens8 down
sleep 3
}
# Main loop
while :
do
FAIL_FLAG=0
# Make sure PF is valid
ping ${TP_SVR} -c 1
if [ $? -ne 0 ];then
echo "Please make sure switch board is up."
bring_down_pfvf
pf_setup
continue
fi
# Make sure TestPoint is up.
${CURRENT_PATH}/${REMOTE_CONTROL_BIN} -s ${TP_SVR} -n ${TP_PORT} -c "show version"
if [ $? -ne 0 ];then
echo "Cannot reach TestPoint!"
echo "Please make sure TestPoint is up and in remote-listen mode."
sleep 5
continue
fi
# Create VFs and get MAC addresses
vf_setup
PF=`get_netdev_by_pci 85:00.0`
VF1=`get_netdev_by_pci 85:00.1`
VF2=`get_netdev_by_pci 85:00.2`
VF3=`get_netdev_by_pci 85:00.3`
VF4=`get_netdev_by_pci 85:00.4`
MAC0=`ifconfig ${PF} |grep ether |awk -F' ' '{print $2}'`
MAC1=`ifconfig ${VF1} |grep ether |awk -F' ' '{print $2}'`
MAC2=`ifconfig ${VF2} |grep ether |awk -F' ' '{print $2}'`
MAC3=`ifconfig ${VF3} |grep ether |awk -F' ' '{print $2}'`
MAC4=`ifconfig ${VF4} |grep ether |awk -F' ' '{print $2}'`
# Make sure VFs are valid
MAC_TABLE=`${CURRENT_PATH}/${REMOTE_CONTROL_BIN} -s ${TP_SVR} -n ${TP_PORT} -c "show mac table all"`
for i in ${MAC0} ${MAC1} ${MAC2} ${MAC3} ${MAC4}
do
echo ${MAC_TABLE} |grep ${i} > /dev/null 2>&1
if [ $? -ne 0 ];then
echo "MAC ${i} is not in table!"
FAIL_FLAG=1
break
fi
done
if [ ${FAIL_FLAG} -eq 1 ];then
bring_down_pfvf
continue
fi
echo "PF/VF setup successful."
exit 0
done

View File

@@ -1,7 +0,0 @@
#!/bin/sh
systemctl stop mrzcpd
systemctl stop mrenv
echo 0 > /sys/class/net/ens8/device/sriov_numvfs
ifconfig ens8.100 down
vconfig rem ens8.100
ifconfig ens8 down

View File

@@ -1,5 +1,5 @@
[Unit]
Description=tsg sled-mcn2 env init
Description=tsg sled-mcn3 env init
Requires=network.target
After=network.target
Before=tfe-env.service mrenv.service

View File

@@ -5,9 +5,9 @@
dest: "/opt/tsg/env/"
mode: 0755
- name: "copy stop script"
- name: "copy switch_control_client_non_block"
copy:
src: "{{ role_path }}/files/stop"
src: "{{ role_path }}/files/switch_control_client_non_block"
dest: "/opt/tsg/env/"
mode: 0755

View File

@@ -1,23 +1,115 @@
#!/bin/bash
ifconfig ens8 up
# set -x
modprobe 8021q
CURRENT_PATH=`dirname $0`
TP_SVR=192.168.100.5
TP_PORT=10000
REMOTE_CONTROL_BIN=switch_control_client_non_block
modprobe 8021q
function get_netdev_by_pci()
{
DEV_LIST=`ifconfig -a |grep flags |awk -F: '{print $1}'`
for i in ${DEV_LIST}
do
ethtool -i ${i} |grep bus-info |grep "$1" > /dev/null 2>&1
if [ $? -eq 0 ];then
TARGET=${i}
break
fi
done
echo ${TARGET}
}
function pf_setup()
{
ifconfig ens8 up
vconfig add ens8 100
vconfig set_flag ens8.100 1 1
ifconfig ens8.100 192.168.100.4 netmask 255.255.255.0 up
sleep 1
}
echo 0 > /sys/class/net/ens8/device/sriov_numvfs
sleep 1
function vf_setup()
{
echo 4 > /sys/class/net/ens8/device/sriov_numvfs
sleep 1
sleep 5
ifconfig ens8f3 up
ip link set ens8 vf 2 vlan 200
ifconfig ens8f3 192.168.200.4 netmask 255.255.255.0
ifconfig enp8s0 up
ifconfig enp9s0 up
ifconfig ens8f1 up
ifconfig ens8f2 up
ifconfig ens8f3 up
ifconfig ens8f4 up
ifconfig ens8f1 up
ifconfig ens8f2 up
ifconfig ens8f3 up
ifconfig ens8f4 up
sleep 5
}
function bring_down_pfvf()
{
echo 0 > /sys/class/net/ens8/device/sriov_numvfs
ifconfig ens8 down
sleep 3
}
# Main loop
while :
do
FAIL_FLAG=0
# Make sure PF is valid
ping ${TP_SVR} -c 1
if [ $? -ne 0 ];then
echo "Please make sure switch board is up."
bring_down_pfvf
pf_setup
continue
fi
# Make sure TestPoint is up.
${CURRENT_PATH}/${REMOTE_CONTROL_BIN} -s ${TP_SVR} -n ${TP_PORT} -c "show version"
if [ $? -ne 0 ];then
echo "Cannot reach TestPoint!"
echo "Please make sure TestPoint is up and in remote-listen mode."
sleep 5
continue
fi
# Create VFs and get MAC addresses
vf_setup
PF=`get_netdev_by_pci 85:00.0`
VF1=`get_netdev_by_pci 85:00.1`
VF2=`get_netdev_by_pci 85:00.2`
VF3=`get_netdev_by_pci 85:00.3`
VF4=`get_netdev_by_pci 85:00.4`
MAC0=`ifconfig ${PF} |grep ether |awk -F' ' '{print $2}'`
MAC1=`ifconfig ${VF1} |grep ether |awk -F' ' '{print $2}'`
MAC2=`ifconfig ${VF2} |grep ether |awk -F' ' '{print $2}'`
MAC3=`ifconfig ${VF3} |grep ether |awk -F' ' '{print $2}'`
MAC4=`ifconfig ${VF4} |grep ether |awk -F' ' '{print $2}'`
# Make sure VFs are valid
MAC_TABLE=`${CURRENT_PATH}/${REMOTE_CONTROL_BIN} -s ${TP_SVR} -n ${TP_PORT} -c "show mac table all"`
for i in ${MAC0} ${MAC1} ${MAC2} ${MAC3} ${MAC4}
do
echo ${MAC_TABLE} |grep ${i} > /dev/null 2>&1
if [ $? -ne 0 ];then
echo "MAC ${i} is not in table!"
FAIL_FLAG=1
break
fi
done
if [ ${FAIL_FLAG} -eq 1 ];then
bring_down_pfvf
continue
fi
echo "PF/VF setup successful."
exit 0
done

View File

@@ -1,7 +0,0 @@
#!/bin/sh
systemctl stop mrzcpd
systemctl stop mrenv
echo 0 > /sys/class/net/ens8/device/sriov_numvfs
ifconfig ens8.100 down
vconfig rem ens8.100
ifconfig ens8 down

View File

@@ -5,9 +5,9 @@
dest: "/opt/tsg/env/"
mode: 0755
- name: "copy stop script"
- name: "copy switch_control_client_non_block"
copy:
src: "{{ role_path }}/files/stop"
src: "{{ role_path }}/files/switch_control_client_non_block"
dest: "/opt/tsg/env/"
mode: 0755