summaryrefslogtreecommitdiffstats
path: root/plugins/dpdk
diff options
context:
space:
mode:
authorHarry Huang <huangxiangyu5@huawei.com>2017-10-11 18:11:52 +0800
committerHarry Huang <huangxiangyu5@huawei.com>2017-10-24 09:24:18 +0800
commit849d51833bdb16e8f04370270cd3e082ad9db928 (patch)
tree3b170fa44b4f3af69e5f3b8d2a87a3335a3909ef /plugins/dpdk
parentd8f5f4a460d4c84a6552a6bed8af5c7fa5eedc22 (diff)
Config dpdk and ovs
switch dpdk interface driver and bring up corresponding ovs bridges. Change-Id: I07bd9b332978482507711cfbd8ad29802a8b1a8c Signed-off-by: Harry Huang <huangxiangyu5@huawei.com>
Diffstat (limited to 'plugins/dpdk')
-rw-r--r--plugins/dpdk/roles/config-dpdk/files/openvswitch-switch.service17
-rw-r--r--plugins/dpdk/roles/config-dpdk/handlers/main.yml28
-rw-r--r--plugins/dpdk/roles/config-dpdk/tasks/compute.yml82
-rw-r--r--plugins/dpdk/roles/config-dpdk/tasks/config-dpdk.yml16
-rw-r--r--plugins/dpdk/roles/config-dpdk/tasks/main.yml11
-rw-r--r--plugins/dpdk/roles/config-dpdk/tasks/neutron_agent.yml15
-rw-r--r--plugins/dpdk/roles/config-dpdk/vars/Ubuntu.yml14
-rw-r--r--plugins/dpdk/roles/config-dpdk/vars/main.yml10
-rw-r--r--plugins/dpdk/roles/ins_dpdk/vars/main.yml2
-rw-r--r--plugins/dpdk/roles/ins_ovs/tasks/ovs.yml12
-rw-r--r--plugins/dpdk/roles/ins_ovs/templates/start_ovs_vswitchd.sh.j24
-rw-r--r--plugins/dpdk/roles/ins_ovs/templates/start_ovsdb_server.sh.j24
12 files changed, 202 insertions, 13 deletions
diff --git a/plugins/dpdk/roles/config-dpdk/files/openvswitch-switch.service b/plugins/dpdk/roles/config-dpdk/files/openvswitch-switch.service
new file mode 100644
index 00000000..cb46c341
--- /dev/null
+++ b/plugins/dpdk/roles/config-dpdk/files/openvswitch-switch.service
@@ -0,0 +1,17 @@
+[Unit]
+Description=openvswitch-switch
+
+[Service]
+User=root
+Group=root
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=/opt/start_ovs_vswitchd.sh
+
+TimeoutSec=120
+#Restart=on-failure
+#RestartSec=2
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/plugins/dpdk/roles/config-dpdk/handlers/main.yml b/plugins/dpdk/roles/config-dpdk/handlers/main.yml
new file mode 100644
index 00000000..b1a62327
--- /dev/null
+++ b/plugins/dpdk/roles/config-dpdk/handlers/main.yml
@@ -0,0 +1,28 @@
+##############################################################################
+# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+---
+- name: service openvswitch restart
+ systemd:
+ name: "{{ item }}"
+ state: restarted
+ daemon_reload: "yes"
+ enabled: "yes"
+ with_items: "{{ openvswitch_service }}"
+
+- name: service libvirtd restart
+ service:
+ name: "{{ item }}"
+ state: restarted
+ with_items: "{{ libvirtd_service }}"
+
+- name: service neutron-openvswitch-agent restart
+ service:
+ name: "{{ item }}"
+ state: restarted
+ with_items: "{{ ovs_agent_service }}"
diff --git a/plugins/dpdk/roles/config-dpdk/tasks/compute.yml b/plugins/dpdk/roles/config-dpdk/tasks/compute.yml
new file mode 100644
index 00000000..b5285d79
--- /dev/null
+++ b/plugins/dpdk/roles/config-dpdk/tasks/compute.yml
@@ -0,0 +1,82 @@
+#############################################################################
+# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+---
+- name: get dpdk interface device name
+ command: echo "{{ compu_sys_mappings['tenant']['interface'] }}"
+ register: dpdk_device_name
+
+- name: get dpdk interface ip
+ shell: >
+ ip a show "{{ dpdk_device_name.stdout }}" | grep -E "\<inet\>" |
+ awk '{print $2}'
+ register: dpdk_device_ip
+
+- debug:
+ msg: "{{ dpdk_device_ip.stdout }}"
+
+- name: get dpdk interface device pci
+ shell: >
+ {{ devbind_script }} -s | grep {{ dpdk_device_name.stdout }} |
+ awk '{print $1}'
+ register: dpdk_device_pci
+
+- name: switch dpdk interface driver
+ shell: "{{ switch_driver_script }}"
+ notify: service openvswitch restart
+
+- name: kill ovs process
+ shell: >
+ ps aux | grep ovs | grep -v grep | awk '{print $2}' | xargs kill -9 |
+ true
+ notify: service openvswitch restart
+
+- name: copy service file
+ copy:
+ src: openvswitch-switch.service
+ dest: /lib/systemd/system/openvswitch-switch.service
+ notify: service openvswitch restart
+
+- name: config libvirtd
+ shell: echo 'user = "root"' >> /etc/libvirt/qemu.conf
+ notify: service libvirtd restart
+
+- meta: flush_handlers
+
+- name: config neutron-openvswitch-agent
+ blockinfile:
+ dest: /etc/neutron/plugins/ml2/openvswitch_agent.ini
+ insertafter: '^\[ovs\]'
+ block: |
+ datapath_type=netdev
+ vhostuser_socket_dir=/usr/local/var/run/openvswitch
+
+- name: set ovs manager
+ shell: ovs-vsctl set-manager ptcp:6640:127.0.0.1
+ notify: service neutron-openvswitch-agent restart
+
+- name: config ovs to dpdk
+ shell: |
+ ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-init=true
+ ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-socket-mem="{{ dpdk_memory }}"
+ notify: service neutron-openvswitch-agent restart
+
+- name: add dpdk bridge
+ shell: |
+ ovs-vsctl add-br br-dpdk -- set bridge br-dpdk datapath_type=netdev
+ ovs-vsctl add-port br-dpdk dpdk0 -- set Interface dpdk0 \
+ type=dpdk options:dpdk-devargs="{{ dpdk_device_pci.stdout }}"
+ notify: service neutron-openvswitch-agent restart
+
+- name: bind ip on dpdk bridge
+ shell: |
+ ifconfig br-dpdk "{{ dpdk_device_ip.stdout }}"
+ ifconfig br-dpdk up
+ notify: service neutron-openvswitch-agent restart
+
+- meta: flush_handlers
diff --git a/plugins/dpdk/roles/config-dpdk/tasks/config-dpdk.yml b/plugins/dpdk/roles/config-dpdk/tasks/config-dpdk.yml
new file mode 100644
index 00000000..b0e1a1ed
--- /dev/null
+++ b/plugins/dpdk/roles/config-dpdk/tasks/config-dpdk.yml
@@ -0,0 +1,16 @@
+#############################################################################
+# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+---
+- include_vars: "{{ ansible_distribution }}.yml"
+
+- include: neutron_agent.yml
+ when: inventory_hostname in groups['neutron_openvswitch_agent']
+
+- include: compute.yml
+ when: inventory_hostname in groups['compute']
diff --git a/plugins/dpdk/roles/config-dpdk/tasks/main.yml b/plugins/dpdk/roles/config-dpdk/tasks/main.yml
new file mode 100644
index 00000000..19fc66b7
--- /dev/null
+++ b/plugins/dpdk/roles/config-dpdk/tasks/main.yml
@@ -0,0 +1,11 @@
+##############################################################################
+# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+---
+- include: config-dpdk.yml
+ when: dpdk is defined and dpdk == "Enable"
diff --git a/plugins/dpdk/roles/config-dpdk/tasks/neutron_agent.yml b/plugins/dpdk/roles/config-dpdk/tasks/neutron_agent.yml
new file mode 100644
index 00000000..aa65142b
--- /dev/null
+++ b/plugins/dpdk/roles/config-dpdk/tasks/neutron_agent.yml
@@ -0,0 +1,15 @@
+#############################################################################
+# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+---
+- name: config neutron-openvswitch-agent
+ lineinfile:
+ dest: /etc/neutron/plugins/ml2/openvswitch_agent.ini
+ regexp: '^firewall_driver'
+ line: "firewall_driver = openvswitch"
+ notify: service neutron-openvswitch-agent restart
diff --git a/plugins/dpdk/roles/config-dpdk/vars/Ubuntu.yml b/plugins/dpdk/roles/config-dpdk/vars/Ubuntu.yml
new file mode 100644
index 00000000..697785ad
--- /dev/null
+++ b/plugins/dpdk/roles/config-dpdk/vars/Ubuntu.yml
@@ -0,0 +1,14 @@
+#########################################################################
+# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##########################################################################
+---
+devbind_script: /root/dpdk/tools/dpdk-devbind.py
+switch_driver_script: /root/dpdk_uio.sh
+openvswitch_service: openvswitch-switch
+ovs_agent_service: neutron-openvswitch-agent
+libvirtd_service: libvirtd
diff --git a/plugins/dpdk/roles/config-dpdk/vars/main.yml b/plugins/dpdk/roles/config-dpdk/vars/main.yml
new file mode 100644
index 00000000..f6115b62
--- /dev/null
+++ b/plugins/dpdk/roles/config-dpdk/vars/main.yml
@@ -0,0 +1,10 @@
+##########################################################################
+# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##########################################################################
+---
+dpdk_memory: 128
diff --git a/plugins/dpdk/roles/ins_dpdk/vars/main.yml b/plugins/dpdk/roles/ins_dpdk/vars/main.yml
index 87e1026c..4bd4076e 100644
--- a/plugins/dpdk/roles/ins_dpdk/vars/main.yml
+++ b/plugins/dpdk/roles/ins_dpdk/vars/main.yml
@@ -8,7 +8,7 @@
##############################################################################
---
# yamllint disable rule:line-length
-grub_cmdline: GRUB_CMDLINE_LINUX_DEFAULT="hugepagesz=2M hugepages=2048 iommu=pt intel_iommu=on isolcpus=1,2"
+grub_cmdline: GRUB_CMDLINE_LINUX_DEFAULT="hugepagesz=2M hugepages=2048 iommu=pt intel_iommu=on"
# yamllint enable rule:line-length
dpdk_dir: /root/dpdk
diff --git a/plugins/dpdk/roles/ins_ovs/tasks/ovs.yml b/plugins/dpdk/roles/ins_ovs/tasks/ovs.yml
index 9f728696..64475c6a 100644
--- a/plugins/dpdk/roles/ins_ovs/tasks/ovs.yml
+++ b/plugins/dpdk/roles/ins_ovs/tasks/ovs.yml
@@ -1,11 +1,11 @@
-# #############################################################################
+##############################################################################
# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others.
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
-# #############################################################################
+##############################################################################
---
- name: install prerequisites package
apt:
@@ -64,11 +64,10 @@
- name: Create OVS scripts
template:
src: "templates/{{ item }}.j2"
- dest: "/root/{{ item }}"
+ dest: "/opt/{{ item }}"
mode: 0755
with_items:
- start_ovs_vswitchd.sh
- - start_ovsdb_server.sh
- name: Create folders
file: path={{ item }} state=directory
@@ -90,8 +89,5 @@
when: ovs_dbconfig_status.stat.exists == false
# yamllint enable rule:line-length
-- name: Start ovsdb Server
- command: /root/start_ovsdb_server.sh
-
- name: Start OVS vswitchd with DPDK support enabled
- command: /root/start_ovs_vswitchd.sh
+ command: /opt/start_ovs_vswitchd.sh
diff --git a/plugins/dpdk/roles/ins_ovs/templates/start_ovs_vswitchd.sh.j2 b/plugins/dpdk/roles/ins_ovs/templates/start_ovs_vswitchd.sh.j2
index c1504177..a96c8721 100644
--- a/plugins/dpdk/roles/ins_ovs/templates/start_ovs_vswitchd.sh.j2
+++ b/plugins/dpdk/roles/ins_ovs/templates/start_ovs_vswitchd.sh.j2
@@ -1,4 +1,8 @@
#!/bin/bash
+ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \
+ --remote=db:Open_vSwitch,Open_vSwitch,manager_options \
+ --pidfile --detach
+
export DB_SOCK=/usr/local/var/run/openvswitch/db.sock
sudo ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-init=true
sudo ovs-vswitchd unix:$DB_SOCK --pidfile --detach
diff --git a/plugins/dpdk/roles/ins_ovs/templates/start_ovsdb_server.sh.j2 b/plugins/dpdk/roles/ins_ovs/templates/start_ovsdb_server.sh.j2
deleted file mode 100644
index 8bc408b6..00000000
--- a/plugins/dpdk/roles/ins_ovs/templates/start_ovsdb_server.sh.j2
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/bash
-ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \
- --remote=db:Open_vSwitch,Open_vSwitch,manager_options \
- --pidfile --detach