-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ixia-c traffic engine deployment on Azure with Mellanox DPDK #76
Open
armdupre
wants to merge
190
commits into
main
Choose a base branch
from
cloud-pull
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
190 commits
Select commit
Hold shift + click to select a range
7c0e16d
Initial Checkin.
armdupre ebed693
Merge branch 'cloud-pull' into cloud
armdupre 04dc919
Updated.
armdupre a40a341
Merge branch 'cloud-pull' into cloud
armdupre 17b9961
Updated.
armdupre 15cde8c
Updated.
armdupre a615726
Updated.
armdupre a84747c
Updated.
armdupre 49b38d9
Updated.
armdupre 5a48ae5
Updated.
armdupre 1c41157
Initial Checkin.
armdupre 945ae51
Updated.
armdupre 72eeac6
Updated.
armdupre 4b0a2e2
Updated.
armdupre ec4dbfb
Updated.
armdupre 23236b7
Updated.
armdupre 82675f6
Initial Checkin.
armdupre 8006be5
Updated.
armdupre f7873ca
Updated.
armdupre 51b4cd1
Initial Checkin.
armdupre f3e3b57
Merge branch 'main' into cloud
armdupre d396a88
Initial Checkin.
armdupre e476ae5
Renamed.
armdupre afe1619
Duplicate.
armdupre 4a8dafe
Updated.
armdupre ce2b7e4
Updated.
armdupre 1721c26
Updated.
armdupre bcd440a
Updated.
armdupre 64f32a2
Updated.
armdupre d67ac3f
Updated.
armdupre 1f52cc2
Updated.
armdupre ca048ae
Updated.
armdupre 667f8de
Updated.
armdupre 14664a4
Updated.
armdupre 9c80a34
Updated.
armdupre 44d724d
Updated.
armdupre 0a8ccdb
Initial Checkin.
armdupre d7995a0
Updated.
armdupre 306f32c
Initial Checkin.
armdupre d8346f9
Updated.
armdupre 4bd3cef
Updated.
armdupre 2446062
Copy Makefile in agent home directory
dosarudaniel e7d71a3
Update run.sh
dosarudaniel 2d3b65e
Fix bug in setup_dpdk.sh
dosarudaniel ed21634
Update settings.json
dosarudaniel 569270a
Update run.sh
dosarudaniel 49ba761
Update Makefile
dosarudaniel f7eb4d3
Update Makefile
dosarudaniel 0d76bd4
Update locals.tf
dosarudaniel 0714294
Update Makefile
dosarudaniel b1d7a56
Update run.sh
dosarudaniel 8081269
Update setup_dpdk.sh
dosarudaniel 65a3d14
Update Makefile
dosarudaniel 0038284
Update unidirectional.json
dosarudaniel b32d58e
Update Makefile
dosarudaniel eadd5ad
Update Makefile
dosarudaniel 1fddf33
Update Makefile
dosarudaniel 5137dc3
Update Makefile
dosarudaniel 2ed0eb0
Update Makefile
dosarudaniel 03be52b
Execute docker-compose in cloud-init
dosarudaniel 327e923
Update docker-compose.yaml
dosarudaniel b0effbc
Update cloud-init.yml
dosarudaniel b411522
Update cloud-init.yml
dosarudaniel dc67f23
Update locals.tf
dosarudaniel cbb5be1
Update Makefile
dosarudaniel 3d75beb
Update Makefile
dosarudaniel e861dec
Update setup_dpdk.sh
dosarudaniel 3d53645
Update run.sh
dosarudaniel 4007fe5
Update docker-compose.yaml
dosarudaniel 00f56e5
Update unidirectional.json
dosarudaniel 90c1fdd
Update setup_dpdk.sh
dosarudaniel 9fe3bed
Update Makefile
dosarudaniel 48c3e4b
Update setup_dpdk.sh
dosarudaniel 4565889
Update setup_dpdk.sh
dosarudaniel c74c535
Update settings.json
dosarudaniel 1840e88
Update Makefile
dosarudaniel 78fc336
Update Makefile
dosarudaniel 53e809a
Update test_unidirectional.py
dosarudaniel 63c8228
Update test_unidirectional.py
dosarudaniel 93a91b4
Update setup_dpdk.sh
dosarudaniel d2be7e0
Update Makefile
dosarudaniel c1634c2
Update Makefile
dosarudaniel 7c0bea2
Update Makefile
dosarudaniel c64ed91
Update Makefile
dosarudaniel 1bc4842
Update Makefile
dosarudaniel aa2a5aa
Update Makefile
dosarudaniel 94f3563
Update Makefile
dosarudaniel 4df4753
Update Makefile
dosarudaniel f69f681
Update setup_dpdk.sh
dosarudaniel 3617c54
Update setup_dpdk.sh
dosarudaniel 2845f2e
Update setup_dpdk.sh
dosarudaniel 77dd5d4
Update Makefile
dosarudaniel e84de16
Update connect.sh
dosarudaniel a41f772
Update cloud-init.azure.yml
dosarudaniel a65cf07
Update Makefile
dosarudaniel a2282d8
Update connect.sh
dosarudaniel 8d21988
Added set-config rule
dosarudaniel d86ae94
Create set_config.sh
dosarudaniel b3e91d9
Update Makefile
dosarudaniel 9508f49
Update set_config.sh
dosarudaniel bf8481f
Update set_config.sh
dosarudaniel 2a61a6e
Update unidirectional.json
dosarudaniel 43c487c
Update settings.json
dosarudaniel db622cf
Update Makefile
dosarudaniel 95bed82
Update Makefile
dosarudaniel 24bb4e7
Update Makefile
dosarudaniel ed018f7
Update set_config.sh
dosarudaniel 480273a
Update unidirectional.json
dosarudaniel 33ec7f8
Update bidirectional.json
dosarudaniel fb97cfe
Update Makefile
dosarudaniel c81438e
Update Makefile
dosarudaniel 2d8a492
Added MANA community version
dosarudaniel 6799a16
Update
dosarudaniel a7116ed
Fix rfc2544 issue
dosarudaniel d237e8d
Fixed paths
dosarudaniel 39ec8b7
Fixed community locals.tf files
dosarudaniel a9bfded
Added modules/community
dosarudaniel c10a0f3
Update
dosarudaniel 7b50dfb
Update
dosarudaniel b1fcdaa
Update
dosarudaniel a62ef44
Update README.md
dosarudaniel 86f6560
Update README.md
dosarudaniel 7d217d1
Update README.md
dosarudaniel 307014d
Update README.md
dosarudaniel 14c8226
Update
dosarudaniel 9a0e93a
Merge branch 'cloud' of github.com:open-traffic-generator/otg-example…
dosarudaniel 1b5f575
Update
dosarudaniel acf2ed2
Update README.md
dosarudaniel 4a41942
Update Makefile
dosarudaniel 607faaf
Added results screenshots
dosarudaniel b1ae168
Update test_unidirectional.py
dosarudaniel 0b38d04
Added results for rfc test
dosarudaniel f6d76ad
Merge branch 'cloud' of github.com:open-traffic-generator/otg-example…
dosarudaniel d929daf
Update test_rfc2544.py
dosarudaniel d4c60a9
Added rfc2544 results
dosarudaniel 0b36aee
Merge branch 'cloud' of github.com:open-traffic-generator/otg-example…
dosarudaniel dfb499d
Fix config_file_path issue
dosarudaniel 0c53e40
Update locals.tf
dosarudaniel 44b455f
Update main.tf
dosarudaniel f3fc5bb
Update Makefile
dosarudaniel a677087
Update Makefile
dosarudaniel a787805
Update Makefile
dosarudaniel 69e1c0a
Update Makefile
dosarudaniel 8d74685
Update Makefile
dosarudaniel f2fc24e
Update cloud-init.azure.yml
dosarudaniel 06a284e
Use Experimental_Boost192
dosarudaniel 32ba790
Update cloud-init.azure.yml
dosarudaniel f0be7d1
Update locals.tf
dosarudaniel 872fb6c
Update cloud-init.azure.yml
dosarudaniel 4872ec0
Added community mana and community mellanox
dosarudaniel aa87d9f
Merge branch 'cloud' of github.com:open-traffic-generator/otg-example…
dosarudaniel 42f82c0
Update
dosarudaniel 82d38b8
Include Standard_F8s_v2 type
dosarudaniel b558b97
update readme
dosarudaniel c0090af
Update README.md
dosarudaniel c085610
Update README.md
dosarudaniel 73bba7a
Update README.md
dosarudaniel 7f9a36d
Update README.md
dosarudaniel 19356c5
Update README.md
dosarudaniel ca5662b
Update README.md
dosarudaniel f25509e
Update variables.tf
dosarudaniel 808c1c9
Added results images
dosarudaniel eff10f0
Added community mellanox results
dosarudaniel 74a1ca5
Add files via upload
dosarudaniel 954f6b4
Update README.md
dosarudaniel eadf793
Add files via upload
dosarudaniel 202aaf5
Update README.md
dosarudaniel 230609b
Update README.md
dosarudaniel f7108cf
Update TE version to 1.8.0.7, Update KENG controller version to 1.5.0…
dosarudaniel 8bf6d37
Revert "Update TE version to 1.8.0.7, Update KENG controller version …
dosarudaniel 4baa5f9
Update test_unidirectional.py
dosarudaniel 2ade1e1
Merge branch 'main' into cloud
armdupre d20e5d0
Merge branch 'main' into cloud
armdupre f657acf
Updated.
armdupre 1b3eda7
Merge branch 'main' into cloud
armdupre 5f39784
Duplicate.
armdupre a650482
Duplicate.
armdupre 8965181
Renamed.
armdupre 395b203
Updated.
armdupre 9108826
Updated.
armdupre dad9629
Updated.
armdupre 3b2146e
Updated.
armdupre 4a710fb
Duplicate.
armdupre 6c3a90f
Updated.
armdupre 7f1f7fb
Updated.
armdupre 891b0c1
Updated.
armdupre dcb8595
Initial Checkin.
armdupre 1198c36
Merge branch 'main' into cloud-pull
armdupre 7cd289b
Updated.
armdupre cec9058
Merge branch 'main' into cloud-pull
armdupre File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
############################### | ||
# Infrastructure deployment | ||
############################### | ||
|
||
all: azure run | ||
|
||
.PHONY: azure | ||
azure: | ||
$(MAKE) -C ./deployment/Terraform all | ||
|
||
.PHONY: clean | ||
clean: | ||
$(MAKE) -C ./deployment/Terraform clean | ||
|
||
.PHONY: run | ||
run: | ||
$(MAKE) -C ./deployment/CloudShell run | ||
|
||
.PHONY: connect | ||
connect: connect-agent1 | ||
|
||
.PHONY: connect-agent1 | ||
connect-agent1: | ||
$(MAKE) -C ./deployment/CloudShell connect-agent1 | ||
|
||
.PHONY: connect-agent2 | ||
connect-agent2: | ||
$(MAKE) -C ./deployment/CloudShell connect-agent2 | ||
|
116 changes: 78 additions & 38 deletions
116
public-cloud/azure/ixia-c-dpdk-azure-mellanox/README.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,51 +1,91 @@ | ||
# KENG-on-Azure-Boost-2-Agents-2-Eth-1-Vnet-1-Public-Subnet-1-Private-Subnet | ||
# Ixia-c traffic engine deployment on Azure with Mellanox DPDK | ||
|
||
## Description | ||
This deployment creates a topology with a single virtual network having a single public facing subnet and a single private subnet. | ||
## Overview | ||
This is a public cloud lab where [Ixia-c](https://github.com/open-traffic-generator/ixia-c) has two traffic ports connected within a single subnet of an Azure. | ||
The environment is deployed using [Terraform](https://www.terraform.io/) and [Cloud-Init](https://cloud-init.io/) is used to configure the application and traffic engines. | ||
Performance improvements are enabled through [DPDK](https://www.dpdk.org/) support. | ||
Once the lab is up, a Python script is used to request Ixia-c to generate traffic and report statistics. | ||
|
||
## Authentication Variables | ||
## Prerequisites | ||
* This lab requires the commands below to be executed from within [Azure CloudShell](https://learn.microsoft.com/en-us/azure/cloud-shell/overview). | ||
* The created VMs needs to have at least ConnectX4 or ConnectX5. Mellanox ConnectX3 is not longer supported. | ||
Use the `lspci` command to check NIC type. | ||
E.g. | ||
``` | ||
terraform.hcp.auto.tfvars | ||
ubuntu@terraform-v8KJ8A-azure-community-mellanox-agent1-instance:~$ lspci | ||
8ada:00:02.0 Ethernet controller: Mellanox Technologies MT27710 Family [ConnectX-4 Lx Virtual Function] (rev 80) | ||
``` | ||
You **MUST** uncomment all lines in this file and replace values to match your particular environment. | ||
Otherwise, Terraform will prompt the user to supply input arguents via cli. | ||
|
||
## Required Variables | ||
``` | ||
terraform.required.auto.tfvars | ||
``` | ||
You **MUST** uncomment all lines in this file and replace values to match your particular environment. | ||
Otherwise, Terraform will prompt the user to supply input arguents via cli. | ||
## Clone the repository | ||
|
||
## Optional Variables | ||
``` | ||
terraform.optional.auto.tfvars | ||
git clone --recursive https://github.com/open-traffic-generator/otg-examples.git | ||
``` | ||
You **MAY** uncomment one or more lines as needed in this file and replace values to match your particular environment. | ||
|
||
## Required Usage | ||
``` | ||
terraform init | ||
terraform apply -auto-approve | ||
terraform destroy -auto-approve | ||
terraform output SshKey | tail -n +3 | head -n-3 | sed "s/^[ \t]*//" > SshKey.pem | ||
Agent1DnsName=$(terraform output | grep agent1 | sed -n 's/.*=.//p' | tr -d '"') | ||
``` | ||
## Navigate to the lab subdirectory within the repository | ||
|
||
## Optional Usage | ||
``` | ||
terraform validate | ||
terraform plan | ||
terraform state list | ||
terraform output | ||
cd otg-examples/public-cloud/azure/ixia-c-dpdk-azure-mellanox | ||
``` | ||
|
||
## KENG Sample Usage | ||
``` | ||
chmod 400 SshKey.pem | ||
ssh -i SshKey.pem ubuntu@$Agent1DnsName | ||
$ source ./venv/bin/activate | ||
$ cd keng-python | ||
$ docker ps | ||
$ ./unidirectional.sh -s 4100 | ||
``` | ||
## Deploy Ixia-c lab | ||
|
||
1. Create Terraform deployment. | ||
|
||
2. Wait approximately 6 minutes for infrastructure to be deployed. | ||
|
||
3. Execute Python test case to generate traffic between Azure instances. | ||
|
||
``` | ||
make azure | ||
``` | ||
|
||
4. Connect to Agent1 Azure VM . | ||
|
||
``` | ||
make connect | ||
``` | ||
|
||
|
||
## Execute Traffic Test additional times as needed | ||
|
||
1. Execute unidirectional test case to generate traffic between Azure instances. | ||
|
||
``` | ||
ubuntu@agent1$ make run | ||
``` | ||
|
||
2. Execute bidirectional test case to generate traffic between Azure instances. | ||
|
||
``` | ||
ubuntu@agent1$ make run-bidirectional | ||
``` | ||
|
||
3. Execute rfc2544 test case to generate traffic between Azure instances. | ||
|
||
``` | ||
ubuntu@agent1$ make run-rfc2544 | ||
``` | ||
|
||
4. Optionally execute on Agent1 if instance is rebooted prior to running traffic | ||
|
||
``` | ||
ubuntu@agent1$ make dpdk | ||
``` | ||
|
||
## Results | ||
1. Unidirectional TCP flow | ||
![Diagram](./images/unidirectional_community_mellanox.png) | ||
2. Bidirectional TCP flow | ||
![Diagram](./images/bidirectional_community_mellanox.png) | ||
1. RFC-2544 for the following frame sizes: 256B, 512B, 1024B and 1500B | ||
![Diagram](./images/rfc2544_256-512-1024-1500B_community_mellanox.png) | ||
|
||
## Destroy the lab | ||
|
||
1. Destroy the Terraform deployment | ||
|
||
``` | ||
ubuntu@agent1$ exit | ||
make clean | ||
``` |
160 changes: 160 additions & 0 deletions
160
public-cloud/azure/ixia-c-dpdk-azure-mellanox/configs/bidirectional.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,160 @@ | ||
{ | ||
"ports": [ | ||
{ | ||
"name": "VM1-TE1", | ||
"location": "" | ||
}, | ||
{ | ||
"name": "VM2-TE1", | ||
"location": "" | ||
} | ||
], | ||
"layer1": [ | ||
{ | ||
"name": "l1", | ||
"port_names": [ | ||
"VM1-TE1", | ||
"VM2-TE1" | ||
], | ||
"speed": "speed_10_gbps" | ||
} | ||
], | ||
"flows": [ | ||
{ | ||
"name": "f1", | ||
"tx_rx": { | ||
"choice": "port", | ||
"port": { | ||
"tx_name": "VM1-TE1", | ||
"rx_names": ["VM2-TE1"] | ||
} | ||
}, | ||
"metrics": { | ||
"enable": true | ||
}, | ||
"size": { | ||
"choice": "fixed", | ||
"fixed": 4100 | ||
}, | ||
"rate": { | ||
"choice": "percentage", | ||
"percentage": 10 | ||
}, | ||
"duration": { | ||
"choice": "fixed_seconds", | ||
"fixed_seconds": { | ||
"seconds": 30 | ||
} | ||
}, | ||
"packet": [ | ||
{ | ||
"choice": "ethernet", | ||
"ethernet": { | ||
"dst": { | ||
"choice": "value", | ||
"value": "Agent2Eth1MacAddress" | ||
}, | ||
"src": { | ||
"choice": "value", | ||
"value": "Agent1Eth1MacAddress" | ||
} | ||
} | ||
}, | ||
{ | ||
"choice": "ipv4", | ||
"ipv4": { | ||
"dst": { | ||
"choice": "value", | ||
"value": "Agent2Eth1IpAddress" | ||
}, | ||
"src": { | ||
"choice": "value", | ||
"value": "Agent1Eth1IpAddress" | ||
} | ||
} | ||
}, | ||
{ | ||
"choice": "tcp", | ||
"tcp": { | ||
"src_port": { | ||
"choice": "value", | ||
"value": 643 | ||
}, | ||
"dst_port": { | ||
"choice": "value", | ||
"value": 543 | ||
} | ||
} | ||
} | ||
] | ||
}, | ||
{ | ||
"name": "f1-reversed", | ||
"tx_rx": { | ||
"choice": "port", | ||
"port": { | ||
"tx_name": "VM2-TE1", | ||
"rx_names": ["VM1-TE1"] | ||
} | ||
}, | ||
"metrics": { | ||
"enable": true | ||
}, | ||
"size": { | ||
"choice": "fixed", | ||
"fixed": 4100 | ||
}, | ||
"rate": { | ||
"choice": "percentage", | ||
"percentage": 10 | ||
}, | ||
"duration": { | ||
"choice": "fixed_seconds", | ||
"fixed_seconds": { | ||
"seconds": 30 | ||
} | ||
}, | ||
"packet": [ | ||
{ | ||
"choice": "ethernet", | ||
"ethernet": { | ||
"dst": { | ||
"choice": "value", | ||
"value": "Agent1Eth1MacAddress" | ||
}, | ||
"src": { | ||
"choice": "value", | ||
"value": "Agent2Eth1MacAddress" | ||
} | ||
} | ||
}, | ||
{ | ||
"choice": "ipv4", | ||
"ipv4": { | ||
"dst": { | ||
"choice": "value", | ||
"value": "Agent1Eth1IpAddress" | ||
}, | ||
"src": { | ||
"choice": "value", | ||
"value": "Agent2Eth1IpAddress" | ||
} | ||
} | ||
}, | ||
{ | ||
"choice": "tcp", | ||
"tcp": { | ||
"src_port": { | ||
"choice": "value", | ||
"value": 653 | ||
}, | ||
"dst_port": { | ||
"choice": "value", | ||
"value": 553 | ||
} | ||
} | ||
} | ||
] | ||
} | ||
] | ||
} |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
typo: is not longer supported -> is no longer supported