diff options
author | Maciek Konstantynowicz <mkonstan@cisco.com> | 2021-11-08 21:17:53 +0000 |
---|---|---|
committer | Peter Mikus <pmikus@cisco.com> | 2021-11-09 10:32:00 +0000 |
commit | 53e25fc66c147c2c3f71783b2233067cf06cf4a1 (patch) | |
tree | 3b5679cae69916807a51b0c9eed381d4da270549 /docs | |
parent | 59edf9766851c3d8fbb0538092180a4816bbb1a3 (diff) |
report: edits in aws methodology section
Edits include:
- add description of used testbed topologies.
- cleaned up references.
- other editing nits.
Change-Id: I43069541f3da8e844529a00a127fb1a360197647
Signed-off-by: Maciek Konstantynowicz <mkonstan@cisco.com>
(cherry picked from commit 531215332c4b4374a5cd7e1317de506f59a7683a)
Diffstat (limited to 'docs')
4 files changed, 150 insertions, 119 deletions
diff --git a/docs/report/introduction/methodology_aws/aws_ami.rst b/docs/report/introduction/methodology_aws/aws_ami.rst index 0eebdf9d9c..264da01a1f 100644 --- a/docs/report/introduction/methodology_aws/aws_ami.rst +++ b/docs/report/introduction/methodology_aws/aws_ami.rst @@ -1,35 +1,40 @@ -Amazon Machine Images ---------------------- - -An :abbr:`AMI (Amazon Machine Image)` provides the information required to -launch an instance. CSIT is using Amazon :abbr:`EBS (Elastic Block Store)` where -the root device for an instance launched from the AMI is a volume created from -an Amazon EBS snapshot. - -A the TG and SUT instances have slightly different software requirements, -we are defining two AMIs for TG and SUT separately. AMI details examples: - -TG: -- AMI Name: csit_c5n_ubuntu_focal_tg -- Platform details: Linux/UNIX -- Architecture: x86_64 -- Usage operation: RunInstances -- Image Type: machine -- Virtualization type: hvm -- Description: CSIT TG image based on Ubuntu Focal -- Root Device Name: /dev/sda1 -- Root Device Type: ebs - -SUT: -- AMI Name: csit_c5n_ubuntu_focal_sut -- Platform details: Linux/UNIX -- Architecture: x86_64 -- Usage operation: RunInstances -- Image Type: machine -- Virtualization type: hvm -- Description: CSIT SUT image based on Ubuntu Focal -- Root Device Name: /dev/sda1 -- Root Device Type: ebs +.. _csit_ami: + +CSIT Amazon Machine Images +-------------------------- + +An Amazon Machine Image (AMI) provides the information required to +launch an instance. CSIT is using Amazon Elastic Block Store (EBS) where +the root device for an instance launched from the AMI is a volume +created from an Amazon EBS snapshot. + +A the TG and SUT instances have slightly different software +requirements, we are defining two AMIs for TG and SUT separately. AMI +details examples: + +- TG: + + - AMI Name: csit_c5n_ubuntu_focal_tg + - Platform details: Linux/UNIX + - Architecture: x86_64 + - Usage operation: RunInstances + - Image Type: machine + - Virtualization type: hvm + - Description: CSIT TG image based on Ubuntu Focal + - Root Device Name: /dev/sda1 + - Root Device Type: ebs + +- SUT: + + - AMI Name: csit_c5n_ubuntu_focal_sut + - Platform details: Linux/UNIX + - Architecture: x86_64 + - Usage operation: RunInstances + - Image Type: machine + - Virtualization type: hvm + - Description: CSIT SUT image based on Ubuntu Focal + - Root Device Name: /dev/sda1 + - Root Device Type: ebs Both TG and SUT AMIs are created manually before launching topology and are not part of automated scripts. To create CSIT AMIs: @@ -42,4 +47,5 @@ part of automated scripts. To create CSIT AMIs: Building AMIs requires Hashicorp Packer with Amazon plugin installed. -.. [aws_ami] `Amazon Machine Images <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html>`_ +For more information, see +`Amazon Machine Images <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html>`_. diff --git a/docs/report/introduction/methodology_aws/aws_instances.rst b/docs/report/introduction/methodology_aws/aws_instances.rst index 0df0321c5f..18ae659de3 100644 --- a/docs/report/introduction/methodology_aws/aws_instances.rst +++ b/docs/report/introduction/methodology_aws/aws_instances.rst @@ -1,22 +1,40 @@ -Instances ---------- +AWS Performance Testbeds +------------------------ -CSIT is using C5n instances for high compute applications that can take -advantage of improved network throughput and packet rate performance. C5n -instances offers up to 100 Gbps network bandwidth and increased memory over -comparable C5 instances [aws_it]_. +CSIT implements two virtual machine topology types running in AWS EC2: -Features: +- **2-Node Topology**: Consists of one EC2 instance as a System Under + Test (SUT) and one EC2 instance acting as a Traffic Generator + (TG), with both instances connected into a ring topology. Used for + executing tests that require frame encapsulations supported by TG. -- 3.0 GHz Intel Xeon Platinum processors with Intel Advanced Vector Extension - 512 (AVX-512) instruction set. -- Sustained all core Turbo frequency of up to 3.4GHz, and single core turbo - frequency of up to 3.5 GHz. -- Requires HVM AMIs that include drivers for ENA and NVMe [aws_ena]_. -- Network bandwidth increases to up to 100 Gbps, delivering increased - performance for network intensive applications. -- Powered by the AWS Nitro System, a combination of dedicated hardware and - lightweight hypervisor. +- **3-Node Topology**: Consists of two EC2 instances acting as a Systems + Under Test (SUTs) and one EC2 instance acting as a Traffic Generator + (TG), with all instances connected into a ring topology. Used for + executing tests that require frame encapsulations not supported by TG + e.g. certain overlay tunnel encapsulations and IPsec. + +AWS EC2 Instances +----------------- + +CSIT is using AWS EC2 C5n instances as System Under Test and TG virtual +machines. C5n instances got selected to take advantage of high network +throughput and packet rate performance. C5n instances offer up to 100 +Gbps network bandwidth and increased memory over comparable C5 +instances. For more information, see +`Instance types <https://aws.amazon.com/ec2/instance-types/>`_. + +C5n features: + +- 3.0 GHz Intel Xeon Platinum (Skylake) processors with Intel AVX-512 + instructions. +- Sustained all core Turbo frequency of up to 3.4GHz, and single core + turbo frequency of up to 3.5 GHz. +- Requires HVM AMIs (Amazon Machine Images) that include drivers for ENA + and NVMe. See :ref:`csit_ami` for more information. +- Network bandwidth to up to 100 Gbps. +- Powered by the AWS Nitro System, a combination of dedicated hardware + and lightweight hypervisor. +-------------+------+--------------+------------------------+-----------------------------+----------------------+ | Model | vCPU | Memory (GiB) | Instance Storage (GiB) | Network Bandwidth (Gbps)*** | EBS Bandwidth (Mbps) | @@ -36,21 +54,24 @@ Features: |c5n.metal | 72 | 192 | EBS-Only | 100 | 19,000 | +-------------+------+--------------+------------------------+-----------------------------+----------------------+ -CSIT is configured by default to use `c5n.4xlarge` in `eu-central-1` AWS region -due to allocation stability issues with `c5n.9xlarge` in `eu-central-1` region. +CSIT is configured by default to use `c5n.4xlarge` in `eu-central-1` AWS +region due to allocation stability issues with `c5n.9xlarge` in +`eu-central-1` region. -AWS Elastic Network Adapter (ENA) ---------------------------------- +AWS EC2 Networking +------------------ -Enhanced networking uses single root I/O virtualization (SR-IOV) to provide -high-performance networking capabilities on supported instance types. SR-IOV is -a method of device virtualization that provides higher I/O performance and lower -CPU utilization when compared to traditional virtualized network interfaces -[aws_ena]_. +CSIT EC2 instances are equipped with AWS Elastic Network Adapter +(ENA) supporting AWS enhanced networking. Enhanced networking uses +single root I/O virtualization (SR-IOV) to provide high-performance +networking capabilities. For more information, see +`Elastic Network Adapter <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking-ena.html>`_. -Current advertised limits are captured in [aws_limits]_. +For more information about the current advertised AWS ENA performance +limits, see +`Computed optimized instances <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/compute-optimized-instances.html>`_. -.. [aws_it] `Instance types <https://aws.amazon.com/ec2/instance-types/>`_ -.. [aws_ena] `Elastic Network Adapter <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking-ena.html>`_ -.. [aws_limits] `<https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/compute-optimized-instances.html>`_
\ No newline at end of file +CSIT DUTs make use of AWS ENA DPDK driver supplied by AWS and specified +in +`amzn drivers dpdk <https://github.com/amzn/amzn-drivers/tree/master/userspace/dpdk>`_. diff --git a/docs/report/introduction/methodology_aws/aws_terraform.rst b/docs/report/introduction/methodology_aws/aws_terraform.rst index 7c73e04b20..ebbef9000a 100644 --- a/docs/report/introduction/methodology_aws/aws_terraform.rst +++ b/docs/report/introduction/methodology_aws/aws_terraform.rst @@ -1,11 +1,12 @@ -Terraform-aws-csit modules --------------------------- +AWS Deployments +--------------- -Terraform-aws-csit module is IaaC - infrastructure as a code. Module uses the -Amazon Web Services (AWS) provider to interact with resources provided by AWS -to orchestrate virtual environment for running CSIT tests. - -- `aws <https://registry.terraform.io/providers/hashicorp/aws/latest/>`_. +CSIT performance testbed deployments in AWS rely on +Infrastructure-as-a-C (IaaC) Terraform AWS providers. Terraform +providers specified in CSIT interact with resources provided by AWS to +orchestrate virtual environment for running CSIT performance tests. For +more information, see +`Terraform Registry aws <https://registry.terraform.io/providers/hashicorp/aws/latest/>`_. Compatibility ~~~~~~~~~~~~~ @@ -21,72 +22,72 @@ Compatibility Requirements ~~~~~~~~~~~~ -Required modules and provider -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +- Required Modules and Providers -- `aws <https://registry.terraform.io/providers/hashicorp/aws/latest>`_. -- `null <https://registry.terraform.io/providers/hashicorp/null/latest>`_. -- `tls <https://registry.terraform.io/providers/hashicorp/tls>`_. -- `vault <https://registry.terraform.io/providers/hashicorp/vault>`_. + - `Terraform Registry aws <https://registry.terraform.io/providers/hashicorp/aws/latest>`_. + - `Terraform Registry null <https://registry.terraform.io/providers/hashicorp/null/latest>`_. + - `Terraform Registry tls <https://registry.terraform.io/providers/hashicorp/tls>`_. + - `Terraform Registry vault <https://registry.terraform.io/providers/hashicorp/vault>`_. -Required software -^^^^^^^^^^^^^^^^^ +- Required software -- `Vault <https://releases.hashicorp.com/vault/>`_ service available on - specified ip/port. + - `Vault <https://releases.hashicorp.com/vault/>`_ service available + on specified ip/port. Usage ~~~~~ - OPTIONAL: Enable logging - Terraform does not have logging enabled by default, to enable logging - to stderr, set up TF_LOG variable with specified loglevel: - Available loglevels: TRACE, DEBUG, INFO, WARN, ERROR - :: + - Terraform does not have logging enabled by default, to enable logging + to stderr, set up TF_LOG variable with specified loglevel. + - Available loglevels: TRACE, DEBUG, INFO, WARN, ERROR: - export TF_LOG="LOGLEVEL" + :: - It is also possible to store logged output to a file by setting up - TF_LOG_PATH variable: + export TF_LOG="LOGLEVEL" - :: + - It is also possible to store logged output to a file by setting up + TF_LOG_PATH variable: - export TF_LOG_PATH="path/to/logfile" + :: + + export TF_LOG_PATH="path/to/logfile" - Run Terraform in a given root module folder depending on chosen testbed - topology. Terraform will deploy and configure instances and other resources, - all of these resources can be later identified on AWS via Environment tag. - By default, Environment tag "CSIT-AWS" is used. - Example: + topology. - :: + - Terraform will deploy and configure instances and other resources, + all of these resources can be later identified on AWS via + Environment tag. + - By default, Environment tag "CSIT-AWS" is used. Example: - cd fdio.infra.terraform/2n_aws_c5n/ - terraform init - terraform plan - terraform apply + :: - This will deploy environment with default values, you can check the defaults - in ./2n_aws_c5n/main.tf and ./2n_aws_c5n/variables.tf files + cd fdio.infra.terraform/2n_aws_c5n/ + terraform init + terraform plan + terraform apply - If you would like to change some of these values, you can: + - This will deploy environment with default values, you can check the + defaults in `./2n_aws_c5n/main.tf` and `./2n_aws_c5n/variables.tf` + files. + - If you would like to change some of these values, you can: - 1. Set up TF_VAR_* environment variables prior to running 'terraform apply': + - Set up TF_VAR_* environment variables prior to running 'terraform apply': - :: + :: - export TF_VAR_testbed_name="testbed1" + export TF_VAR_testbed_name="testbed1" - 2. Use '-var=varname=value' flag when running 'terraform apply': + - Use '-var=varname=value' flag when running 'terraform apply': - :: + :: - terraform apply -var=testbed_name=testbed1 + terraform apply -var=testbed_name=testbed1 - Note: - Only variables defined in variables.tf file of the root module can be - changed using these methods. + - Note: Only variables defined in `variables.tf` file of the root + module can be changed using these methods. - To clean up the AWS environment and remove all used resources, run: @@ -94,12 +95,14 @@ Usage terraform destroy -Example usage -~~~~~~~~~~~~~ +Deployment Example +~~~~~~~~~~~~~~~~~~ -These are the default values for the AWS modules. The following example is -2n topology (3n topology variant is very similar). Few variables are defined in -a `variable.tf` file. +Following is an example of a +`Terraform deploy module <https://git.fd.io/csit/tree/fdio.infra.terraform/2n_aws_c5n/main.tf>`_ +for a CSIT 2-Node testbed topology with AWS variables set to default +values. A number of variables is also defined in a +`separate Terraform variable file <https://git.fd.io/csit/tree/fdio.infra.terraform/2n_aws_c5n/variables.tf>`_. :: @@ -163,9 +166,10 @@ Secrets & Credentials Set credentials manually ^^^^^^^^^^^^^^^^^^^^^^^^ -To set the credentials manually you first need to tell the module to not fetch -credentials from Vault. To do that, set `provider "aws"` `access_key` and -`secret_key` to custom value or use credentials file as a source. +To set the credentials manually you first need to tell the module to not +fetch credentials from Vault. To do that, set `provider "aws"` +`access_key` and `secret_key` to custom value or use credentials file +as a source. :: diff --git a/docs/report/introduction/methodology_aws/index.rst b/docs/report/introduction/methodology_aws/index.rst index 5da5253ccf..3e247dc6ce 100644 --- a/docs/report/introduction/methodology_aws/index.rst +++ b/docs/report/introduction/methodology_aws/index.rst @@ -1,5 +1,5 @@ -Amazon Web Services -=================== +Testing in AWS EC2 +================== .. toctree:: |