Skip to content
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
wants to merge 190 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
190 commits
Select commit Hold shift + click to select a range
7c0e16d
Initial Checkin.
armdupre Apr 24, 2024
ebed693
Merge branch 'cloud-pull' into cloud
armdupre Apr 24, 2024
04dc919
Updated.
armdupre Apr 24, 2024
a40a341
Merge branch 'cloud-pull' into cloud
armdupre Apr 24, 2024
17b9961
Updated.
armdupre Apr 24, 2024
15cde8c
Updated.
armdupre Apr 24, 2024
a615726
Updated.
armdupre Apr 25, 2024
a84747c
Updated.
armdupre Apr 25, 2024
49b38d9
Updated.
armdupre Apr 25, 2024
5a48ae5
Updated.
armdupre Apr 25, 2024
1c41157
Initial Checkin.
armdupre Apr 25, 2024
945ae51
Updated.
armdupre Apr 25, 2024
72eeac6
Updated.
armdupre Apr 25, 2024
4b0a2e2
Updated.
armdupre Apr 25, 2024
ec4dbfb
Updated.
armdupre Apr 25, 2024
23236b7
Updated.
armdupre Apr 25, 2024
82675f6
Initial Checkin.
armdupre Apr 25, 2024
8006be5
Updated.
armdupre Apr 26, 2024
f7873ca
Updated.
armdupre Apr 26, 2024
51b4cd1
Initial Checkin.
armdupre Apr 26, 2024
f3e3b57
Merge branch 'main' into cloud
armdupre Apr 26, 2024
d396a88
Initial Checkin.
armdupre Apr 26, 2024
e476ae5
Renamed.
armdupre Apr 26, 2024
afe1619
Duplicate.
armdupre Apr 26, 2024
4a8dafe
Updated.
armdupre Apr 26, 2024
ce2b7e4
Updated.
armdupre Apr 26, 2024
1721c26
Updated.
armdupre Apr 26, 2024
bcd440a
Updated.
armdupre Apr 26, 2024
64f32a2
Updated.
armdupre Apr 26, 2024
d67ac3f
Updated.
armdupre Apr 26, 2024
1f52cc2
Updated.
armdupre Apr 29, 2024
ca048ae
Updated.
armdupre Apr 29, 2024
667f8de
Updated.
armdupre Apr 29, 2024
14664a4
Updated.
armdupre Apr 29, 2024
9c80a34
Updated.
armdupre Apr 29, 2024
44d724d
Updated.
armdupre Apr 29, 2024
0a8ccdb
Initial Checkin.
armdupre Apr 29, 2024
d7995a0
Updated.
armdupre Apr 29, 2024
306f32c
Initial Checkin.
armdupre Apr 29, 2024
d8346f9
Updated.
armdupre Apr 29, 2024
4bd3cef
Updated.
armdupre Apr 29, 2024
2446062
Copy Makefile in agent home directory
dosarudaniel Apr 30, 2024
e7d71a3
Update run.sh
dosarudaniel Apr 30, 2024
2d3b65e
Fix bug in setup_dpdk.sh
dosarudaniel May 2, 2024
ed21634
Update settings.json
dosarudaniel May 2, 2024
569270a
Update run.sh
dosarudaniel May 2, 2024
49ba761
Update Makefile
dosarudaniel May 2, 2024
f7eb4d3
Update Makefile
dosarudaniel May 2, 2024
0d76bd4
Update locals.tf
dosarudaniel May 2, 2024
0714294
Update Makefile
dosarudaniel May 2, 2024
b1d7a56
Update run.sh
dosarudaniel May 2, 2024
8081269
Update setup_dpdk.sh
dosarudaniel May 2, 2024
65a3d14
Update Makefile
dosarudaniel May 2, 2024
0038284
Update unidirectional.json
dosarudaniel May 2, 2024
b32d58e
Update Makefile
dosarudaniel May 2, 2024
eadd5ad
Update Makefile
dosarudaniel May 2, 2024
1fddf33
Update Makefile
dosarudaniel May 2, 2024
5137dc3
Update Makefile
dosarudaniel May 2, 2024
2ed0eb0
Update Makefile
dosarudaniel May 2, 2024
03be52b
Execute docker-compose in cloud-init
dosarudaniel May 3, 2024
327e923
Update docker-compose.yaml
dosarudaniel May 3, 2024
b0effbc
Update cloud-init.yml
dosarudaniel May 3, 2024
b411522
Update cloud-init.yml
dosarudaniel May 7, 2024
dc67f23
Update locals.tf
dosarudaniel May 7, 2024
cbb5be1
Update Makefile
dosarudaniel May 7, 2024
3d75beb
Update Makefile
dosarudaniel May 7, 2024
e861dec
Update setup_dpdk.sh
dosarudaniel May 7, 2024
3d53645
Update run.sh
dosarudaniel May 7, 2024
4007fe5
Update docker-compose.yaml
dosarudaniel May 7, 2024
00f56e5
Update unidirectional.json
dosarudaniel May 7, 2024
90c1fdd
Update setup_dpdk.sh
dosarudaniel May 8, 2024
9fe3bed
Update Makefile
dosarudaniel May 8, 2024
48c3e4b
Update setup_dpdk.sh
dosarudaniel May 8, 2024
4565889
Update setup_dpdk.sh
dosarudaniel May 8, 2024
c74c535
Update settings.json
dosarudaniel May 9, 2024
1840e88
Update Makefile
dosarudaniel May 9, 2024
78fc336
Update Makefile
dosarudaniel May 9, 2024
53e809a
Update test_unidirectional.py
dosarudaniel May 9, 2024
63c8228
Update test_unidirectional.py
dosarudaniel May 9, 2024
93a91b4
Update setup_dpdk.sh
dosarudaniel May 9, 2024
d2be7e0
Update Makefile
dosarudaniel May 10, 2024
c1634c2
Update Makefile
dosarudaniel May 10, 2024
7c0bea2
Update Makefile
dosarudaniel May 10, 2024
c64ed91
Update Makefile
dosarudaniel May 10, 2024
1bc4842
Update Makefile
dosarudaniel May 10, 2024
aa2a5aa
Update Makefile
dosarudaniel May 10, 2024
94f3563
Update Makefile
dosarudaniel May 10, 2024
4df4753
Update Makefile
dosarudaniel May 10, 2024
f69f681
Update setup_dpdk.sh
dosarudaniel May 10, 2024
3617c54
Update setup_dpdk.sh
dosarudaniel May 10, 2024
2845f2e
Update setup_dpdk.sh
dosarudaniel May 10, 2024
77dd5d4
Update Makefile
dosarudaniel May 10, 2024
e84de16
Update connect.sh
dosarudaniel May 10, 2024
a41f772
Update cloud-init.azure.yml
dosarudaniel May 10, 2024
a65cf07
Update Makefile
dosarudaniel May 10, 2024
a2282d8
Update connect.sh
dosarudaniel May 10, 2024
8d21988
Added set-config rule
dosarudaniel May 10, 2024
d86ae94
Create set_config.sh
dosarudaniel May 10, 2024
b3e91d9
Update Makefile
dosarudaniel May 10, 2024
9508f49
Update set_config.sh
dosarudaniel May 10, 2024
bf8481f
Update set_config.sh
dosarudaniel May 10, 2024
2a61a6e
Update unidirectional.json
dosarudaniel May 10, 2024
43c487c
Update settings.json
dosarudaniel May 10, 2024
db622cf
Update Makefile
dosarudaniel May 10, 2024
95bed82
Update Makefile
dosarudaniel May 10, 2024
24bb4e7
Update Makefile
dosarudaniel May 10, 2024
ed018f7
Update set_config.sh
dosarudaniel May 10, 2024
480273a
Update unidirectional.json
dosarudaniel May 10, 2024
33ec7f8
Update bidirectional.json
dosarudaniel May 10, 2024
fb97cfe
Update Makefile
dosarudaniel May 10, 2024
c81438e
Update Makefile
dosarudaniel May 10, 2024
2d8a492
Added MANA community version
dosarudaniel May 10, 2024
6799a16
Update
dosarudaniel May 10, 2024
a7116ed
Fix rfc2544 issue
dosarudaniel May 10, 2024
d237e8d
Fixed paths
dosarudaniel May 10, 2024
39ec8b7
Fixed community locals.tf files
dosarudaniel May 10, 2024
a9bfded
Added modules/community
dosarudaniel May 10, 2024
c10a0f3
Update
dosarudaniel May 10, 2024
7b50dfb
Update
dosarudaniel May 10, 2024
b1fcdaa
Update
dosarudaniel May 10, 2024
a62ef44
Update README.md
dosarudaniel May 10, 2024
86f6560
Update README.md
dosarudaniel May 10, 2024
7d217d1
Update README.md
dosarudaniel May 10, 2024
307014d
Update README.md
dosarudaniel May 10, 2024
14c8226
Update
dosarudaniel May 10, 2024
9a0e93a
Merge branch 'cloud' of github.com:open-traffic-generator/otg-example…
dosarudaniel May 10, 2024
1b5f575
Update
dosarudaniel May 10, 2024
acf2ed2
Update README.md
dosarudaniel May 10, 2024
4a41942
Update Makefile
dosarudaniel May 11, 2024
607faaf
Added results screenshots
dosarudaniel May 11, 2024
b1ae168
Update test_unidirectional.py
dosarudaniel May 11, 2024
0b38d04
Added results for rfc test
dosarudaniel May 11, 2024
f6d76ad
Merge branch 'cloud' of github.com:open-traffic-generator/otg-example…
dosarudaniel May 11, 2024
d929daf
Update test_rfc2544.py
dosarudaniel May 11, 2024
d4c60a9
Added rfc2544 results
dosarudaniel May 11, 2024
0b36aee
Merge branch 'cloud' of github.com:open-traffic-generator/otg-example…
dosarudaniel May 11, 2024
dfb499d
Fix config_file_path issue
dosarudaniel May 13, 2024
0c53e40
Update locals.tf
dosarudaniel May 13, 2024
44b455f
Update main.tf
dosarudaniel May 13, 2024
f3fc5bb
Update Makefile
dosarudaniel May 13, 2024
a677087
Update Makefile
dosarudaniel May 13, 2024
a787805
Update Makefile
dosarudaniel May 13, 2024
69e1c0a
Update Makefile
dosarudaniel May 13, 2024
8d74685
Update Makefile
dosarudaniel May 13, 2024
f2fc24e
Update cloud-init.azure.yml
dosarudaniel May 13, 2024
06a284e
Use Experimental_Boost192
dosarudaniel May 13, 2024
32ba790
Update cloud-init.azure.yml
dosarudaniel May 14, 2024
f0be7d1
Update locals.tf
dosarudaniel May 14, 2024
872fb6c
Update cloud-init.azure.yml
dosarudaniel May 14, 2024
4872ec0
Added community mana and community mellanox
dosarudaniel May 14, 2024
aa87d9f
Merge branch 'cloud' of github.com:open-traffic-generator/otg-example…
dosarudaniel May 14, 2024
42f82c0
Update
dosarudaniel May 14, 2024
82d38b8
Include Standard_F8s_v2 type
dosarudaniel May 14, 2024
b558b97
update readme
dosarudaniel May 14, 2024
c0090af
Update README.md
dosarudaniel May 14, 2024
c085610
Update README.md
dosarudaniel May 14, 2024
73bba7a
Update README.md
dosarudaniel May 14, 2024
7f9a36d
Update README.md
dosarudaniel May 14, 2024
19356c5
Update README.md
dosarudaniel May 14, 2024
ca5662b
Update README.md
dosarudaniel May 14, 2024
f25509e
Update variables.tf
dosarudaniel May 14, 2024
808c1c9
Added results images
dosarudaniel May 14, 2024
eff10f0
Added community mellanox results
dosarudaniel May 15, 2024
74a1ca5
Add files via upload
dosarudaniel May 15, 2024
954f6b4
Update README.md
dosarudaniel May 15, 2024
eadf793
Add files via upload
dosarudaniel May 15, 2024
202aaf5
Update README.md
dosarudaniel May 23, 2024
230609b
Update README.md
dosarudaniel May 23, 2024
f7108cf
Update TE version to 1.8.0.7, Update KENG controller version to 1.5.0…
dosarudaniel May 28, 2024
8bf6d37
Revert "Update TE version to 1.8.0.7, Update KENG controller version …
dosarudaniel May 28, 2024
4baa5f9
Update test_unidirectional.py
dosarudaniel May 29, 2024
2ade1e1
Merge branch 'main' into cloud
armdupre Jun 22, 2024
d20e5d0
Merge branch 'main' into cloud
armdupre Jun 22, 2024
f657acf
Updated.
armdupre Jul 23, 2024
1b3eda7
Merge branch 'main' into cloud
armdupre Jul 23, 2024
5f39784
Duplicate.
armdupre Jul 23, 2024
a650482
Duplicate.
armdupre Jul 23, 2024
8965181
Renamed.
armdupre Jul 23, 2024
395b203
Updated.
armdupre Jul 23, 2024
9108826
Updated.
armdupre Jul 23, 2024
dad9629
Updated.
armdupre Jul 23, 2024
3b2146e
Updated.
armdupre Jul 23, 2024
4a710fb
Duplicate.
armdupre Jul 23, 2024
6c3a90f
Updated.
armdupre Jul 23, 2024
7f1f7fb
Updated.
armdupre Jul 23, 2024
891b0c1
Updated.
armdupre Jul 25, 2024
dcb8595
Initial Checkin.
armdupre Jul 25, 2024
1198c36
Merge branch 'main' into cloud-pull
armdupre Aug 8, 2024
7cd289b
Updated.
armdupre Aug 13, 2024
cec9058
Merge branch 'main' into cloud-pull
armdupre Aug 21, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ runcmd:
- Agent2Eth1MacAddress=$(aws ec2 describe-network-interfaces --filters Name=addresses.private-ip-address,Values=${Agent2Eth1PrivateIpAddresses[0]} Name=vpc-id,Values=${VpcId} | jq .NetworkInterfaces[0].MacAddress --raw-output)
- sed -i "s/Agent1Eth1MacAddress/$Agent1Eth1MacAddress/g" ${GitRepoConfigPath}/*.json
- sed -i "s/Agent2Eth1MacAddress/$Agent2Eth1MacAddress/g" ${GitRepoConfigPath}/*.json
- sed -i "s/Agent1Eth1IpAddress/${Agent1Eth1PrivateIpAddresses[0]}/g" ${GitRepoConfigPath}/*.json
- sed -i "s/Agent1Eth1IpAddress/${Agent1Eth1PrivateIpAddresses[0]}/g" ${GitRepoConfigPath}/*.json
- sed -i "s/Agent2Eth1IpAddress/${Agent2Eth1PrivateIpAddresses[0]}/g" ${GitRepoConfigPath}/*.json
- sed -i "s/Agent2Eth0IpAddress/${Agent2Eth0IpAddress}/g" ${GitRepoExecPath}/settings.json
merge_how:
Expand Down
51 changes: 0 additions & 51 deletions public-cloud/azure/ixia-c-dpdk-azure-mana/README.md

This file was deleted.

29 changes: 29 additions & 0 deletions public-cloud/azure/ixia-c-dpdk-azure-mellanox/Makefile
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 public-cloud/azure/ixia-c-dpdk-azure-mellanox/README.md
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.
Copy link
Member

@dosarudaniel dosarudaniel Aug 22, 2024

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

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
```
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
}
}
}
]
}
]
}
Loading