cp /cni/ovsdpdk /opt/cni/bin
 cp /cni/setup_ovsdpdk.sh /opt/cni/bin
 cp /cni/teardown_ovsdpdk.sh /opt/cni/bin
-cp /etc/kube-ovsdpdk/cni-conf.json  /etc/cni/net.d/10-ovsdpdk.conf
+cp /etc/kube-cniovsdpdk/cni-conf.json  /etc/cni/net.d/10-ovsdpdk.conf
 while true; do sleep 3600; done
 
 apiVersion: v1
 kind: ServiceAccount
 metadata:
-  name: ovsdpdk
+  name: cniovsdpdk
   namespace: kube-system
 ---
 kind: ConfigMap
 apiVersion: v1
 metadata:
-  name: kube-ovsdpdk-cfg
+  name: kube-cniovsdpdk-cfg
   namespace: kube-system
   labels:
     tier: node
-    app: ovsdpdk
+    app: cniovsdpdk
 data:
   cni-conf.json: |
     {
 apiVersion: extensions/v1beta1
 kind: DaemonSet
 metadata:
-  name: kube-ovsdpdk-ds
+  name: kube-cniovsdpdk-ds
   namespace: kube-system
   labels:
     tier: node
-    app: ovsdpdk
+    app: cniovsdpdk
 spec:
   template:
     metadata:
       labels:
         tier: node
-        app: ovsdpdk
+        app: cniovsdpdk
     spec:
       hostNetwork: true
       nodeSelector:
       - key: node-role.kubernetes.io/master
         operator: Exists
         effect: NoSchedule
-      serviceAccountName: ovsdpdk
+      serviceAccountName: cniovsdpdk
       containers:
       - name: install-cni
         image: openretriever/cni-ovsdpdk
           mountPath: /opt/cni/bin
         - name: cni-cfg
           mountPath: /etc/cni/net.d
-        - name: ovsdpdk-cfg
-          mountPath: /etc/kube-ovsdpdk
+        - name: cniovsdpdk-cfg
+          mountPath: /etc/kube-cniovsdpdk
       volumes:
         - name: cni-bin
           hostPath:
         - name: cni-cfg
           hostPath:
             path: /etc/cni/net.d
-        - name: ovsdpdk-cfg
+        - name: cniovsdpdk-cfg
           configMap:
-            name: kube-ovsdpdk-cfg
+            name: kube-cniovsdpdk-cfg
 
 export KUBECONFIG=$HOME/admin.conf
 echo "export KUBECONFIG=$HOME/admin.conf" >> $HOME/.bash_profile
 
-kubectl apply -f http://git.io/weave-kube-1.6
+#kubectl apply -f http://git.io/weave-kube-1.6
 #kubectl apply -f http://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
 #kubectl apply -f http://docs.projectcalico.org/v2.1/getting-started/kubernetes/installation/hosted/kubeadm/1.6/calico.yaml
-#kubectl apply -f /vagrant/k8s_kubeadm/dpdk/kube_ovsdpdk.yml
-#kubectl apply -f /src/cni/ovsdpdk/kube_ovsdpdk.yml
+kubectl apply -f /vagrant/ovsdpdk/kube_ovsdpdk.yml
+kubectl apply -f /src/cni/ovsdpdk/kube_cniovsdpdk.yml
 
 
 set -ex
 sudo apt-get update
-sudo apt-get install -y openvswitch-switch-dpdk linux-image-extra-4.4.0-75-generic
+sudo apt-get install -y openvswitch-switch-dpdk pciutils vim
 sudo update-alternatives --set ovs-vswitchd /usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk
-echo "DPDK_OPTS='--dpdk -c 0x1 -n 4 -m 1024'" | sudo tee -a /etc/default/openvswitch-switch
 
           mountPath: /usr/local/bin
         - name: var-run
           mountPath: /var/run/openvswitch
+        - name: lib-modules
+          mountPath: /lib/modules
         - name: dev-hugepage
           mountPath: /dev
       volumes:
         - name: var-run
           hostPath:
             path: /var/run/openvswitch
+        - name: lib-modules
+          hostPath:
+            path: /lib/modules
         - name: dev-hugepage
           hostPath:
             path: /dev
 
 #!/bin/bash
 
 set -ex
-sudo sysctl -w vm.nr_hugepages=2048
+
+for i in {1..10}
+do
+    sudo sysctl -w vm.nr_hugepages=2048; sleep 1
+done
+sudo modprobe uio_pci_generic
+sudo ip address flush enp0s9
+sudo /usr/share/dpdk/tools/dpdk_nic_bind.py --bind=uio_pci_generic enp0s9
+sudo sysctl -w vm.nr_hugepages=1024
 sudo mount -t hugetlbfs -o pagesize=2M none /dev/hugepages
-cp /usr/bin/ovs-vsctl /usr/local/bin
+sudo cp /usr/bin/ovs-vsctl /usr/local/bin
+memory=$(grep HugePages_Total /proc/meminfo | cut -f2 -d:)
+echo "DPDK_OPTS='--dpdk -c 0x1 -n 2 -m $memory'" | sudo tee -a /etc/default/openvswitch-switch
 sudo service dpdk restart
 sudo service openvswitch-switch restart
+sudo pkill ovs-vswitchd
+sudo ovs-vswitchd --dpdk -c 0x1 -n 2 -m $memory -- unix:/var/run/openvswitch/db.sock -vconsole:emer -vsyslog:err -vfile:info --mlockall --no-chdir --log-file=/var/log/openvswitch/ovs-vswitchd.log --pidfile=/var/run/openvswitch/ovs-vswitchd.pid --detach --monitor
 sudo ovs-vsctl add-br br-dpdk -- set bridge br-dpdk datapath_type=netdev
-sudo modprobe uio_pci_generic
-#sudo ip address flush enp0s9
-#sudo /usr/share/dpdk/tools/dpdk_nic_bind.py --bind=uio_pci_generic enp0s9
-#sudo ovs-vsctl add-port br-dpdk dpdk0 -- set Interface dpdk0 type=dpdk
+sudo ovs-vsctl add-port br-dpdk dpdk0 -- set Interface dpdk0 type=dpdk
 while true; do sleep 3600; done
-echo sudo docker run -ti --privileged -v /dev:/dev -v /usr/local/bin:/usr/local/bin -v /var/run/openvswitch/:/var/run/openvswitch/ dpdk /ovsdpdk/start.sh
+echo sudo docker build -t openretriever/ubuntu1604-ovsdpdk .
+echo sudo docker run -ti --privileged --net=host -v /dev:/dev -v /usr/local/bin:/usr/local/bin -v /var/run/openvswitch/:/var/run/openvswitch/ -v /lib/modules/:/lib/modules openretriever/ubuntu1604-ovsdpdk bash