The traffic generator working group is an adhoc, interdisciplinary working group focused on addressing the challenges of traffic generation, particularly as it relates to the challenges of test automation. It is not currently an approved OPNVF project nor is there a proposal planned at this time.
Name | Project | |
---|---|---|
Gene Snider | eugene.snider@huawei.com | VSPEF |
Daniel Smith | daniel.smith@ericsson.com | FUEL/YARDSTICK |
The need for traffic generation is an implicit requirement for testing in OPNFV. Unfortunately there is no standard mechanism defined to support this, leaving each project to develop its own strategy. The challenge that the various PODs are not necessarily consistent and may ( or may not ) have one or more traffic generators installed. This makes it more difficult to code and implement a general purpose solution.
The problem is further complicated by the installation and configuration of required packages for managing external devices. Many of these are proprietary, licensed software which may not be freely distributed and even if they can be distributed many of labs or 3rd party users may not have the physical devices. Consequently they cannot be integrated into the standard installers for automation.
Additionally it is a common practice to install these on the DUT where they conflict with or impede performance and, at the very least, will compete for system resources. It also makes it impossible to automate the installation process in a way that will work for all users.
The goal of the Traffic Generator Working Group is to get all the interested parties talking and see if we can arrive at a common set of requirements and possibly a common solution for the installation and management of the traffic generator platform.
A standardized TG platform is not, of itself, a complete solution. Traditional solutions would normally include some sort of client solution for the DUT or other test bed. The REST API proposal is intended to provide a standardized solution which can be leveraged by each project in a method consistent with that projects overall architecture and implementation.
The basic assumptions of the REST API are:
Based on these assumptions the REST API has two components.
Title: | Get Traffic Generator Information | |
URL: | /tg/v1/ or /tg/v1/:vendor or /tg/v1/:vendor/:model | |
Method: | GET | |
Header Params: | Optional: | AcceptType=json or html |
URL Params: | Required: | N/A |
Optional: | vendor=[alphanumeric] | |
model=[alphanumeric] | ||
Success Response: | HTTP Code: | 200 - OK |
URL: /tg/v1 | Returns collection of installed PGs | |
URL: /tg/v1/:vendor | Returns collection of install models | |
URL: /tg/v1/:vendor/:model | Returns device specific configuration data | |
Error Response: | HTTP Code: | 404 Not Found |
URL: /tg/v1 | No traffic generators installed | |
URL: /tg/v1/:vendor | No traffic generators installed for vendor | |
URL: /tg/v1/:vendor/:model | Model not installed or no config data available |
Title: | Configure Traffic Generator | ||
URL: | /tg/v1/:vendor/:model or /tg/v1/:id | ||
Method: | POST | ||
Header Params: | Optional: | AcceptType=json or html | Default: HTML |
URL Params: | Required: | vendor=[alphanumeric] | |
model=[alphanumeric] | |||
OR | |||
Id=[uuid] | |||
Optional: | N/A | ||
Data Params: | Required: | TOIT Configuration parameters as JSON | |
Optional: | N/A | ||
Success Response: | HTTP Code: | 200 | |
URL: /tg/v1/:vendor/:model | Returns device specific configuration data | ||
Error Response: | HTTP Code: | 404 Not Found | |
URL: /tg/v1/:vendor/:model | Device not found. No additional data returned | ||
HTTP Code: | 422 Unprocessable Entry | ||
URL: /tg/v1/:vendor/:model | Returns log message or debug info if available |
Title: | Get Available Traffic Flows | ||
URL: | /tg/v1/flow/:id | ||
Method: | GET | ||
Header Params: | Optional: | AcceptType=json or html | Default: HTML |
URL Params: | Required: | id=[uuid] | |
Optional: | N/A | ||
Data Params: | Required: | N/A | |
Optional: | N/A | ||
Success Response: | HTTP Code: | 200 | |
URL: /tg/v1/flow | Returns collection of available flows | ||
Error Response: | HTTP Code: | 404 <96> Not Found | |
URL: /tg/v1/flow | No available flows |
Title: | Start Traffic Flow | ||
URL: | /tg/v1/flow/:flow_id | ||
Method: | POST | ||
Header Params: | Optional: | AcceptType=json or html | Default: HTML |
URL Params: | Required: | flow_id=[uuid] | |
wait=[yes or no] | Wait for Completion | ||
Optional: | N/A | ||
Data Params: | Required: | TOIT Configuration Params as JSON | |
Optional: | N/A | ||
Success Response: | HTTP Code: | 200 | |
URL: /tg/v1/flow/:flow_id | flow_instance=[uuid] | ||
Error Response: | HTTP Code: | 404 <96> Not Found | |
URL: /tg/v1/flow/:flow_id | No available flow | ||
HTTP Code: | 422 Unprocessable Entry | ||
URL: /tg/v1/flow/:flow_id | Invalid parameters for traffic flow |
Title: | Terminate Traffic Flow | ||
URL: | /tg/v1/flow_instance/:flow_instance | ||
Method: | PUT | ||
Header Params: | Optional: | AcceptType=json or html | Default: HTML |
URL Params: | Required: | flow_instance=[uuid] | |
Optional: | N/A | ||
Data Params: | Required: | N/A | |
Optional: | N/A | ||
Success Response: | HTTP Code: | 200 | |
URL: /tg/v1/test/:flow_instance | |||
Error Response: | HTTP Code: | 404 Not Found | |
URL: /tg/v1/test/:flow_instance | No available flow | ||
HTTP Code: | 422 Unprocessable Entry | ||
URL: /tg/v1/test/:flow_instance | Invalid parameters for traffic flow |
Title: | Get Traffic Flow Results | ||
URL: | /tg/v1/test/:flow_instance | ||
Method: | GET | ||
Header Params: | Optional: | AcceptType=json or html | Default: HTML |
URL Params: | Required: | flow_instance=[uuid] | |
Optional: | N/A | ||
Data Params: | Required: | TOIT Configuration Params as JSON | |
Optional: | N/A | ||
Success Response: | HTTP Code: | 200 | |
URL: /tg/v1/test/:flow_instance | Flow result data | ||
Error Response: | HTTP Code: | 404 Not Found | |
URL: /tg/v1/test/:flow_instance | Instance no longer exists |
Title: | Delete Traffic Flow | ||
URL: | /tg/v1/test/:flow_instance | ||
Method: | GET | ||
Header Params: | Optional: | AcceptType=json or html | Default: HTML |
URL Params: | Required: | flow_instance=[uuid] | |
Optional: | N/A | ||
Data Params: | Required: | N/A | |
Optional: | N/A | ||
Success Response: | HTTP Code: | 200 | |
URL: /tg/v1/test/:flow_instance | Flow result data | ||
Error Response: | HTTP Code: | 404 Not Found | |
URL: /tg/v1/test/:flow_instance | Instance no longer exists |