CSIT-1208: Add new data to 1807 report
[csit.git] / docs / report / vpp_performance_tests / documentation / containers.rst
index a617386..313b5b7 100644 (file)
@@ -1,5 +1,5 @@
 
 
-.. _containter_orchestration_in_csit:
+.. _container_orchestration_in_csit:
 
 Container Orchestration in CSIT
 ===============================
 
 Container Orchestration in CSIT
 ===============================
@@ -22,7 +22,7 @@ file systems.
 :abbr:`LXC (Linux Containers)` combine kernel's cgroups and support for isolated
 namespaces to provide an isolated environment for applications. Docker
 does use LXC as one of its execution drivers, enabling image management
 :abbr:`LXC (Linux Containers)` combine kernel's cgroups and support for isolated
 namespaces to provide an isolated environment for applications. Docker
 does use LXC as one of its execution drivers, enabling image management
-and providing deployment services. More information in [lxc]_, [lxc-namespace]_
+and providing deployment services. More information in [lxc]_, [lxcnamespace]_
 and [stgraber]_.
 
 Linux containers can be of two kinds: privileged containers and
 and [stgraber]_.
 
 Linux containers can be of two kinds: privileged containers and
@@ -41,7 +41,7 @@ user gets root in a container. With unprivileged containers, non-root
 users can create containers and will appear in the container as the
 root, but will appear as userid <non-zero> on the host. Unprivileged
 containers are also better suited to supporting multi-tenancy operating
 users can create containers and will appear in the container as the
 root, but will appear as userid <non-zero> on the host. Unprivileged
 containers are also better suited to supporting multi-tenancy operating
-environments. More information in [lxc-security]_ and [stgraber]_.
+environments. More information in [lxcsecurity]_ and [stgraber]_.
 
 Privileged Containers
 ~~~~~~~~~~~~~~~~~~~~~
 
 Privileged Containers
 ~~~~~~~~~~~~~~~~~~~~~
@@ -68,7 +68,7 @@ list of applicable security control mechanisms:
 - Seccomp - secure computing mode, enables filtering of system calls,
   [seccomp]_.
 
 - Seccomp - secure computing mode, enables filtering of system calls,
   [seccomp]_.
 
-More information in [lxc-security]_ and [lxc-sec-features]_.
+More information in [lxcsecurity]_ and [lxcsecfeatures]_.
 
 **Linux Containers in CSIT**
 
 
 **Linux Containers in CSIT**
 
@@ -90,7 +90,7 @@ orchestration system:
 2. Build - building a container image from scratch or another
    container image via :command:`docker build <dockerfile/composefile>` or
    customizing LXC templates in
 2. Build - building a container image from scratch or another
    container image via :command:`docker build <dockerfile/composefile>` or
    customizing LXC templates in
-   `https://github.com/lxc/lxc/tree/master/templates`_
+   `GitHub <https://github.com/lxc/lxc/tree/master/templates>`_.
 
 3. (Re-)Create - creating a running instance of a container application
    from anew, or re-creating one that failed. A.k.a. (re-)deploy via
 
 3. (Re-)Create - creating a running instance of a container application
    from anew, or re-creating one that failed. A.k.a. (re-)deploy via
@@ -118,7 +118,7 @@ LXC
 ~~~
 
 LXC is the well-known and heavily tested low-level Linux container
 ~~~
 
 LXC is the well-known and heavily tested low-level Linux container
-runtime [lxc-source]_, that provides a userspace interface for the Linux kernel
+runtime [lxcsource]_, that provides a userspace interface for the Linux kernel
 containment features. With a powerful API and simple tools, LXC enables
 Linux users to easily create and manage system or application
 containers. LXC uses following kernel features to contain processes:
 containment features. With a powerful API and simple tools, LXC enables
 Linux users to easily create and manage system or application
 containers. LXC uses following kernel features to contain processes:
@@ -140,8 +140,8 @@ a range of virtual networking topologies.
   of functionality is better supported in LXC 2.1 but can be done is current
   version as well.
 
   of functionality is better supported in LXC 2.1 but can be done is current
   version as well.
 
-- CSIT code is currently using cgroup control the range of CPU cores the
-  container must run on. VPP thread pinning defined vpp startup.conf.
+- CSIT code is currently using cgroup to control the range of CPU cores the
+  LXC container runs on. VPP thread pinning is defined vpp startup.conf.
 
 Docker
 ~~~~~~
 
 Docker
 ~~~~~~
@@ -166,7 +166,7 @@ containerized applications used in CSIT performance tests.
 Kubernetes
 ~~~~~~~~~~
 
 Kubernetes
 ~~~~~~~~~~
 
-Kubernetes [k8s-doc]_, or K8s, is a production-grade container orchestration
+Kubernetes [k8sdoc]_, or K8s, is a production-grade container orchestration
 platform for automating the deployment, scaling and operating
 application containers. Kubernetes groups containers that make up an
 application into logical units, pods, for easy management and discovery.
 platform for automating the deployment, scaling and operating
 application containers. Kubernetes groups containers that make up an
 application into logical units, pods, for easy management and discovery.
@@ -176,21 +176,15 @@ K8s pod definitions including compute resource allocation is provided in
 CSIT uses K8s and its infrastructure components like etcd to control all
 phases of container based virtualized network topologies.
 
 CSIT uses K8s and its infrastructure components like etcd to control all
 phases of container based virtualized network topologies.
 
-**Open Questions**
-
-- Clarify the functions provided by Contiv and Calico in Ligato system?
-
 Ligato
 ~~~~~~
 
 Ligato [ligato]_ is an open-source project developing a set of cloud-native
 tools for orchestrating container networking. Ligato integrates with FD.io VPP
 Ligato
 ~~~~~~
 
 Ligato [ligato]_ is an open-source project developing a set of cloud-native
 tools for orchestrating container networking. Ligato integrates with FD.io VPP
-using goVPP [govpp]_ and vpp-agent [vpp-agent]_.
+using goVPP [govpp]_ and vpp-agent [vppagent]_.
 
 **Known Issues**
 
 
 **Known Issues**
 
-**Open Questions**
-
 - Currently using a separate LF Jenkins job for building csit-centric
   prod_vpp_agent docker images vs. dockerhub/ligato ones.
 
 - Currently using a separate LF Jenkins job for building csit-centric
   prod_vpp_agent docker images vs. dockerhub/ligato ones.
 
@@ -364,33 +358,26 @@ Usage example:
   | | [Arguments] | ${technology} | ${image} | ${cpu_count}=${1} | ${count}=${1}
   | | ...
   | | ${group}= | Set Variable | VNF
   | | [Arguments] | ${technology} | ${image} | ${cpu_count}=${1} | ${count}=${1}
   | | ...
   | | ${group}= | Set Variable | VNF
-  | | ${guest_dir}= | Set Variable | /mnt/host
-  | | ${host_dir}= | Set Variable | /tmp
   | | ${skip_cpus}= | Evaluate | ${vpp_cpus}+${system_cpus}
   | | Import Library | resources.libraries.python.ContainerUtils.ContainerManager
   | | ${skip_cpus}= | Evaluate | ${vpp_cpus}+${system_cpus}
   | | Import Library | resources.libraries.python.ContainerUtils.ContainerManager
-  | | ... | engine=${technology} | WITH NAME | ${group}
+  | | ... | engine=${container_engine} | WITH NAME | ${group}
   | | ${duts}= | Get Matches | ${nodes} | DUT*
   | | :FOR | ${dut} | IN | @{duts}
   | | ${duts}= | Get Matches | ${nodes} | DUT*
   | | :FOR | ${dut} | IN | @{duts}
-  | | | {env}= | Create List | LC_ALL="en_US.UTF-8"
-  | | | ... | DEBIAN_FRONTEND=noninteractive | ETCDV3_ENDPOINTS=172.17.0.1:2379
+  | | | ${env}= | Create List | DEBIAN_FRONTEND=noninteractive
+  | | | ${mnt}= | Create List | /tmp:/mnt/host | /dev:/dev
   | | | ${cpu_node}= | Get interfaces numa node | ${nodes['${dut}']}
   | | | ... | ${dut1_if1} | ${dut1_if2}
   | | | Run Keyword | ${group}.Construct containers
   | | | ${cpu_node}= | Get interfaces numa node | ${nodes['${dut}']}
   | | | ... | ${dut1_if1} | ${dut1_if2}
   | | | Run Keyword | ${group}.Construct containers
-  | | | ... | name=${dut}_${group}
-  | | | ... | node=${nodes['${dut}']}
-  | | | ... | host_dir=${host_dir}
-  | | | ... | guest_dir=${guest_dir}
-  | | | ... | image=${image}
-  | | | ... | cpu_count=${cpu_count}
-  | | | ... | cpu_skip=${skip_cpus}
-  | | | ... | smt_used=${False}
-  | | | ... | cpuset_mems=${cpu_node}
-  | | | ... | cpu_shared=${False}
-  | | | ... | env=${env}
+  | | | ... | name=${dut}_${group} | node=${nodes['${dut}']} | mnt=${mnt}
+  | | | ... | image=${container_image} | cpu_count=${container_cpus}
+  | | | ... | cpu_skip=${skip_cpus} | cpuset_mems=${cpu_node}
+  | | | ... | cpu_shared=${False} | env=${env} | count=${container_count}
+  | | | ... | install_dkms=${container_install_dkms}
+  | | Append To List | ${container_groups} | ${group}
 
 Mandatory parameters to create standalone container are: ``node``, ``name``,
 
 Mandatory parameters to create standalone container are: ``node``, ``name``,
-``image`` [image-var]_, ``cpu_count``, ``cpu_skip``, ``smt_used``,
-``cpuset_mems``, ``cpu_shared``.
+``image`` [imagevar]_, ``cpu_count``, ``cpu_skip``, ``cpuset_mems``,
+``cpu_shared``.
 
 There is no parameters check functionality. Passing required arguments is in
 coder responsibility. All the above parameters are required to calculate the
 
 There is no parameters check functionality. Passing required arguments is in
 coder responsibility. All the above parameters are required to calculate the
@@ -510,7 +497,7 @@ Listed CSIT container networking test topologies are defined with DUT
 containerized VPP switch forwarding packets between NF containers. Each
 NF container runs their own instance of VPP in L2XC configuration.
 
 containerized VPP switch forwarding packets between NF containers. Each
 NF container runs their own instance of VPP in L2XC configuration.
 
-Following container networking topologies are tested in CSIT |release|:
+Following container networking topologies are tested in |csit-release|:
 
 - LXC topologies:
 
 
 - LXC topologies:
 
@@ -520,33 +507,39 @@ Following container networking topologies are tested in CSIT |release|:
 - Docker topologies:
 
   - eth-l2xcbase-eth-2memif-1docker.
 - Docker topologies:
 
   - eth-l2xcbase-eth-2memif-1docker.
+  - eth-l2xcbase-eth-1memif-1docker
 
 - Kubernetes/Ligato topologies:
 
 
 - Kubernetes/Ligato topologies:
 
-  - eth-1drcl2xcbase-eth-2memif-1drcl2xc.
-  - eth-1drcl2xcbase-eth-4memif-2drcl2xc.
-  - eth-1drcl2bdbasemaclrn-eth-2memif-1drcl2xc.
-  - eth-1drcl2bdbasemaclrn-eth-4memif-2drcl2xc.
-
+  - eth-1drcl2bdbasemaclrn-eth-2memif-1drcl2xc-1paral
+  - eth-1drcl2bdbasemaclrn-eth-2memif-2drcl2xc-1horiz
+  - eth-1drcl2bdbasemaclrn-eth-2memif-4drcl2xc-1horiz
+  - eth-1drcl2bdbasemaclrn-eth-4memif-2drcl2xc-1chain
+  - eth-1drcl2bdbasemaclrn-eth-8memif-4drcl2xc-1chain
+  - eth-1drcl2xcbase-eth-2memif-1drcl2xc-1paral
+  - eth-1drcl2xcbase-eth-2memif-2drcl2xc-1horiz
+  - eth-1drcl2xcbase-eth-2memif-4drcl2xc-1horiz
+  - eth-1drcl2xcbase-eth-4memif-2drcl2xc-1chain
+  - eth-1drcl2xcbase-eth-8memif-4drcl2xc-1chain
 
 References
 
 References
-----------
+~~~~~~~~~~
 
 .. [lxc] `Linux Containers <https://linuxcontainers.org/>`_
 
 .. [lxc] `Linux Containers <https://linuxcontainers.org/>`_
-.. [lxc-namespace] `Resource management: Linux kernel Namespaces and cgroups <https://www.cs.ucsb.edu/~rich/class/cs293b-cloud/papers/lxc-namespace.pdf>`_.
+.. [lxcnamespace] `Resource management: Linux kernel Namespaces and cgroups <https://www.cs.ucsb.edu/~rich/class/cs293b-cloud/papers/lxc-namespace.pdf>`_.
 .. [stgraber] `LXC 1.0: Blog post series <https://stgraber.org/2013/12/20/lxc-1-0-blog-post-series/>`_.
 .. [stgraber] `LXC 1.0: Blog post series <https://stgraber.org/2013/12/20/lxc-1-0-blog-post-series/>`_.
-.. [lxc-security] `Linux Containers Security <https://linuxcontainers.org/lxc/security/>`_.
-.. [capabilities] `Linux manual - capabilities - overview of Linux capabilities http://man7.org/linux/man-pages/man7/capabilities.7.html`_.
+.. [lxcsecurity] `Linux Containers Security <https://linuxcontainers.org/lxc/security/>`_.
+.. [capabilities] `Linux manual - capabilities - overview of Linux capabilities <http://man7.org/linux/man-pages/man7/capabilities.7.html>`_.
 .. [cgroup1] `Linux kernel documentation: cgroups <https://www.kernel.org/doc/Documentation/cgroup-v1/cgroups.txt>`_.
 .. [cgroup2] `Linux kernel documentation: Control Group v2 <https://www.kernel.org/doc/Documentation/cgroup-v2.txt>`_.
 .. [selinux] `SELinux Project Wiki <http://selinuxproject.org/page/Main_Page>`_.
 .. [cgroup1] `Linux kernel documentation: cgroups <https://www.kernel.org/doc/Documentation/cgroup-v1/cgroups.txt>`_.
 .. [cgroup2] `Linux kernel documentation: Control Group v2 <https://www.kernel.org/doc/Documentation/cgroup-v2.txt>`_.
 .. [selinux] `SELinux Project Wiki <http://selinuxproject.org/page/Main_Page>`_.
-.. [lxc-sec-features] `LXC 1.0: Security features <https://stgraber.org/2014/01/01/lxc-1-0-security-features/>`_.
-.. [lxc-source] `Linux Containers source <https://github.com/lxc/lxc>`_.
+.. [lxcsecfeatures] `LXC 1.0: Security features <https://stgraber.org/2014/01/01/lxc-1-0-security-features/>`_.
+.. [lxcsource] `Linux Containers source <https://github.com/lxc/lxc>`_.
 .. [apparmor] `Ubuntu AppArmor <https://wiki.ubuntu.com/AppArmor>`_.
 .. [seccomp] `SECure COMPuting with filters <https://www.kernel.org/doc/Documentation/prctl/seccomp_filter.txt>`_.
 .. [docker] `Docker <https://www.docker.com/what-docker>`_.
 .. [apparmor] `Ubuntu AppArmor <https://wiki.ubuntu.com/AppArmor>`_.
 .. [seccomp] `SECure COMPuting with filters <https://www.kernel.org/doc/Documentation/prctl/seccomp_filter.txt>`_.
 .. [docker] `Docker <https://www.docker.com/what-docker>`_.
-.. [k8s-doc] `Kubernetes documentation <https://kubernetes.io/docs/home/>`_.
+.. [k8sdoc] `Kubernetes documentation <https://kubernetes.io/docs/home/>`_.
 .. [ligato] `Ligato <https://github.com/ligato>`_.
 .. [govpp] `FD.io goVPP project <https://wiki.fd.io/view/GoVPP>`_.
 .. [ligato] `Ligato <https://github.com/ligato>`_.
 .. [govpp] `FD.io goVPP project <https://wiki.fd.io/view/GoVPP>`_.
-.. [vpp-agent] `Ligato vpp-agent <https://github.com/ligato/vpp-agent>`_.
-.. [image-var] Image parameter is required in initial commit version. There is plan to implement container build class to build Docker/LXC image.
+.. [vppagent] `Ligato vpp-agent <https://github.com/ligato/vpp-agent>`_.
+.. [imagevar] Image parameter is required in initial commit version. There is plan to implement container build class to build Docker/LXC image.