采用与交换板交互的方式配置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,23 +1,46 @@
#!/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
@@ -26,3 +49,84 @@ 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
ifconfig ens1 up
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
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
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
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
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
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
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