采用与交换板交互的方式配置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 #!/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 ifconfig ens1 up
modprobe 8021q modprobe 8021q
vconfig add ens1 100 vconfig add ens1 100
vconfig set_flag ens1.100 1 1 vconfig set_flag ens1.100 1 1
ifconfig ens1.100 192.168.100.1 netmask 255.255.255.0 up ifconfig ens1.100 192.168.100.1 netmask 255.255.255.0 up
sleep 1
}
echo 0 > /sys/class/net/ens1/device/sriov_numvfs function vf_setup()
sleep 1 {
echo 8 > /sys/class/net/ens1/device/sriov_numvfs echo 8 > /sys/class/net/ens1/device/sriov_numvfs
sleep 1 sleep 5
ifconfig ens1f3 up ifconfig ens1f3 up
ip link set ens1 vf 2 vlan 200 ip link set ens1 vf 2 vlan 200
ifconfig ens1f3 192.168.200.1 netmask 255.255.255.0 ifconfig ens1f3 192.168.200.1 netmask 255.255.255.0
ifconfig enp8s0 up ifconfig ens1f1 up
ifconfig enp9s0 up ifconfig ens1f2 up
ifconfig ens1f1 up ifconfig ens1f3 up
ifconfig ens1f2 up ifconfig ens1f4 up
ifconfig ens1f3 up ifconfig ens1f5 up
ifconfig ens1f4 up ifconfig ens1f6 up
ifconfig ens1f5 up ifconfig ens1f7 up
ifconfig ens1f6 up ifconfig enp1s1 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] [Service]
ExecStart=/opt/tsg/env/setup ExecStart=/opt/tsg/env/setup
ExecStop=/opt/tsg/env/stop
Type=oneshot Type=oneshot
RemainAfterExit=yes RemainAfterExit=yes

View File

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

View File

@@ -1,25 +1,115 @@
#!/bin/bash #!/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 ifconfig ens1 up
modprobe 8021q
vconfig add ens1 100 vconfig add ens1 100
vconfig set_flag ens1.100 1 1 vconfig set_flag ens1.100 1 1
ifconfig ens1.100 192.168.100.2 netmask 255.255.255.0 up ifconfig ens1.100 192.168.100.2 netmask 255.255.255.0 up
sleep 1
}
echo 0 > /sys/class/net/ens1/device/sriov_numvfs function vf_setup()
sleep 1 {
echo 4 > /sys/class/net/ens1/device/sriov_numvfs echo 4 > /sys/class/net/ens1/device/sriov_numvfs
sleep 1 sleep 5
ifconfig ens1f3 up ifconfig ens1f3 up
ip link set ens1 vf 2 vlan 200 ip link set ens1 vf 2 vlan 200
ifconfig ens1f3 192.168.200.2 netmask 255.255.255.0 ifconfig ens1f3 192.168.200.2 netmask 255.255.255.0
ifconfig enp8s0 up ifconfig ens1f1 up
ifconfig enp9s0 up ifconfig ens1f2 up
ifconfig ens1f1 up ifconfig ens1f3 up
ifconfig ens1f2 up ifconfig ens1f4 up
ifconfig ens1f3 up sleep 5
ifconfig ens1f4 up }
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/" dest: "/opt/tsg/env/"
mode: 0755 mode: 0755
- name: "copy stop script" - name: "copy switch_control_client_non_block"
copy: copy:
src: "{{ role_path }}/files/stop" src: "{{ role_path }}/files/switch_control_client_non_block"
dest: "/opt/tsg/env/" dest: "/opt/tsg/env/"
mode: 0755 mode: 0755

View File

@@ -1,23 +1,115 @@
#!/bin/bash #!/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 add ens8 100
vconfig set_flag ens8.100 1 1 vconfig set_flag ens8.100 1 1
ifconfig ens8.100 192.168.100.3 netmask 255.255.255.0 up ifconfig ens8.100 192.168.100.3 netmask 255.255.255.0 up
sleep 1
}
echo 0 > /sys/class/net/ens8/device/sriov_numvfs function vf_setup()
sleep 1 {
echo 4 > /sys/class/net/ens8/device/sriov_numvfs echo 4 > /sys/class/net/ens8/device/sriov_numvfs
sleep 1 sleep 5
ifconfig ens8f3 up ifconfig ens8f3 up
ip link set ens8 vf 2 vlan 200 ip link set ens8 vf 2 vlan 200
ifconfig ens8f3 192.168.200.3 netmask 255.255.255.0 ifconfig ens8f3 192.168.200.3 netmask 255.255.255.0
ifconfig enp8s0 up ifconfig ens8f1 up
ifconfig enp9s0 up ifconfig ens8f2 up
ifconfig ens8f1 up ifconfig ens8f3 up
ifconfig ens8f2 up ifconfig ens8f4 up
ifconfig ens8f3 up sleep 5
ifconfig ens8f4 up }
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] [Unit]
Description=tsg sled-mcn2 env init Description=tsg sled-mcn3 env init
Requires=network.target Requires=network.target
After=network.target After=network.target
Before=tfe-env.service mrenv.service Before=tfe-env.service mrenv.service

View File

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

View File

@@ -1,23 +1,115 @@
#!/bin/bash #!/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 add ens8 100
vconfig set_flag ens8.100 1 1 vconfig set_flag ens8.100 1 1
ifconfig ens8.100 192.168.100.4 netmask 255.255.255.0 up ifconfig ens8.100 192.168.100.4 netmask 255.255.255.0 up
sleep 1
}
echo 0 > /sys/class/net/ens8/device/sriov_numvfs function vf_setup()
sleep 1 {
echo 4 > /sys/class/net/ens8/device/sriov_numvfs echo 4 > /sys/class/net/ens8/device/sriov_numvfs
sleep 1 sleep 5
ifconfig ens8f3 up ifconfig ens8f3 up
ip link set ens8 vf 2 vlan 200 ip link set ens8 vf 2 vlan 200
ifconfig ens8f3 192.168.200.4 netmask 255.255.255.0 ifconfig ens8f3 192.168.200.4 netmask 255.255.255.0
ifconfig enp8s0 up ifconfig ens8f1 up
ifconfig enp9s0 up ifconfig ens8f2 up
ifconfig ens8f1 up ifconfig ens8f3 up
ifconfig ens8f2 up ifconfig ens8f4 up
ifconfig ens8f3 up sleep 5
ifconfig ens8f4 up }
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/" dest: "/opt/tsg/env/"
mode: 0755 mode: 0755
- name: "copy stop script" - name: "copy switch_control_client_non_block"
copy: copy:
src: "{{ role_path }}/files/stop" src: "{{ role_path }}/files/switch_control_client_non_block"
dest: "/opt/tsg/env/" dest: "/opt/tsg/env/"
mode: 0755 mode: 0755