From 2f9219dfa44982779990e13c177a703f2239b488 Mon Sep 17 00:00:00 2001 From: boucherv Date: Wed, 23 Aug 2017 16:23:34 +0200 Subject: [PATCH] New testcase creation named "cloudify_ims_perf" * IMS deployment with "cloudify_ims" testcase * IXIA infrastructure creation with SNAPS * Module configuration with REST API * Configure and run the perf tests with REST API Change-Id: I3dfddda87f9e9f4f03df375f6a032ded26a627b3 Signed-off-by: boucherv Co-Authored-By: Arturo Sordo Miralles --- docs/testing/user/userguide/test_details.rst | 23 + functest/ci/config_functest.yaml | 5 +- functest/opnfv_tests/vnf/ims/cloudify_ims_perf.py | 509 + .../opnfv_tests/vnf/ims/cloudify_ims_perf.yaml | 84 + functest/opnfv_tests/vnf/ims/ixia/__init__.py | 0 .../ims/ixia/files/REG_CALL_OPNFV_v13.rxf.template | 16731 +++++++++++++++++++ .../vnf/ims/ixia/files/Registration_only_LPS.tst | Bin 0 -> 491520 bytes .../opnfv_tests/vnf/ims/ixia/files/SIPCall.tst | Bin 0 -> 573440 bytes .../vnf/ims/ixia/utils/IxChassisUtils.py | 150 + .../opnfv_tests/vnf/ims/ixia/utils/IxLoadUtils.py | 397 + .../opnfv_tests/vnf/ims/ixia/utils/IxRestUtils.py | 192 + .../opnfv_tests/vnf/ims/ixia/utils/__init__.py | 0 requirements.txt | 1 + 13 files changed, 18091 insertions(+), 1 deletion(-) create mode 100644 functest/opnfv_tests/vnf/ims/cloudify_ims_perf.py create mode 100644 functest/opnfv_tests/vnf/ims/cloudify_ims_perf.yaml create mode 100644 functest/opnfv_tests/vnf/ims/ixia/__init__.py create mode 100644 functest/opnfv_tests/vnf/ims/ixia/files/REG_CALL_OPNFV_v13.rxf.template create mode 100644 functest/opnfv_tests/vnf/ims/ixia/files/Registration_only_LPS.tst create mode 100644 functest/opnfv_tests/vnf/ims/ixia/files/SIPCall.tst create mode 100644 functest/opnfv_tests/vnf/ims/ixia/utils/IxChassisUtils.py create mode 100644 functest/opnfv_tests/vnf/ims/ixia/utils/IxLoadUtils.py create mode 100644 functest/opnfv_tests/vnf/ims/ixia/utils/IxRestUtils.py create mode 100644 functest/opnfv_tests/vnf/ims/ixia/utils/__init__.py diff --git a/docs/testing/user/userguide/test_details.rst b/docs/testing/user/userguide/test_details.rst index f23abc509..978614895 100644 --- a/docs/testing/user/userguide/test_details.rst +++ b/docs/testing/user/userguide/test_details.rst @@ -446,6 +446,29 @@ The Clearwater architecture is described as follows: :align: center :alt: vIMS architecture + cloudify_ims_perf + ^^^^^^^^^^^^ + This testcase extends the cloudify_ims test case. + The first part is similar but the testing part is different. + The testing part consists in automating a realistic signaling load on the vIMS + using an Ixia loader (proprietary tools) + - You need to have access to an Ixia licence server + defined in the configuration file. + + To start this test you need to have access to an Ixia licence server and have ixia image locally + - + case_name: cloudify_ims_perf + project_name: functest + criteria: 100 + blocking: false + description: '' + dependencies: + installer: '' + scenario: 'o' + run: + module: 'functest.opnfv_tests.vnf.ims.cloudify_ims_perf' + class: 'CloudifyImsPerf' + orchestra_openims ^^^^^^^^^^^^^^^^^ Orchestra test case deals with the deployment of OpenIMS with OpenBaton diff --git a/functest/ci/config_functest.yaml b/functest/ci/config_functest.yaml index cfcc728a2..a5f63bb5f 100644 --- a/functest/ci/config_functest.yaml +++ b/functest/ci/config_functest.yaml @@ -144,6 +144,10 @@ vnf: tenant_name: cloudify_ims tenant_description: vIMS config: cloudify_ims.yaml + cloudify_ims_perf: + tenant_name: cloudify_ims_perf + tenant_description: vIMS + config: cloudify_ims_perf.yaml orchestra_openims: tenant_name: orchestra_openims tenant_description: OpenIMS deployed with Open Baton @@ -192,4 +196,3 @@ energy_recorder: api_url: http://energy.opnfv.fr/resources api_user: "" api_password: "" - diff --git a/functest/opnfv_tests/vnf/ims/cloudify_ims_perf.py b/functest/opnfv_tests/vnf/ims/cloudify_ims_perf.py new file mode 100644 index 000000000..90068525a --- /dev/null +++ b/functest/opnfv_tests/vnf/ims/cloudify_ims_perf.py @@ -0,0 +1,509 @@ +#!/usr/bin/env python + +# Copyright (c) 2017 Orange, IXIA and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 + +"""CloudifyImsPerf testcase implementation.""" + +import logging +import os +import time + +import json +import yaml +import paramiko +import dns.resolver +from jinja2 import Environment, FileSystemLoader + + +from functest.energy import energy +from functest.opnfv_tests.openstack.snaps import snaps_utils +import functest.opnfv_tests.vnf.ims.cloudify_ims as cloudify_ims +from functest.utils.constants import CONST + +from snaps.openstack.create_network import (NetworkSettings, SubnetSettings, + OpenStackNetwork, PortSettings) +from snaps.openstack.create_security_group import (SecurityGroupSettings, + SecurityGroupRuleSettings, + Direction, Protocol, + OpenStackSecurityGroup) +from snaps.openstack.create_router import RouterSettings, OpenStackRouter +from snaps.openstack.create_instance import (VmInstanceSettings, + FloatingIpSettings, + OpenStackVmInstance) +from snaps.openstack.create_flavor import FlavorSettings, OpenStackFlavor +from snaps.openstack.create_image import ImageSettings + +from ixia.utils.IxChassisUtils import ChassisRestAPI +import ixia.utils.IxLoadUtils as IxLoadUtils +import ixia.utils.IxRestUtils as IxRestUtils + +__author__ = "Valentin Boucher " + + +class CloudifyImsPerf(cloudify_ims.CloudifyIms): + """Clearwater vIMS deployed with Cloudify Orchestrator Case.""" + + __logger = logging.getLogger(__name__) + + def __init__(self, **kwargs): + """Initialize CloudifyIms testcase object.""" + if "case_name" not in kwargs: + kwargs["case_name"] = "cloudify_ims_perf" + super(CloudifyImsPerf, self).__init__(**kwargs) + + # Retrieve the configuration + try: + self.config = CONST.__getattribute__( + 'vnf_{}_config'.format(self.case_name)) + except Exception: + raise Exception("VNF config file not found") + + self.snaps_creds = '' + self.created_object = [] + + config_file = os.path.join(self.case_dir, self.config) + self.orchestrator = dict( + requirements=get_config("orchestrator.requirements", config_file), + ) + self.details['orchestrator'] = dict( + name=get_config("orchestrator.name", config_file), + version=get_config("orchestrator.version", config_file), + status='ERROR', + result='' + ) + self.__logger.debug("Orchestrator configuration %s", self.orchestrator) + self.vnf = dict( + descriptor=get_config("vnf.descriptor", config_file), + inputs=get_config("vnf.inputs", config_file), + requirements=get_config("vnf.requirements", config_file) + ) + self.details['vnf'] = dict( + descriptor_version=self.vnf['descriptor']['version'], + name=get_config("vnf.name", config_file), + version=get_config("vnf.version", config_file), + ) + self.__logger.debug("VNF configuration: %s", self.vnf) + + self.test = dict( + version=get_config("vnf_test_suite.version", config_file), + inputs=get_config("vnf_test_suite.inputs", config_file), + requirements=get_config("vnf_test_suite.requirements", config_file) + ) + + self.details['test_vnf'] = dict( + name=get_config("vnf_test_suite.name", config_file), + version=get_config("vnf_test_suite.version", config_file), + requirements=get_config("vnf_test_suite.requirements", config_file) + ) + self.images = get_config("tenant_images", config_file) + self.__logger.info("Images needed for vIMS: %s", self.images) + + def test_vnf(self): + """Run IXIA Stress test on clearwater ims instance.""" + start_time = time.time() + + cfy_client = self.orchestrator['object'] + + outputs = cfy_client.deployments.outputs.get( + self.vnf['descriptor'].get('name'))['outputs'] + dns_ip = outputs['dns_ip'] + ellis_ip = outputs['ellis_ip'] + + self.__logger.info("Creating full IXIA network ...") + subnet_settings = SubnetSettings(name='ixia_management_subnet', + cidr='10.10.10.0/24') + network_settings = NetworkSettings(name='ixia_management_network', + subnet_settings=[subnet_settings]) + network_creator = OpenStackNetwork(self.snaps_creds, network_settings) + network_creator.create() + self.created_object.append(network_creator) + ext_net_name = snaps_utils.get_ext_net_name(self.snaps_creds) + router_creator = OpenStackRouter( + self.snaps_creds, + RouterSettings( + name='ixia_management_router', + external_gateway=ext_net_name, + internal_subnets=[subnet_settings.name])) + router_creator.create() + self.created_object.append(router_creator) + + # security group creation + self.__logger.info("Creating security groups for IXIA VMs") + sg_rules = list() + sg_rules.append( + SecurityGroupRuleSettings(sec_grp_name="ixia_management", + direction=Direction.ingress, + protocol=Protocol.tcp, port_range_min=1, + port_range_max=65535)) + sg_rules.append( + SecurityGroupRuleSettings(sec_grp_name="ixia_management", + direction=Direction.ingress, + protocol=Protocol.udp, port_range_min=1, + port_range_max=65535)) + sg_rules.append( + SecurityGroupRuleSettings(sec_grp_name="ixia_management", + direction=Direction.ingress, + protocol=Protocol.icmp)) + + ixia_managment_sg_settings = SecurityGroupSettings( + name="ixia_management", + rule_settings=sg_rules) + securit_group_creator = OpenStackSecurityGroup( + self.snaps_creds, + ixia_managment_sg_settings) + + securit_group_creator.create() + self.created_object.append(securit_group_creator) + + sg_rules = list() + sg_rules.append( + SecurityGroupRuleSettings(sec_grp_name="ixia_ssh_http", + direction=Direction.ingress, + protocol=Protocol.tcp, port_range_min=1, + port_range_max=65535)) + + ixia_ssh_http_sg_settings = SecurityGroupSettings( + name="ixia_ssh_http", + rule_settings=sg_rules) + securit_group_creator = OpenStackSecurityGroup( + self.snaps_creds, + ixia_ssh_http_sg_settings) + + securit_group_creator.create() + self.created_object.append(securit_group_creator) + + chassis_flavor_settings = FlavorSettings( + name="ixia_vChassis", + ram=4096, + disk=40, + vcpus=2) + flavor_creator = OpenStackFlavor(self.snaps_creds, + chassis_flavor_settings) + flavor_creator.create() + self.created_object.append(flavor_creator) + + card_flavor_settings = FlavorSettings( + name="ixia_vCard", + ram=4096, + disk=4, + vcpus=2) + flavor_creator = OpenStackFlavor(self.snaps_creds, + card_flavor_settings) + flavor_creator.create() + self.created_object.append(flavor_creator) + + load_flavor_settings = FlavorSettings( + name="ixia_vLoad", + ram=8192, + disk=100, + vcpus=4) + flavor_creator = OpenStackFlavor(self.snaps_creds, + load_flavor_settings) + flavor_creator.create() + self.created_object.append(flavor_creator) + + chassis_image_settings = ImageSettings( + name=self.test['requirements']['chassis']['image'], + image_user='admin', + exists=True) + + card_image_settings = ImageSettings( + name=self.test['requirements']['card']['image'], + image_user='admin', + exists=True) + + load_image_settings = ImageSettings( + name=self.test['requirements']['load']['image'], + image_user='admin', + exists=True) + + chassis_port_settings = PortSettings( + name='ixia_chassis_port', + network_name=network_settings.name) + + card1_port1_settings = PortSettings( + name='ixia_card1_port1', + network_name=network_settings.name) + + card2_port1_settings = PortSettings( + name='ixia_card2_port1', + network_name=network_settings.name) + + card1_port2_settings = PortSettings( + name='ixia_card1_port2', + network_name="cloudify_ims_network") + + card2_port2_settings = PortSettings( + name='ixia_card2_port2', + network_name="cloudify_ims_network") + + load_port_settings = PortSettings( + name='ixia_load_port', + network_name=network_settings.name) + + chassis_settings = VmInstanceSettings( + name='ixia_vChassis', + flavor=chassis_flavor_settings.name, + port_settings=[chassis_port_settings], + security_group_names=[ixia_ssh_http_sg_settings.name, + ixia_managment_sg_settings.name], + floating_ip_settings=[FloatingIpSettings( + name='ixia_vChassis_fip', + port_name=chassis_port_settings.name, + router_name=router_creator.router_settings.name)]) + + vm_creator = OpenStackVmInstance(self.snaps_creds, + chassis_settings, + chassis_image_settings) + + self.__logger.info("Creating Ixia vChassis VM") + vm_creator.create() + fip_chassis = vm_creator.get_floating_ip().ip + self.created_object.append(vm_creator) + + card1_settings = VmInstanceSettings( + name='ixia_vCard1', + flavor=card_flavor_settings.name, + port_settings=[card1_port1_settings, card1_port2_settings], + security_group_names=[ixia_managment_sg_settings.name]) + + vm_creator = OpenStackVmInstance(self.snaps_creds, + card1_settings, + card_image_settings) + + self.__logger.info("Creating Ixia vCard1 VM") + vm_creator.create() + vcard_ips = list() + vcard_ips_p2 = list() + vcard_ips.append(vm_creator.get_port_ip('ixia_card1_port1')) + vcard_ips_p2.append(vm_creator.get_port_ip('ixia_card1_port2')) + self.created_object.append(vm_creator) + + card2_settings = VmInstanceSettings( + name='ixia_vCard2', + flavor=card_flavor_settings.name, + port_settings=[card2_port1_settings, card2_port2_settings], + security_group_names=[ixia_managment_sg_settings.name]) + + vm_creator = OpenStackVmInstance(self.snaps_creds, + card2_settings, + card_image_settings) + + self.__logger.info("Creating Ixia vCard2 VM") + vm_creator.create() + vcard_ips.append(vm_creator.get_port_ip('ixia_card2_port1')) + vcard_ips_p2.append(vm_creator.get_port_ip('ixia_card2_port2')) + self.created_object.append(vm_creator) + + load_settings = VmInstanceSettings( + name='ixia_vLoad', + flavor=load_flavor_settings.name, + port_settings=[load_port_settings], + security_group_names=[ixia_ssh_http_sg_settings.name, + ixia_managment_sg_settings.name], + floating_ip_settings=[FloatingIpSettings( + name='ixia_vLoad_fip', + port_name=load_port_settings.name, + router_name=router_creator.router_settings.name)]) + + vm_creator = OpenStackVmInstance(self.snaps_creds, + load_settings, + load_image_settings) + + self.__logger.info("Creating Ixia vLoad VM") + vm_creator.create() + fip_load = vm_creator.get_floating_ip().ip + self.created_object.append(vm_creator) + + self.__logger.info("Chassis IP is: %s", fip_chassis) + login_url = "https://" + str(fip_chassis) + "/api/v1/auth/session" + cards_url = "https://" + str(fip_chassis) + "/api/v2/ixos/cards/" + + payload = json.dumps({"username": "admin", + "password": "admin", + "rememberMe": "false"}) + api_key = json.loads(( + ChassisRestAPI.postWithPayload(login_url, payload)))["apiKey"] + + self.__logger.info("Adding 2 card back inside the ixia chassis...") + + for ip in vcard_ips: + payload = {"ipAddress": str(ip)} + response = json.loads(ChassisRestAPI.postOperation(cards_url, + api_key, + payload)) + count = 0 + while (int( + ChassisRestAPI.getWithHeaders(response['url'], + api_key)['progress']) != 100): + self.__logger.debug("Operation did not finish yet. \ + Waiting for 1 more second..") + time.sleep(1) + if count > 60: + raise Exception("Adding card take more than 60 seconds") + count += 1 + + ssh = paramiko.SSHClient() + ssh.set_missing_host_key_policy(paramiko.MissingHostKeyPolicy()) + ssh.connect(fip_chassis, username="admin", password="admin") + cmd = "set license-check disable" + run_blocking_ssh_command(ssh, cmd) + cmd = "restart-service ixServer" + run_blocking_ssh_command(ssh, cmd) + + self.config_ellis(ellis_ip) + + # Get IPs of P-CSCF + resolver = dns.resolver.Resolver() + resolver.nameservers = [dns_ip] + result = resolver.query("bono.clearwater.local") + + iplistims = '' + i = 0 + for rdata in result: + i = i + 1 + print rdata.address + iplistims += str(rdata.address) + if i != len(result): + iplistims += ';' + + kResourcesUrl = 'http://%s:%s/api/v0/resources' % (fip_load, 8080) + + kRxfPath = r"REG_CALL_OPNFV_v13.rxf" + test_filname = self.test['inputs']['test_filname'] + kGatewaySharedFolder = '/mnt/ixload-share/' + kRxfRelativeUploadPath = 'uploads/%s' % os.path.split(kRxfPath)[1] + kRxfAbsoluteUploadPath = os.path.join(kGatewaySharedFolder, + kRxfRelativeUploadPath) + kChassisList = [str(fip_chassis)] + dataFileNameList = [test_filname, + 'Registration_only_LPS.tst', + 'SIPCall.tst'] + + kPortListPerCommunityCommunity = {"VoIP1@VM1": [(1, 1, 1)], + "VoIP2@VM2": [(1, 2, 1)]} + + kStatsToDisplayDict = self.test['inputs']['stats'] + connection = IxRestUtils.getConnection(fip_load, 8080) + + self.__logger.info("Creating a new session...") + sessionUrl = IxLoadUtils.createSession(connection, + self.test['version']) + + license_server = self.test['inputs']['licenseServer'] + IxLoadUtils.configureLicenseServer(connection, + sessionUrl, + license_server) + + files_dir = os.path.join(self.case_dir, 'ixia/files') + target_file = open(os.path.join(files_dir, test_filname), 'w') + j2_env = Environment(loader=FileSystemLoader(files_dir), + trim_blocks=True) + self.test['inputs'].update(dict( + ipchassis=fip_chassis, + ipcard1=vcard_ips_p2[0], + ipcard2=vcard_ips_p2[1], + iplistims=iplistims + )) + + target_file.write( + j2_env.get_template(test_filname + '.template').render( + self.test['inputs'] + )) + target_file.close() + + self.__logger.info('Uploading files %s...' % kRxfPath) + for dataFile in dataFileNameList: + localFilePath = os.path.join(files_dir, dataFile) + remoteFilePath = os.path.join(kGatewaySharedFolder, + 'uploads/%s' % dataFile) + IxLoadUtils.uploadFile(connection, kResourcesUrl, + localFilePath, remoteFilePath) + self.__logger.info('Upload file finished.') + + self.__logger.info("Loading repository %s..." % kRxfAbsoluteUploadPath) + IxLoadUtils.loadRepository(connection, sessionUrl, + kRxfAbsoluteUploadPath) + + self.__logger.info("Clearing chassis list...") + IxLoadUtils.clearChassisList(connection, sessionUrl) + + self.__logger.info("Adding chassis %s..." % (kChassisList)) + IxLoadUtils.addChassisList(connection, sessionUrl, kChassisList) + + self.__logger.info("Assigning new ports...") + IxLoadUtils.assignPorts(connection, sessionUrl, + kPortListPerCommunityCommunity) + + self.__logger.info("Starting the test...") + IxLoadUtils.runTest(connection, sessionUrl) + + self.__logger.info("Polling values for stats %s..." % ( + kStatsToDisplayDict)) + result = IxLoadUtils.pollStats(connection, sessionUrl, + kStatsToDisplayDict) + self.__logger.info("Test finished.") + self.__logger.info("Checking test status...") + testRunError = IxLoadUtils.getTestRunError(connection, sessionUrl) + + self.__logger.info(result) + duration = time.time() - start_time + self.details['test_vnf'].update(status='PASS', + result=result, + duration=duration) + if testRunError: + self.__logger.info("The test exited with following error: %s" % ( + testRunError)) + self.details['test_vnf'].update(status='FAIL', duration=duration) + return False + else: + self.__logger.info("The test completed successfully.") + self.details['test_vnf'].update(status='PASS', duration=duration) + self.result += 1/3 * 100 + return True + + def clean(self): + """Clean created objects/functions.""" + super(CloudifyImsPerf, self).clean() + + @energy.enable_recording + def run(self, **kwargs): + """Execute CloudifyIms test case.""" + return super(CloudifyImsPerf, self).run(**kwargs) + + +# ---------------------------------------------------------- +# +# YAML UTILS +# +# ----------------------------------------------------------- +def get_config(parameter, file_path): + """ + Get config parameter. + + Returns the value of a given parameter in file.yaml + parameter must be given in string format with dots + Example: general.openstack.image_name + """ + with open(file_path) as config_file: + file_yaml = yaml.safe_load(config_file) + config_file.close() + value = file_yaml + for element in parameter.split("."): + value = value.get(element) + if value is None: + raise ValueError("The parameter %s is not defined in" + " reporting.yaml" % parameter) + return value + + +def run_blocking_ssh_command(ssh, cmd, error_msg="Unable to run this command"): + """Command to run ssh command with the exit status.""" + stdin, stdout, stderr = ssh.exec_command(cmd) + if stdout.channel.recv_exit_status() != 0: + raise Exception(error_msg) diff --git a/functest/opnfv_tests/vnf/ims/cloudify_ims_perf.yaml b/functest/opnfv_tests/vnf/ims/cloudify_ims_perf.yaml new file mode 100644 index 000000000..2d9697d0a --- /dev/null +++ b/functest/opnfv_tests/vnf/ims/cloudify_ims_perf.yaml @@ -0,0 +1,84 @@ +tenant_images: + ubuntu_14.04: http://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img + cloudify_manager_4.0: http://repository.cloudifysource.org/cloudify/4.0.1/sp-release/cloudify-manager-premium-4.0.1.qcow2 + IXIA_CHASSIS: # PATH of the virtual chassis image. Ex: Ixia_Virtual_Chassis_8.30_EA_KVM.qcow2 + IXIA_CARD: # PATH of the virtual card image. Ex: Ixia_Virtual_Load_Module_8.30_EA_KVM.qcow2 + IXIA_LOAD: # PATH of the virtual loader image. Ex: Ixia_Virtual_Loader_8.30_EA_KVM.qcow2 +orchestrator: + name: cloudify + version: '4.0' + requirements: + flavor: + name: m1.medium + ram_min: 4096 + os_image: 'cloudify_manager_4.0' +vnf: + name: clearwater + version: '107' + descriptor: + file_name: openstack-blueprint-with-numbers.yaml + name: clearwater-opnfv + url: https://github.com/Orange-OpenSource/opnfv-cloudify-clearwater/archive/master.zip + version: '122' + requirements: + flavor: + name: m1.small + ram_min: 2048 + compute_quotas: + cores: 150 + instances: 100 + ram: 256000 + network_quotas: + security_group: 25 + security_group_rule: 100 + port: 150 + inputs: + image_id: 'ubuntu_14.04' + flavor_id: 'm1.small' + agent_user: ubuntu + key_pair_name: cloudify_ims_kp + private_key_path: '/etc/cloudify/cloudify_ims.pem' + external_network_name: '' + public_domain: clearwater.opnfv + release: repo122 + bono_cluster_size: 2 + sprout_cluster_size: 2 + vellum_cluster_size: 2 + dime_cluster_size: 2 + homer_cluster_size: 2 + number_of_subscribers: 50000 +vnf_test_suite: + name: ixia + version: "8.30.0.161" + requirements: + chassis: + image: IXIA_CHASSIS + card: + image: IXIA_CARD + load: + image: IXIA_LOAD + inputs: + ipgw: '10.67.79.1' + pnregistering: '201001[0000-]' + pncalling: '201000[0000-]' + pncalled: '201000[5000-]' + sipportregistering: '[5060-]' + sipportcalling: '[5061-]' + sipportcalled: '[5062-]' + domainname: 'clearwater.opnfv' + authpassword: 'toto' + registeringtotalcalls: '1000' + registeringduration: '180' + activecalls: '1000' + testduration: '360' + test_filname: 'REG_CALL_OPNFV_v13.rxf' + licenseServer: '' # IP of YOUR IXIA LICENSE SERVER + stats: + 'Signaling(VoIPSip)': + - 'Successful Registrations' + - 'Failed Registrations' + - 'Active Calls' + - 'Attempted Calls' + - 'Received Calls' + - 'Failed Attempted Calls' + - 'Failed Received Calls' diff --git a/functest/opnfv_tests/vnf/ims/ixia/__init__.py b/functest/opnfv_tests/vnf/ims/ixia/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/functest/opnfv_tests/vnf/ims/ixia/files/REG_CALL_OPNFV_v13.rxf.template b/functest/opnfv_tests/vnf/ims/ixia/files/REG_CALL_OPNFV_v13.rxf.template new file mode 100644 index 000000000..279362810 --- /dev/null +++ b/functest/opnfv_tests/vnf/ims/ixia/files/REG_CALL_OPNFV_v13.rxf.template @@ -0,0 +1,16731 @@ + + + <_smSessionXml ver="[0, [1, [0, [0]]]]" type="ixSMSessionXML"> + <rpf> <Ixia.Aptixia.StackManager.SMSession type="Ixia.Aptixia.StackManager.SMSession" objectid="d0db76dc-f224-429f-91ba-e207cd4711db" version="6.70.420"> <doWaitLinkUp type="Bool">0</doWaitLinkUp> <doGratArp type="Bool">0</doGratArp> <subscribeToGratArpNotifications type="Bool">0</subscribeToGratArpNotifications> <doInterfaceCheck type="Bool">0</doInterfaceCheck> <rebootPortsBeforeConfigure type="Bool">0</rebootPortsBeforeConfigure> <testDuration type="Int">10000</testDuration> <checkLinkState type="Bool">0</checkLinkState> <portGroupList type="ListNode"> <Ixia.Aptixia.StackManager.PortGroup type="Ixia.Aptixia.StackManager.PortGroup" objectid="e7fa1f9e-23d9-4742-96b2-6edce6c4424e" version="6.70.420"> <name type="String">VM1</name> <category type="String" /> <stack type="Ixia.Aptixia.StackManager.L1EthernetPlugin" objectid="45426251-0720-4316-b8a5-d6bce32e3d2e" version="6.70.420"> <autoNegotiate type="Bool">1</autoNegotiate> <speed type="String">k100FD</speed> <advertise10Half type="Bool">1</advertise10Half> <advertise10Full type="Bool">1</advertise10Full> <advertise100Half type="Bool">1</advertise100Half> <advertise100Full type="Bool">1</advertise100Full> <advertise1000Full type="Bool">1</advertise1000Full> <advertise2500Full type="Bool">1</advertise2500Full> <advertise5000Full type="Bool">1</advertise5000Full> <advertise10000Full type="Bool">0</advertise10000Full> <cardDualPhy type="Ixia.Aptixia.StackManager.DualPhyPlugin" objectid="836ee0d6-1957-42eb-a7a4-53bcfbdd36e0" version="6.70.420"> <medium type="String">copper</medium> <ixLoadRestObjectId type="Int">2</ixLoadRestObjectId> </cardDualPhy> <cardElm type="Ixia.Aptixia.StackManager.EthernetELMPlugin" objectid="8387c005-0df9-4fd2-977e-1c234c7be0cc" version="6.70.420"> <negotiateMasterSlave type="Bool">1</negotiateMasterSlave> <negotiationType type="String">master</negotiationType> <ixLoadRestObjectId type="Int">2</ixLoadRestObjectId> </cardElm> <enableFlowControl type="Bool">0</enableFlowControl> <directedAddress type="String">01:80:C2:00:00:01</directedAddress> <dataCenter type="Ixia.Aptixia.StackManager.DataCenterSettings" objectid="df9be2ec-31d8-47f0-babe-79a1710303f3" version="6.70.420"> <dcSupported type="Bool">1</dcSupported> <dcEnabled type="Bool">0</dcEnabled> <dcFlowControl type="Ixia.Aptixia.StackManager.DataCenterSettingsSkeleton+eFlowControlType">0</dcFlowControl> <dcMode type="Ixia.Aptixia.StackManager.DataCenterSettingsSkeleton+eDataCenterMode">2</dcMode> <dcPfcMapping type="IntList" /> <dcPfcPauseEnable type="Bool">0</dcPfcPauseEnable> <dcPfcPauseDelay type="Int">1</dcPfcPauseDelay> <ixLoadRestObjectId type="Int">2</ixLoadRestObjectId> </dataCenter> <childrenList type="ListNode"> <Ixia.Aptixia.StackManager.L2EthernetPlugin type="Ixia.Aptixia.StackManager.L2EthernetPlugin" objectid="166a11b6-4d30-40ea-b9e1-ac4fb44f112b" version="6.70.420"> <macRangeList type="ListNode"> <Ixia.Aptixia.StackManager.MacRange type="Ixia.Aptixia.StackManager.MacRange" objectid="ba896971-1d78-4e03-8f2a-28c65417612e" version="6.70.420"> <enabled type="Bool">1</enabled> <name type="String">MAC-R11</name> <mac type="String">00:0A:43:4F:1B:00</mac> <incrementBy type="String">00:00:00:00:00:01</incrementBy> <mtu type="Int">1410</mtu> <count type="Int">1</count> <vlanRange type="Ixia.Aptixia.StackManager.VlanIdRange" objectid="2b81e36c-9cbb-4d78-a70c-904da8d41b28" version="6.70.420"> <name type="String">VLAN-R11</name> <enabled type="Bool">0</enabled> <firstId type="Int">1</firstId> <incrementStep type="Int">1</incrementStep> <increment type="Int">1</increment> <uniqueCount type="Int">4094</uniqueCount> <priority type="Int">1</priority> <tpid type="String">0x8100</tpid> <innerEnable type="Bool">0</innerEnable> <innerFirstId type="Int">1</innerFirstId> <innerIncrementStep type="Int">1</innerIncrementStep> <innerIncrement type="Int">1</innerIncrement> <innerUniqueCount type="Int">4094</innerUniqueCount> <innerPriority type="Int">1</innerPriority> <idIncrMode type="Int">2</idIncrMode> <innerTpid type="String">0x8100</innerTpid> <ixLoadRestObjectId type="Int">9</ixLoadRestObjectId> </vlanRange> <ixLoadRestObjectId type="Int">9</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.MacRange> </macRangeList> <vlanRangeList type="ListNode"> <Ixia.Aptixia.StackManager.VlanIdRange type="Ixia.Aptixia.StackManager.VlanIdRange" objectid="2b81e36c-9cbb-4d78-a70c-904da8d41b28" version="6.70.420" /> </vlanRangeList> <childrenList type="ListNode"> <Ixia.Aptixia.StackManager.IpV4V6Plugin type="Ixia.Aptixia.StackManager.IpV4V6Plugin" objectid="9ea551b2-a0af-4a7d-9872-e9b94298d7bd" version="6.70.420"> <rangeList type="ListNode"> <Ixia.Aptixia.StackManager.IpV4V6Range type="Ixia.Aptixia.StackManager.IpV4V6Range" objectid="5affc0a7-68f6-46f6-b801-0e18e067a572" version="6.70.420"> <enabled type="Bool">1</enabled> <name type="String">IP-R13</name> <ipType type="String">IPv4</ipType> <ipAddress type="String">{{ipcard1}}</ipAddress> <prefix type="Int">16</prefix> <incrementBy type="String">0.0.0.1</incrementBy> <count type="Int">1</count> <autoCountEnabled type="Bool">0</autoCountEnabled> <gatewayAddress type="String">{{ipgw}}</gatewayAddress> <gatewayIncrement type="String">0.0.0.0</gatewayIncrement> <gatewayIncrementMode type="String">perSubnet</gatewayIncrementMode> <enableGatewayArp type="Bool">0</enableGatewayArp> <generateStatistics type="Bool">0</generateStatistics> <mss type="Int">1410</mss> <randomizeAddress type="Bool">0</randomizeAddress> <randomizeSeed type="Int">1007257123</randomizeSeed> <autoMacGeneration type="Bool">1</autoMacGeneration> <macRange type="Ixia.Aptixia.StackManager.MacRange" objectid="ba896971-1d78-4e03-8f2a-28c65417612e" version="6.70.420" /> <vlanRange type="Ixia.Aptixia.StackManager.VlanIdRange" objectid="2b81e36c-9cbb-4d78-a70c-904da8d41b28" version="6.70.420" /> <atmRange type="Ixia.Aptixia.StackManager.AtmRange" objectid="00000000-0000-0000-0000-000000000000" /> <pvcRange type="Ixia.Aptixia.StackManager.PvcRange" objectid="00000000-0000-0000-0000-000000000000" /> <autoIpTypeEnabled type="Bool">0</autoIpTypeEnabled> <ixLoadRestObjectId type="Int">9</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.IpV4V6Range> </rangeList> <rangeGroups type="ListNode"> <Ixia.Aptixia.StackManager.RangeGroup type="Ixia.Aptixia.StackManager.RangeGroup" objectid="abf2b6e4-a102-4cbe-bf1b-a11f11b2faac" version="6.70.420"> <name type="String">Group1</name> <distribType type="Ixia.Aptixia.StackManager.RangeGroupSkeleton+eDistributionType">0</distribType> <rangeList type="ListNode"> <Ixia.Aptixia.StackManager.IpV4V6Range type="Ixia.Aptixia.StackManager.IpV4V6Range" objectid="5affc0a7-68f6-46f6-b801-0e18e067a572" version="6.70.420" /> </rangeList> <ixLoadRestObjectId type="Int">-1</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.RangeGroup> </rangeGroups> <childrenList type="ListNode" /> <extensionList type="ListNode" /> <dscMode type="Bool">0</dscMode> <name type="String">IP-8</name> <ixLoadRestObjectId type="Int">26</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.IpV4V6Plugin> </childrenList> <extensionList type="ListNode" /> <dscMode type="Bool">0</dscMode> <name type="String">MAC/VLAN-8</name> <ixLoadRestObjectId type="Int">25</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.L2EthernetPlugin> </childrenList> <extensionList type="ListNode" /> <dscMode type="Bool">0</dscMode> <name type="String">Ethernet-1</name> <ixLoadRestObjectId type="Int">1</ixLoadRestObjectId> </stack> <globalPluginList type="ListNode"> <Ixia.Aptixia.StackManager.FilterPlugin type="Ixia.Aptixia.StackManager.FilterPlugin" objectid="976ba0fd-58ea-44d4-ae43-1b36c2556072" version="6.70.420"> <auto type="Bool">1</auto> <all type="Bool">0</all> <pppoecontrol type="Bool">0</pppoecontrol> <pppoenetwork type="Bool">0</pppoenetwork> <isis type="Bool">0</isis> <ip type="String" /> <tcp type="String" /> <udp type="String" /> <mac type="String" /> <icmp type="String" /> <name type="String">Filter-1</name> <ixLoadRestObjectId type="Int">1</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.FilterPlugin> <Ixia.Aptixia.StackManager.GratArpPlugin type="Ixia.Aptixia.StackManager.GratArpPlugin" objectid="3ebd05e7-88a6-49be-a50d-134908ac124c" version="6.70.420"> <enabled type="Bool">1</enabled> <forwardGratArp type="Bool">0</forwardGratArp> <rateControlEnabled type="Bool">0</rateControlEnabled> <maxFramesPerSecond type="Int">0</maxFramesPerSecond> <name type="String">GratARP-1</name> <ixLoadRestObjectId type="Int">2</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.GratArpPlugin> <Ixia.Aptixia.StackManager.TCPPlugin type="Ixia.Aptixia.StackManager.TCPPlugin" objectid="1d9748c5-122e-4153-8ffd-67cd1309b8ce" version="6.70.420"> <bestPerfSettings type="Bool">0</bestPerfSettings> <accept_ra_all type="Bool">0</accept_ra_all> <tcp_abort_on_overflow type="Bool">0</tcp_abort_on_overflow> <tcp_adv_win_scale type="Int">2</tcp_adv_win_scale> <tcp_app_win type="Int">31</tcp_app_win> <tcp_bic type="Int">0</tcp_bic> <tcp_bic_fast_convergence type="Int">1</tcp_bic_fast_convergence> <tcp_bic_low_window type="Int">14</tcp_bic_low_window> <tcp_dsack type="Bool">1</tcp_dsack> <tcp_ecn type="Bool">0</tcp_ecn> <tcp_fack type="Bool">1</tcp_fack> <tcp_fin_timeout type="Int">60</tcp_fin_timeout> <tcp_frto type="Int">0</tcp_frto> <tcp_keepalive_intvl type="Int">75</tcp_keepalive_intvl> <tcp_keepalive_probes type="Int">9</tcp_keepalive_probes> <tcp_keepalive_time type="Int">7200</tcp_keepalive_time> <tcp_low_latency type="Int">0</tcp_low_latency> <tcp_max_orphans type="Int">8192</tcp_max_orphans> <tcp_max_syn_backlog type="Int">1024</tcp_max_syn_backlog> <tcp_max_tw_buckets type="Int">180000</tcp_max_tw_buckets> <tcp_mem_low type="Int">24576</tcp_mem_low> <tcp_mem_pressure type="Int">32768</tcp_mem_pressure> <tcp_mem_high type="Int">49152</tcp_mem_high> <tcp_moderate_rcvbuf type="Int">0</tcp_moderate_rcvbuf> <tcp_no_metrics_save type="Bool">0</tcp_no_metrics_save> <tcp_orphan_retries type="Int">0</tcp_orphan_retries> <tcp_reordering type="Int">3</tcp_reordering> <tcp_retrans_collapse type="Bool">1</tcp_retrans_collapse> <tcp_retries1 type="Int">3</tcp_retries1> <tcp_retries2 type="Int">5</tcp_retries2> <tcp_rfc1337 type="Bool">0</tcp_rfc1337> <tcp_rmem_min type="Int">4096</tcp_rmem_min> <tcp_rmem_default type="Int">8192</tcp_rmem_default> <tcp_rmem_max type="Int">262144</tcp_rmem_max> <tcp_sack type="Bool">1</tcp_sack> <tcp_stdurg type="Bool">0</tcp_stdurg> <tcp_synack_retries type="Int">5</tcp_synack_retries> <tcp_syn_retries type="Int">5</tcp_syn_retries> <tcp_timestamps type="Bool">1</tcp_timestamps> <tcp_tw_recycle type="Bool">1</tcp_tw_recycle> <tcp_tw_reuse type="Bool">0</tcp_tw_reuse> <tcp_vegas_alpha type="Int">2</tcp_vegas_alpha> <tcp_vegas_beta type="Int">6</tcp_vegas_beta> <tcp_vegas_cong_avoid type="Int">0</tcp_vegas_cong_avoid> <tcp_vegas_gamma type="Int">2</tcp_vegas_gamma> <tcp_westwood type="Int">0</tcp_westwood> <tcp_window_scaling type="Bool">0</tcp_window_scaling> <ip_no_pmtu_disc type="Bool">1</ip_no_pmtu_disc> <tcp_wmem_min type="Int">4096</tcp_wmem_min> <tcp_wmem_default type="Int">8192</tcp_wmem_default> <tcp_wmem_max type="Int">262144</tcp_wmem_max> <tcp_ipfrag_time type="Int">30</tcp_ipfrag_time> <tcp_port_min type="Int">1024</tcp_port_min> <tcp_port_max type="Int">65535</tcp_port_max> <tcp_rto_min type="Int">1000</tcp_rto_min> <tcp_rto_max type="Int">60000</tcp_rto_max> <tcp_tw_rfc1323_strict type="Bool">0</tcp_tw_rfc1323_strict> <udp_port_randomization type="Bool">0</udp_port_randomization> <disable_min_max_buffer_size type="Bool">1</disable_min_max_buffer_size> <llm_hdr_gap type="Int">8</llm_hdr_gap> <llm_hdr_gap_ns type="Int">10</llm_hdr_gap_ns> <inter_packet_granular_delay type="Double">0</inter_packet_granular_delay> <delayed_acks type="Bool">1</delayed_acks> <accept_ra_default type="Bool">0</accept_ra_default> <rps_needed type="Bool">0</rps_needed> <delayed_acks_segments type="Int">0</delayed_acks_segments> <delayed_acks_timeout type="Int">0</delayed_acks_timeout> <tcp_large_icwnd type="Int">0</tcp_large_icwnd> <tcp_mgmt_rmem type="Int">87380</tcp_mgmt_rmem> <tcp_mgmt_wmem type="Int">32768</tcp_mgmt_wmem> <adjust_tcp_buffers type="Bool">1</adjust_tcp_buffers> <name type="String">TCP-1</name> <ixLoadRestObjectId type="Int">3</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.TCPPlugin> <Ixia.Aptixia.StackManager.DnsPlugin type="Ixia.Aptixia.StackManager.DnsPlugin" objectid="9cc60113-3e53-4cf2-b3b7-6fd7d3953bb4" version="6.70.420"> <domain type="String" /> <timeout type="Int">30</timeout> <nameServerList type="ListNode" /> <searchList type="ListNode" /> <hostList type="ListNode" /> <name type="String">DNS-1</name> <ixLoadRestObjectId type="Int">4</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.DnsPlugin> <Ixia.Aptixia.StackManager.IxLoadSettingsPlugin type="Ixia.Aptixia.StackManager.IxLoadSettingsPlugin" objectid="399db714-47a8-445d-a24b-90d00d3f2e9e" version="1.0.0"> <teardownInterfaceWithUser type="Bool">0</teardownInterfaceWithUser> <interfaceBehavior type="Int">0</interfaceBehavior> <name type="String">Settings-1</name> <ixLoadRestObjectId type="Int">5</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.IxLoadSettingsPlugin> <Ixia.Aptixia.StackManager.MeshingPlugin type="Ixia.Aptixia.StackManager.MeshingPlugin" objectid="39d2a556-cf85-4102-8461-b1f1413b2db5" version="6.70.420"> <trafficMaps type="ListNode"> <Ixia.Aptixia.StackManager.MeshingTrafficMap type="Ixia.Aptixia.StackManager.MeshingTrafficMap" objectid="cdca1e00-77a3-49ef-8fe5-afb321a51af2" version="6.70.420"> <name type="String">CALLING!VoIP2_CALLED#{{sipportcalled}}</name> <configMapFilename type="String">CALLINGScript.configmap</configMapFilename> <sourceActivityId type="Int">1</sourceActivityId> <ipPreference type="Ixia.Aptixia.StackManager.MeshingTrafficMapSkeleton+eIpPreference">0</ipPreference> <portRangesString type="String">{{sipportcalled}}</portRangesString> <meshingType type="Ixia.Aptixia.StackManager.MeshingTrafficMapSkeleton+eMeshingType">2</meshingType> <destinationActivityId type="Int">0</destinationActivityId> </Ixia.Aptixia.StackManager.MeshingTrafficMap> </trafficMaps> <activityRangeMapInfoList type="ListNode" /> <name type="String">Meshing-1</name> <ixLoadRestObjectId type="Int">11</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.MeshingPlugin> </globalPluginList> <portList type="Ixia.RpFramework.Server.Core.ShadowedPropertyStringList"> <String>{{ipchassis}};1;1</String> </portList> <typeSpecificData type="ListNode"> <Ixia.Aptixia.StackManager.IPSecPortGroupData type="Ixia.Aptixia.StackManager.IPSecPortGroupData" objectid="62e57abd-b4c6-45af-a720-7033259c203c" version="6.70.0"> <role type="String">Initiator</role> <associates type="ListNode" /> <overrideGlobalOptions type="Bool">0</overrideGlobalOptions> <useMaxInitiationRate type="Bool">0</useMaxInitiationRate> <maxInitiationRate type="Int">50</maxInitiationRate> <useMaxPendingTunnels type="Bool">0</useMaxPendingTunnels> <maxPendingTunnels type="Int">50</maxPendingTunnels> <teardownRate type="Int">10</teardownRate> <enableESPPerStreamStats type="Bool">0</enableESPPerStreamStats> <enableESPReplayStats type="Bool">0</enableESPReplayStats> <activities type="ListNode" /> <pcpuLogLevel type="String">0</pcpuLogLevel> <ixLoadRestObjectId type="Int">3</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.IPSecPortGroupData> </typeSpecificData> <virtualMode type="Bool">0</virtualMode> <allowedVirtualModeTypes type="Ixia.RpFramework.Server.Core.ShadowedPropertyStringList" /> <doOwnership type="Bool">0</doOwnership> <branchToNicMap type="ListNode" /> <cpuAggregation type="Bool">0</cpuAggregation> <activePort type="String" /> <networkLayersManager type="Ixia.Aptixia.StackManager.NetworkLayersManager" objectid="f7999b28-d3d6-4a69-bd61-ab5516b7c540" version="6.70.420"> <ixLoadRestObjectId type="Int">3</ixLoadRestObjectId> </networkLayersManager> <ixLoadRestObjectId type="Int">1</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.PortGroup> <Ixia.Aptixia.StackManager.PortGroup type="Ixia.Aptixia.StackManager.PortGroup" objectid="b1fbd381-b769-4ec1-8715-299508ecb458" version="6.70.420"> <name type="String">VM2</name> <category type="String" /> <stack type="Ixia.Aptixia.StackManager.L1EthernetPlugin" objectid="48f486a6-f09b-4770-a091-e9ce609e9bec" version="6.70.420"> <autoNegotiate type="Bool">1</autoNegotiate> <speed type="String">k100FD</speed> <advertise10Half type="Bool">1</advertise10Half> <advertise10Full type="Bool">1</advertise10Full> <advertise100Half type="Bool">1</advertise100Half> <advertise100Full type="Bool">1</advertise100Full> <advertise1000Full type="Bool">1</advertise1000Full> <advertise2500Full type="Bool">1</advertise2500Full> <advertise5000Full type="Bool">1</advertise5000Full> <advertise10000Full type="Bool">1</advertise10000Full> <cardDualPhy type="Ixia.Aptixia.StackManager.DualPhyPlugin" objectid="c500685a-4fcb-4335-abe0-70c98cf1ba43" version="6.70.420"> <medium type="String">auto</medium> <ixLoadRestObjectId type="Int">4</ixLoadRestObjectId> </cardDualPhy> <cardElm type="Ixia.Aptixia.StackManager.EthernetELMPlugin" objectid="92644bb5-bda6-4072-98f9-47b47e4597c7" version="6.70.420"> <negotiateMasterSlave type="Bool">1</negotiateMasterSlave> <negotiationType type="String">master</negotiationType> <ixLoadRestObjectId type="Int">4</ixLoadRestObjectId> </cardElm> <enableFlowControl type="Bool">0</enableFlowControl> <directedAddress type="String">01:80:C2:00:00:01</directedAddress> <dataCenter type="Ixia.Aptixia.StackManager.DataCenterSettings" objectid="3726f608-97b7-4bf2-b88e-4c0bf13b45a0" version="6.70.420"> <dcSupported type="Bool">1</dcSupported> <dcEnabled type="Bool">0</dcEnabled> <dcFlowControl type="Ixia.Aptixia.StackManager.DataCenterSettingsSkeleton+eFlowControlType">0</dcFlowControl> <dcMode type="Ixia.Aptixia.StackManager.DataCenterSettingsSkeleton+eDataCenterMode">2</dcMode> <dcPfcMapping type="IntList" /> <dcPfcPauseEnable type="Bool">0</dcPfcPauseEnable> <dcPfcPauseDelay type="Int">1</dcPfcPauseDelay> <ixLoadRestObjectId type="Int">4</ixLoadRestObjectId> </dataCenter> <childrenList type="ListNode"> <Ixia.Aptixia.StackManager.L2EthernetPlugin type="Ixia.Aptixia.StackManager.L2EthernetPlugin" objectid="820b0582-6a4c-4109-bd5d-587621a43ce2" version="6.70.420"> <macRangeList type="ListNode"> <Ixia.Aptixia.StackManager.MacRange type="Ixia.Aptixia.StackManager.MacRange" objectid="aa73bd95-9ffb-411e-8ab3-8a128767aacb" version="6.70.420"> <enabled type="Bool">1</enabled> <name type="String">MAC-R2</name> <mac type="String">00:0A:43:4F:2A:00</mac> <incrementBy type="String">00:00:00:00:00:01</incrementBy> <mtu type="Int">1410</mtu> <count type="Int">1</count> <vlanRange type="Ixia.Aptixia.StackManager.VlanIdRange" objectid="7024f4b3-1a75-491a-8da1-17a45a15d5cc" version="6.70.420"> <name type="String">VLAN-R2</name> <enabled type="Bool">0</enabled> <firstId type="Int">1</firstId> <incrementStep type="Int">1</incrementStep> <increment type="Int">1</increment> <uniqueCount type="Int">4094</uniqueCount> <priority type="Int">1</priority> <tpid type="String">0x8100</tpid> <innerEnable type="Bool">0</innerEnable> <innerFirstId type="Int">1</innerFirstId> <innerIncrementStep type="Int">1</innerIncrementStep> <innerIncrement type="Int">1</innerIncrement> <innerUniqueCount type="Int">4094</innerUniqueCount> <innerPriority type="Int">1</innerPriority> <idIncrMode type="Int">2</idIncrMode> <innerTpid type="String">0x8100</innerTpid> <ixLoadRestObjectId type="Int">2</ixLoadRestObjectId> </vlanRange> <ixLoadRestObjectId type="Int">2</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.MacRange> </macRangeList> <vlanRangeList type="ListNode"> <Ixia.Aptixia.StackManager.VlanIdRange type="Ixia.Aptixia.StackManager.VlanIdRange" objectid="7024f4b3-1a75-491a-8da1-17a45a15d5cc" version="6.70.420" /> </vlanRangeList> <childrenList type="ListNode"> <Ixia.Aptixia.StackManager.IpV4V6Plugin type="Ixia.Aptixia.StackManager.IpV4V6Plugin" objectid="e53ae54e-ab21-4997-b532-e9bd58210050" version="6.70.420"> <rangeList type="ListNode"> <Ixia.Aptixia.StackManager.IpV4V6Range type="Ixia.Aptixia.StackManager.IpV4V6Range" objectid="c69dae97-f1c2-4505-aedb-3f9ca3f4d02a" version="6.70.420"> <enabled type="Bool">1</enabled> <name type="String">IP-R2</name> <ipType type="String">IPv4</ipType> <ipAddress type="String">{{ipcard2}}</ipAddress> <prefix type="Int">16</prefix> <incrementBy type="String">0.0.0.1</incrementBy> <count type="Int">1</count> <autoCountEnabled type="Bool">0</autoCountEnabled> <gatewayAddress type="String">{{ipgw}}</gatewayAddress> <gatewayIncrement type="String">0.0.0.0</gatewayIncrement> <gatewayIncrementMode type="String">perSubnet</gatewayIncrementMode> <enableGatewayArp type="Bool">0</enableGatewayArp> <generateStatistics type="Bool">0</generateStatistics> <mss type="Int">1410</mss> <randomizeAddress type="Bool">0</randomizeAddress> <randomizeSeed type="Int">3534372608</randomizeSeed> <autoMacGeneration type="Bool">1</autoMacGeneration> <macRange type="Ixia.Aptixia.StackManager.MacRange" objectid="aa73bd95-9ffb-411e-8ab3-8a128767aacb" version="6.70.420" /> <vlanRange type="Ixia.Aptixia.StackManager.VlanIdRange" objectid="7024f4b3-1a75-491a-8da1-17a45a15d5cc" version="6.70.420" /> <atmRange type="Ixia.Aptixia.StackManager.AtmRange" objectid="00000000-0000-0000-0000-000000000000" /> <pvcRange type="Ixia.Aptixia.StackManager.PvcRange" objectid="00000000-0000-0000-0000-000000000000" /> <autoIpTypeEnabled type="Bool">0</autoIpTypeEnabled> <ixLoadRestObjectId type="Int">2</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.IpV4V6Range> </rangeList> <rangeGroups type="ListNode"> <Ixia.Aptixia.StackManager.RangeGroup type="Ixia.Aptixia.StackManager.RangeGroup" objectid="de9d629b-e0dc-41f5-99cb-5aa8a808ceee" version="6.70.420"> <name type="String">DistGroup1</name> <distribType type="Ixia.Aptixia.StackManager.RangeGroupSkeleton+eDistributionType">0</distribType> <rangeList type="ListNode"> <Ixia.Aptixia.StackManager.IpV4V6Range type="Ixia.Aptixia.StackManager.IpV4V6Range" objectid="c69dae97-f1c2-4505-aedb-3f9ca3f4d02a" version="6.70.420" /> </rangeList> <ixLoadRestObjectId type="Int">2</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.RangeGroup> </rangeGroups> <childrenList type="ListNode" /> <extensionList type="ListNode" /> <dscMode type="Bool">0</dscMode> <name type="String">IP-2</name> <ixLoadRestObjectId type="Int">6</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.IpV4V6Plugin> </childrenList> <extensionList type="ListNode" /> <dscMode type="Bool">0</dscMode> <name type="String">MAC/VLAN-2</name> <ixLoadRestObjectId type="Int">5</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.L2EthernetPlugin> </childrenList> <extensionList type="ListNode" /> <dscMode type="Bool">0</dscMode> <name type="String">Ethernet-2</name> <ixLoadRestObjectId type="Int">4</ixLoadRestObjectId> </stack> <globalPluginList type="ListNode"> <Ixia.Aptixia.StackManager.IxLoadSettingsPlugin type="Ixia.Aptixia.StackManager.IxLoadSettingsPlugin" objectid="26685c48-95e7-4da5-a893-fc527b814b1c" version="1.0.0"> <teardownInterfaceWithUser type="Bool">0</teardownInterfaceWithUser> <interfaceBehavior type="Int">0</interfaceBehavior> <name type="String">Settings-2</name> <ixLoadRestObjectId type="Int">7</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.IxLoadSettingsPlugin> <Ixia.Aptixia.StackManager.FilterPlugin type="Ixia.Aptixia.StackManager.FilterPlugin" objectid="3f42c205-a9ad-433b-b7af-19ea7ec76940" version="6.70.420"> <auto type="Bool">1</auto> <all type="Bool">0</all> <pppoecontrol type="Bool">0</pppoecontrol> <pppoenetwork type="Bool">0</pppoenetwork> <isis type="Bool">0</isis> <ip type="String" /> <tcp type="String" /> <udp type="String" /> <mac type="String" /> <icmp type="String" /> <name type="String">Filter-2</name> <ixLoadRestObjectId type="Int">8</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.FilterPlugin> <Ixia.Aptixia.StackManager.GratArpPlugin type="Ixia.Aptixia.StackManager.GratArpPlugin" objectid="fe43b342-829b-4ff4-8671-49ba1c4441e5" version="6.70.420"> <enabled type="Bool">1</enabled> <forwardGratArp type="Bool">0</forwardGratArp> <rateControlEnabled type="Bool">0</rateControlEnabled> <maxFramesPerSecond type="Int">0</maxFramesPerSecond> <name type="String">GratARP-2</name> <ixLoadRestObjectId type="Int">9</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.GratArpPlugin> <Ixia.Aptixia.StackManager.TCPPlugin type="Ixia.Aptixia.StackManager.TCPPlugin" objectid="57601116-d86b-4c04-856b-2241507a0378" version="6.70.420"> <bestPerfSettings type="Bool">0</bestPerfSettings> <accept_ra_all type="Bool">0</accept_ra_all> <tcp_abort_on_overflow type="Bool">0</tcp_abort_on_overflow> <tcp_adv_win_scale type="Int">2</tcp_adv_win_scale> <tcp_app_win type="Int">31</tcp_app_win> <tcp_bic type="Int">0</tcp_bic> <tcp_bic_fast_convergence type="Int">1</tcp_bic_fast_convergence> <tcp_bic_low_window type="Int">14</tcp_bic_low_window> <tcp_dsack type="Bool">1</tcp_dsack> <tcp_ecn type="Bool">0</tcp_ecn> <tcp_fack type="Bool">1</tcp_fack> <tcp_fin_timeout type="Int">60</tcp_fin_timeout> <tcp_frto type="Int">0</tcp_frto> <tcp_keepalive_intvl type="Int">75</tcp_keepalive_intvl> <tcp_keepalive_probes type="Int">9</tcp_keepalive_probes> <tcp_keepalive_time type="Int">7200</tcp_keepalive_time> <tcp_low_latency type="Int">0</tcp_low_latency> <tcp_max_orphans type="Int">8192</tcp_max_orphans> <tcp_max_syn_backlog type="Int">1024</tcp_max_syn_backlog> <tcp_max_tw_buckets type="Int">180000</tcp_max_tw_buckets> <tcp_mem_low type="Int">24576</tcp_mem_low> <tcp_mem_pressure type="Int">32768</tcp_mem_pressure> <tcp_mem_high type="Int">49152</tcp_mem_high> <tcp_moderate_rcvbuf type="Int">0</tcp_moderate_rcvbuf> <tcp_no_metrics_save type="Bool">0</tcp_no_metrics_save> <tcp_orphan_retries type="Int">0</tcp_orphan_retries> <tcp_reordering type="Int">3</tcp_reordering> <tcp_retrans_collapse type="Bool">1</tcp_retrans_collapse> <tcp_retries1 type="Int">3</tcp_retries1> <tcp_retries2 type="Int">5</tcp_retries2> <tcp_rfc1337 type="Bool">0</tcp_rfc1337> <tcp_rmem_min type="Int">4096</tcp_rmem_min> <tcp_rmem_default type="Int">4096</tcp_rmem_default> <tcp_rmem_max type="Int">262144</tcp_rmem_max> <tcp_sack type="Bool">1</tcp_sack> <tcp_stdurg type="Bool">0</tcp_stdurg> <tcp_synack_retries type="Int">5</tcp_synack_retries> <tcp_syn_retries type="Int">5</tcp_syn_retries> <tcp_timestamps type="Bool">1</tcp_timestamps> <tcp_tw_recycle type="Bool">1</tcp_tw_recycle> <tcp_tw_reuse type="Bool">0</tcp_tw_reuse> <tcp_vegas_alpha type="Int">2</tcp_vegas_alpha> <tcp_vegas_beta type="Int">6</tcp_vegas_beta> <tcp_vegas_cong_avoid type="Int">0</tcp_vegas_cong_avoid> <tcp_vegas_gamma type="Int">2</tcp_vegas_gamma> <tcp_westwood type="Int">0</tcp_westwood> <tcp_window_scaling type="Bool">0</tcp_window_scaling> <ip_no_pmtu_disc type="Bool">1</ip_no_pmtu_disc> <tcp_wmem_min type="Int">4096</tcp_wmem_min> <tcp_wmem_default type="Int">4096</tcp_wmem_default> <tcp_wmem_max type="Int">262144</tcp_wmem_max> <tcp_ipfrag_time type="Int">30</tcp_ipfrag_time> <tcp_port_min type="Int">1024</tcp_port_min> <tcp_port_max type="Int">65535</tcp_port_max> <tcp_rto_min type="Int">200</tcp_rto_min> <tcp_rto_max type="Int">120000</tcp_rto_max> <tcp_tw_rfc1323_strict type="Bool">0</tcp_tw_rfc1323_strict> <udp_port_randomization type="Bool">0</udp_port_randomization> <disable_min_max_buffer_size type="Bool">1</disable_min_max_buffer_size> <llm_hdr_gap type="Int">8</llm_hdr_gap> <llm_hdr_gap_ns type="Int">10</llm_hdr_gap_ns> <inter_packet_granular_delay type="Double">0</inter_packet_granular_delay> <delayed_acks type="Bool">1</delayed_acks> <accept_ra_default type="Bool">0</accept_ra_default> <rps_needed type="Bool">0</rps_needed> <delayed_acks_segments type="Int">0</delayed_acks_segments> <delayed_acks_timeout type="Int">0</delayed_acks_timeout> <tcp_large_icwnd type="Int">0</tcp_large_icwnd> <tcp_mgmt_rmem type="Int">87380</tcp_mgmt_rmem> <tcp_mgmt_wmem type="Int">32768</tcp_mgmt_wmem> <adjust_tcp_buffers type="Bool">1</adjust_tcp_buffers> <name type="String">TCP-2</name> <ixLoadRestObjectId type="Int">10</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.TCPPlugin> <Ixia.Aptixia.StackManager.DnsPlugin type="Ixia.Aptixia.StackManager.DnsPlugin" objectid="7682d113-cd50-4cc6-b23a-569c29f03886" version="6.70.420"> <domain type="String" /> <timeout type="Int">30</timeout> <nameServerList type="ListNode" /> <searchList type="ListNode" /> <hostList type="ListNode" /> <name type="String">DNS-2</name> <ixLoadRestObjectId type="Int">12</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.DnsPlugin> <Ixia.Aptixia.StackManager.MeshingPlugin type="Ixia.Aptixia.StackManager.MeshingPlugin" objectid="f5f1e4c2-eef8-4a34-ac13-e1e3eeb5328b" version="6.70.420"> <trafficMaps type="ListNode" /> <activityRangeMapInfoList type="ListNode" /> <name type="String">Meshing-2</name> <ixLoadRestObjectId type="Int">13</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.MeshingPlugin> </globalPluginList> <portList type="Ixia.RpFramework.Server.Core.ShadowedPropertyStringList"> <String>{{ipchassis}};2;1</String> </portList> <typeSpecificData type="ListNode"> <Ixia.Aptixia.StackManager.IPSecPortGroupData type="Ixia.Aptixia.StackManager.IPSecPortGroupData" objectid="c279f05c-d2a7-476d-b4af-9c8ff0d878dd" version="6.70.0"> <role type="String">Initiator</role> <associates type="ListNode" /> <overrideGlobalOptions type="Bool">0</overrideGlobalOptions> <useMaxInitiationRate type="Bool">0</useMaxInitiationRate> <maxInitiationRate type="Int">50</maxInitiationRate> <useMaxPendingTunnels type="Bool">0</useMaxPendingTunnels> <maxPendingTunnels type="Int">50</maxPendingTunnels> <teardownRate type="Int">10</teardownRate> <enableESPPerStreamStats type="Bool">0</enableESPPerStreamStats> <enableESPReplayStats type="Bool">0</enableESPReplayStats> <activities type="ListNode" /> <pcpuLogLevel type="String">0</pcpuLogLevel> <ixLoadRestObjectId type="Int">2</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.IPSecPortGroupData> </typeSpecificData> <virtualMode type="Bool">0</virtualMode> <allowedVirtualModeTypes type="Ixia.RpFramework.Server.Core.ShadowedPropertyStringList" /> <doOwnership type="Bool">0</doOwnership> <branchToNicMap type="ListNode" /> <cpuAggregation type="Bool">0</cpuAggregation> <activePort type="String" /> <networkLayersManager type="Ixia.Aptixia.StackManager.NetworkLayersManager" objectid="d581a4e6-0e4b-4692-a0e2-12fd25d7db35" version="6.70.420"> <ixLoadRestObjectId type="Int">4</ixLoadRestObjectId> </networkLayersManager> <ixLoadRestObjectId type="Int">2</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.PortGroup> </portGroupList> <externalProperties type="Ixia.Aptixia.StackManager.ExternalPropertyManager" objectid="0c7c98dd-4e41-4fb8-adb7-918848d0ba3e" version="6.70.420"> <properties type="ListNode"> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="c7be9c3b-0335-4cf6-bbcb-d9a90d6b78a0" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">DHCPRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="d63defc3-039a-4af6-b0f6-19be5481d6bb" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">MobileSubscribersRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="d62b40dc-41c2-48b0-b3a6-4aa74e171a8c" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">DHCPServerRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="45eba56d-c42f-4bbf-830b-1f102bf83c92" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">EGTPUERange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="a9e91079-1215-444b-a0a0-59f8ff4e7746" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">GTPGRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="b91778ea-dac5-499a-8c54-b8ba0c78b44b" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">EGTPRange_SGW</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="13f113b2-8ce8-4742-ac72-f8ee04caa5d6" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">GTPSUERange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="f2723794-57ce-471c-b3ae-10cd5ee235a2" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">IpV4V6Range</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="3e8d5274-5483-41ca-8f4d-b1fce291dad1" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">PppoxRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="85b44e1f-0689-4feb-a14d-b43a1b837c1d" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">L2tpRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="c0383f23-e15f-4a97-bbf8-6ade8f6f2b0c" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">IxCatLTEUEUeRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="5912723b-fb9a-4e0a-bae4-38730c73cc0e" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">SixRdRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="9a6cb101-a624-4978-8d0c-85c5b6c26906" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">EGTPSgsnS3RangeUe</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="4f85b4a9-d55e-494e-beb6-5ef5b5d04cf8" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">EmulatedRouterRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="489dbc18-55b5-4902-99ab-9a289a8c2e2b" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">GTPNGAPRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="2992f902-204b-4050-8798-0b24ee090922" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">IxCatRNCIuPSUeRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="8b53f68d-6027-4150-9ca3-5a62606526bd" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">GTPNGUERange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="e85d740f-87a2-473a-a133-e08d5bb48ed2" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">EGTPUERange_S5S8_SGW</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="5a179c3f-82db-44b3-95fc-6e4dbfe17556" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">EGTPPcrfRange_S5S8_PGW</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="55d890fe-0faa-41bd-9fca-12463fd14b3d" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">DSLiteRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="8dc83b0a-45a9-46b7-9b52-731eb114d315" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">EGTPSGSNRangeUe</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="a0883ed3-63b7-47cb-ab77-7ceebb8212e1" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">SlaacRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="7bb58c6e-377f-46be-a2b1-7d86997b2fa1" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">AtmRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="8a4c92be-449a-4f0e-bcf3-55fdfcc369cc" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">IxCatMMEApnRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="588aea0d-748b-4b82-9418-4f3a35185d2e" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">IxCatENodeBUuApnRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="9046358f-dde4-4f17-b596-5903079d3bcf" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">MacRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="a28df47f-783e-4bc9-aa22-78636ceaf1b7" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">DualStackIPRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="19deb9c9-8aef-41e2-8b8b-f01a8b274266" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">EGTPUERange_S2a_TWAN</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="6abb9650-bc55-4e9e-9dfc-81964310e662" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">IxCatSGSNIuPSApnRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="35dc8f8d-44fd-4c73-9771-6c62bd227435" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">IxCatENodeBSimUeRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="3c48b615-2c03-4c1b-8712-e83f63841d13" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">S6dRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="cd5080c1-8de4-4eb3-985a-3e9fe38ebed4" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">UERangeBase</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="24c2c3a6-f9fd-4b8e-bc9f-aeeac63bae01" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">EGTPMmeS10RangeUe</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="529a2786-eb8c-40cb-80b9-83415888012c" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">S6aRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="6593d153-2b87-4171-a8bf-8ae2b1907487" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">PptpRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="819a5c99-14bf-4efb-912a-5d2c985e97d1" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">BmScRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="83ff7bd6-95cf-4d75-91e4-3e2a9f5f6b7d" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">MBmsGwRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="022d8e72-36c8-4117-b901-baffb9d0805c" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">EGTPPMIPHostRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> </properties> <values type="ListNode"> <Ixia.Aptixia.StackManager.ExternalProperty type="Ixia.Aptixia.StackManager.ExternalProperty" objectid="57badb9d-afb8-4c05-9182-df7469457e4c" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <target type="Ixia.Aptixia.StackManager.IpV4V6Range" objectid="5affc0a7-68f6-46f6-b801-0e18e067a572" version="6.70.420" /> <value type="Ixia.Aptixia.StackManager.ExternalValueBoolean" objectid="1efc6993-1480-469a-a6af-38b4093fb102" version="6.70.420"> <value type="Bool">0</value> <ixLoadRestObjectId type="Int">13</ixLoadRestObjectId> </value> <enabled type="Bool">1</enabled> <ixLoadRestObjectId type="Int">13</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.ExternalProperty> <Ixia.Aptixia.StackManager.ExternalProperty type="Ixia.Aptixia.StackManager.ExternalProperty" objectid="22a742ae-d9bd-4548-83f1-84da6cc07c5f" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <target type="Ixia.Aptixia.StackManager.IpV4V6Range" objectid="c69dae97-f1c2-4505-aedb-3f9ca3f4d02a" version="6.70.420" /> <value type="Ixia.Aptixia.StackManager.ExternalValueBoolean" objectid="b664f3f9-4f42-48c1-a481-75ba76740055" version="6.70.420"> <value type="Bool">0</value> <ixLoadRestObjectId type="Int">2</ixLoadRestObjectId> </value> <enabled type="Bool">1</enabled> <ixLoadRestObjectId type="Int">2</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.ExternalProperty> <Ixia.Aptixia.StackManager.ExternalProperty type="Ixia.Aptixia.StackManager.ExternalProperty" objectid="77dd061e-b592-4d9e-9c38-24a46fec1121" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <target type="Ixia.Aptixia.StackManager.MacRange" objectid="aa73bd95-9ffb-411e-8ab3-8a128767aacb" version="6.70.420" /> <value type="Ixia.Aptixia.StackManager.ExternalValueBoolean" objectid="b5f138be-a18b-46a3-b3f8-c90fa5711597" version="6.70.420"> <value type="Bool">0</value> <ixLoadRestObjectId type="Int">3</ixLoadRestObjectId> </value> <enabled type="Bool">0</enabled> <ixLoadRestObjectId type="Int">3</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.ExternalProperty> <Ixia.Aptixia.StackManager.ExternalProperty type="Ixia.Aptixia.StackManager.ExternalProperty" objectid="6dc25ae2-da26-4df6-8a25-cf296dd9430b" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <target type="Ixia.Aptixia.StackManager.MacRange" objectid="ba896971-1d78-4e03-8f2a-28c65417612e" version="6.70.420" /> <value type="Ixia.Aptixia.StackManager.ExternalValueBoolean" objectid="0858fb9d-2304-44d4-b413-569815c8b6a7" version="6.70.420"> <value type="Bool">0</value> <ixLoadRestObjectId type="Int">4</ixLoadRestObjectId> </value> <enabled type="Bool">0</enabled> <ixLoadRestObjectId type="Int">4</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.ExternalProperty> </values> <ixLoadRestObjectId type="Int">1</ixLoadRestObjectId> </externalProperties> <availableNetworkTimelines type="ListNode" /> <typeSpecificData type="ListNode"> <Ixia.Aptixia.StackManager.IxLoadSessionData type="Ixia.Aptixia.StackManager.IxLoadSessionData" objectid="149d16d7-c594-4866-917f-fe1b44fac83f" version="1.0.0"> <portGroupList type="ListNode"> <Ixia.Aptixia.StackManager.PortGroup type="Ixia.Aptixia.StackManager.PortGroup" objectid="b1fbd381-b769-4ec1-8715-299508ecb458" version="6.70.420" /> <Ixia.Aptixia.StackManager.PortGroup type="Ixia.Aptixia.StackManager.PortGroup" objectid="e7fa1f9e-23d9-4742-96b2-6edce6c4424e" version="6.70.420" /> </portGroupList> <ixLoadRestObjectId type="Int">1</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.IxLoadSessionData> <Ixia.Aptixia.StackManager.MacSessionData type="Ixia.Aptixia.StackManager.MacSessionData" objectid="7869d347-cce4-4cd3-9eed-88a3914ae956" version="6.70.420"> <duplicateCheckingScope type="Ixia.Aptixia.StackManager.MacSessionDataSkeleton+eMacValidationOptions">2</duplicateCheckingScope> <ixLoadRestObjectId type="Int">3</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.MacSessionData> <Ixia.Aptixia.StackManager.IpSessionData type="Ixia.Aptixia.StackManager.IpSessionData" objectid="93416b84-eb4a-4637-ab56-4a4de6250c3b" version="6.70.420"> <duplicateCheckingScope type="Ixia.Aptixia.StackManager.IpSessionDataSkeleton+eIpValidationOptions">2</duplicateCheckingScope> <enableGatewayArp type="Bool">0</enableGatewayArp> <gatewayArpRequestRate type="Int">300</gatewayArpRequestRate> <maxOutstandingGatewayArpRequests type="Int">300</maxOutstandingGatewayArpRequests> <ignoreUnresolvedIPs type="Bool">0</ignoreUnresolvedIPs> <sendAllRequests type="Bool">0</sendAllRequests> <individualARPTimeOut type="Int">500</individualARPTimeOut> <ixLoadRestObjectId type="Int">4</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.IpSessionData> <Ixia.Aptixia.StackManager.IPSecSessionData type="Ixia.Aptixia.StackManager.IPSecSessionData" objectid="8611fd36-7f8c-48bc-ac46-f6e2f0816cb5" version="6.70.0"> <ipsecTunnelSetup type="Ixia.Aptixia.StackManager.IPSecTunnelSetup" objectid="e08e1671-e189-4cba-8894-5dda9b24701a" version="6.70.0"> <tunnelSetupTimeout type="Int">30</tunnelSetupTimeout> <tunnelRetransmissionTimeout type="Int">30</tunnelRetransmissionTimeout> <numRetries type="Int">0</numRetries> <retryInterval type="Int">10</retryInterval> <retryDelay type="Int">10</retryDelay> <testType type="String">P2D</testType> <logLevel type="String">3</logLevel> <sendCiscoVid type="Bool">0</sendCiscoVid> <useMaxInitiationRate type="Bool">0</useMaxInitiationRate> <useMaxPendingTunnels type="Bool">0</useMaxPendingTunnels> <enableRekey type="Bool">1</enableRekey> <rekeyRetries type="Int">3</rekeyRetries> <rekeyFuzzPercentage type="Int">0</rekeyFuzzPercentage> <rekeyMargin type="Int">10</rekeyMargin> <ixLoadRestObjectId type="Int">7</ixLoadRestObjectId> </ipsecTunnelSetup> <ipsecCertificates type="Ixia.Aptixia.StackManager.IPSecCertificates" objectid="b53c8c74-6c81-4e4a-84cb-5beb05b38343" version="6.70.0"> <uniqueCert type="Bool">0</uniqueCert> <certSource type="String">kNewCert</certSource> <caURL type="String" /> <caDN type="String" /> <certSubjectDN type="String" /> <certSubjectAltDN type="String" /> <remoteIkeId type="String" /> <bitSize type="String">k512</bitSize> <saveCert type="Bool">1</saveCert> <cacheCertFolder type="String">C:\Program Files (x86)\Ixia\CachedCerts</cacheCertFolder> <certParentFolder type="String">C:\Program Files (x86)\Ixia\CachedCerts</certParentFolder> <certNumber type="String" /> <caCertNumber type="String" /> <earlyExpDate type="String" /> <lateExpDate type="String" /> <usePerRangeCertNameExp type="Bool">0</usePerRangeCertNameExp> <checkCrl type="Bool">0</checkCrl> <crlOverrideEnable type="Bool">0</crlOverrideEnable> <crlOverrideUrl type="String" /> <checkOcsp type="Bool">0</checkOcsp> <ocspOverrideEnable type="Bool">0</ocspOverrideEnable> <ocspOverrideUrl type="String" /> <unknownIsRevoked type="Bool">0</unknownIsRevoked> <certProto type="String">kSCEP</certProto> <ixLoadRestObjectId type="Int">7</ixLoadRestObjectId> </ipsecCertificates> <ipsecCertManager type="Ixia.Aptixia.StackManager.IPSecCertManager" objectid="21591e4a-9e87-48e6-8679-68685c5c8383" version="6.70.0"> <caURL type="String" /> <caDN type="String">CN=RootCA,C=RO,L=Bucharest,O=Ixia,OU=IxLoad,IP:201.121.87.2,email:ixia@ixiacom.com</caDN> <certSubjectDN type="String">CN=IxiaVPN,C=RO,L=Bucharest,O=Ixia</certSubjectDN> <keyGenAlgo type="String">kRSA_512</keyGenAlgo> <cacheCertFolder type="String">C:\Program Files (x86)\Ixia\CachedCerts</cacheCertFolder> <caKeyFile type="String">C:\Program Files (x86)\Ixia\ca-priv.key</caKeyFile> <caCrtFile type="String">C:\Program Files (x86)\Ixia\ca-cert.crt</caCrtFile> <certNumber type="Int">1</certNumber> <certProto type="String">kSCEP</certProto> <createRootCA type="Bool">0</createRootCA> <uniqueCert type="Bool">0</uniqueCert> <descFilePath type="String">C:\Program Files (x86)\Ixia\CachedCerts\sample.desc</descFilePath> <useDescFile type="Bool">0</useDescFile> <ixLoadRestObjectId type="Int">6</ixLoadRestObjectId> </ipsecCertManager> <eapSimTuples type="ListNode" /> <eapAkaTuples type="ListNode" /> <maxInitiationRate type="Int">50</maxInitiationRate> <maxPendingTunnels type="Int">50</maxPendingTunnels> <negotiationStartDelay type="Int">0</negotiationStartDelay> <teardownRate type="Int">10</teardownRate> <burstInitiation type="Bool">0</burstInitiation> <parallelInitiation type="Bool">0</parallelInitiation> <enableWildcardTsi type="Bool">0</enableWildcardTsi> <enableWildcardTsr type="Bool">0</enableWildcardTsr> <enablePlutoWildcardTsi type="Bool">0</enablePlutoWildcardTsi> <enablePlutoModeCfgWildcardTsr type="Bool">1</enablePlutoModeCfgWildcardTsr> <enablePlutoS2SWildcardTsr type="Bool">0</enablePlutoS2SWildcardTsr> <payloadAttrTypes type="ListNode" /> <ixLoadRestObjectId type="Int">3</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.IPSecSessionData> </typeSpecificData> <statViewManager type="Ixia.Aptixia.StackManager.StatViewManager" objectid="32b6a125-39ad-4da3-9710-e09cc94bf306" version="6.70.420"> <enableStats type="Bool">1</enableStats> <enableOverviewStats type="Bool">1</enableOverviewStats> <enablePerSessionStats type="Bool">1</enablePerSessionStats> </statViewManager> <waitForLinkUp type="Bool">0</waitForLinkUp> <overloadProtection type="Bool">1</overloadProtection> <ixLoadRestObjectId type="Int">1</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.SMSession> </rpf> + + <_composerConfig ver="[0, [1, [0, [0]]]]" type="ixComposerConfig"> + + + <_quickTestConfig ver="[0, [1, [0, [0]]]]" type="ixQuickTestConfig"> + + + 17217 + 8.30.0.161 + REG_CALL_OPNFV_ORANGE_v13.rxf + + C:\Users\asordo\Documents\__Customers\Orange\OPNFV2_Lannion + REG_CALL_OPNFV_ORANGE_v9j.rxf + Test1 + + + + {{ipchassis}} + 1 + None + + + <_apiUniqueId type="int">15685 + + + 1 + + + + + + + + + + + + Test1 + + True + False + True + False + 1 + + False + 4 + 0 + + 1 + 0 + 30 + 0 + 0 + <_apiUniqueId type="int">15467 + + + + New Traffic Flow + + + Originate + + + VoIP1@VM1 + None + netTraffic + True + Peer + ethernet + ipTrafficAgent + Both + + + + None + VoIP1 + Peer + ipTrafficAgent + None + + + True + REGISTERING + None + False + Both + 0 + + + 100.0 + 27 + + 4.10 + + + -2 + START + Start + + + Output1 + 0 + 2 + 0 + 2 + + + + + -3 + STOP + Stop + + + + 2 + Procedure + Register Complete (#4) + + + OK + 0 + 47 + 1 + 3 + + + + + 47 + CommandEx + Sleep (#2) + + + OK + 0 + -3 + 1 + 1 + + + FlowSleep + + + + <None> + 1 + + + 0 + 0 + + + + False + False + 600000 + False + False + 1 + False + 10 + + + False + 0 + False + True + 25 + False + False + 10 + 0 + 0 + + False + + + 0 + 0 + 1 + 1000 + 0 + -20 + 0 + 0 + 10 + 0 + 200 + 200 + -10 + 4000 + 2000 + 500 + 2000 + True + False + + + 15 + + + 25 + False + False + + + False + False + False + 0 + 1 + 10 + [00-10] + + + + 86534 + 3 + 0 + activeUsers + 1000 + 9223372036854775807 + 23 + False + + 32000 + False + False + False + False + + REGISTERING + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + {{sipportregistering}} + 0 + 1 + {{pnregistering}} + 1 + 0 + 1 + 0 + + 1 + 1 + 0 + 1 + [10000-65535,4] + 40000 + 2855 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + False + False + False + False + 5061 + True + 1 + 2 + 1 + False + False + 0 + 0 + aptixia-T.03440c56.4e1a.4def.8406.ec64db91d4c1-L2EthernetPlugin-166a11b6.4d30.40ea.b9e1.ac4fb44f112b-161.105.231.12;1;1default + + + + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + + 0 + 0 + + 1 + 0 + 0 + 0 + + 0 + 0 + 0 + 0 + + + 2855 + 0 + 0 + 0 + 0 + 1 + 12 + 0 + False + False + False + False + + False + 1 + 2 + 1 + False + False + 0 + 0 + + + False + + + 5060 + + + + + + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + 0 + 0 + + 0 + 0 + 0 + 0 + + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + False + False + False + False + + False + 0 + 1 + 1 + False + False + 0 + 0 + + + False + False + + 5060 + + + + + + 0 + + + + + + + + + .\Registration_only_LPS.tst + 0 + 48 + 66 + 2 + 0 + + + 0 + 1 + 0 + 0 + True + False + 1 + 0 + 1 + 0 + 1 + 1 + True + 0 + 1 + 0 + 1 + True + False + True + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + 9 + 1 + 1 + 32 + <_gbDebugLogs type="bool">False + False + + <_dict type="list"> + + _ipRule1 + + 1 + 0 + + + + dl_S_ADV + + 1 + 1 + + + + loopMidDelay + + + + dl_T_IO + + + + dl_T_INFO + + + + dl_S_SEND + + + + _rtpIpRule1 + + + + _estimatedBacklog + + + + loopPreDelay + + + + dl_EE_VRB + + + + dl_S_VRB + + + + log_filesize + + + + rtp_log_in_file + + + + loopCount + + 0 + 1 + + + + dl_T_VRB + + + + aliases + + + + dl_Q_ADV + + + + multipleUsersPerIO + + + + log_level + + + + rtpIpRule + + + + dl_1 + + + + dl_3 + + + + dl_2 + + + + rampdownSleep + + + + _portRule1 + + + + dl_FLOW + + + + dl_S_SER + + + + log_in_memory + + + + dl_R_VRB + + + + dl_Q_VRB + + + + portRuleCh + + + + rtpPortRule + + + + dl_M_IO + + + + dl_EE_DD + + + + rtpIpRuleCh + + + + dl_S_FSM + + + + loopMode + + + + _rtpPortRule1 + + + + dl_BUG + + + + dl_S_SUA + + + + ipRule + + + + ipRuleCh + + + + phoneRule + + + + dl_S_INFO + + + + dl_R_PAR + + + + gracefulRampDown + + + + dl_S_WAIT + + + + dl_SDP_DD + + + + dl_TRACE + + + + _gbDebugLogs + + + + rtpPortRuleCh + + + + dl_TG_VRB + + + + portRule + + + + dl_L_INFO + + + + dl_TG_ADV + + + + dl_R_DD + + + + dl_T_ADV + + + + ccExportProfile + + + + dl_L_ADV + + + + dl_L_VRB + + + + + + + False + 1-5 + 0 + 10000 + 1 + 500 + 500 + 4000 + 1 + 0 + 0 + 18 + 1 + 1500 + 5 + 2500 + 1500 + 2000 + 1 + 40 + 0 + 0 + 800 + 2150 + 1500 + 2000 + 500 + 0 + 750 + 86534 + 0 + {{registeringtotalcalls}} + + + 0 + + + 0 + 35 + 0 + + + Default.cap + False + False + 10000 + 0x8078C5D3 + + + + + + 0 + 0 + 160 + + + 8 + 8 + 160 + + + 2 + <_gbVideoCodecs type="bool">False + 96 + <_gbDataCodecs type="bool">False + + + 100 + + + 101 + + + -1 + + + [10000-65535,4] + False + False + False + False + False + False + False + False + False + False + False + False + False + AS:48 + False + 800 + False + 800 + False + AS:384 + False + 6400 + False + 6400 + False + AS:48 + False + 800 + False + 800 + + <_dict type="list"> + + videoRR_value + + + + _gbVideoSDPParams + + + + textRS_value + + + + channelsQoVPerZionPort + + + + _gbAudioSDPParams + + + + dedicatedCoreRange + + + + enableRTP + + + + rtpTosVal + + + + channelTypeQoV + + + + enableMediaSDPParams + + + + _gbTextSDPParams + + + + activityIdQoV + + + + rtpPort + + + + serviceEnabledQoV + + + + audioRS_option + + + + useJitComp + + + + maxMosStreams + + + + audioB_option + + + + audioB_value + + + + portIPsQoV + + + + customTos + + + + enableHwAcc + + + + enableIxStack + + + + jitMs + + + + videoRR_option + + + + rtpTos + + + + enableRTCPMux + + + + textRR_option + + + + silenceMode + + + + _gbMediaSDPParams + + + + textB_option + + + + enableQoV + + + + jitCMs + + + + valueQoV + + + + enableRTCP + + + + dedicatedCoreRangeLength + + + + enableMDI + + + + chEnableHwAcc + + + + enableOWD + + + + unitsQoV + + + + ixnamSupported + + + + chDisableHwAcc + + + + customTosGroupBox + + + + audioRR_option + + + + enablePerStream + + + + useSilence + + + + useMos + + + + textRR_value + + + + audioRS_value + + + + videoB_value + + + + mosInterval + + + + enableAdvStatCalc + + + + useJitter + + + + limitMos + + + + metricsQoV + + + + videoRS_option + + + + videoRS_value + + + + jitCMaxDrop + + + + audioRR_value + + + + textB_value + + + + enableTosRtp + + + + videoB_option + + + + activityNameQoV + + + + textRS_option + + + + enableNBExec + + + + + + + False + 0 + False + False + IxLoad + 2000 + 2000 + + <_dict type="list"> + + rtcpSDESTool + + + + rtcpSenderTimer + + + + rtcpCNAMEType + + + + hasSDESTool + + + + rtcpReceiverTimer + + + + rtcpIgnoreSSRC + + + + hasSDESName + + + + enableRTCPMux2 + + + + + + + False + <_gbEnableAudio type="bool">False + False + False + <_JB1 type="bool">False + 20 + False + 1000 + 7 + rtp_esmad-asordo-l_1224 + False + False + 1 + False + 1 + False + 0x20 + 32 + <_COV1 type="bool">False + False + 5 + + 0 + False + <_gbEnableQoV type="bool">False + False + + + 0 + 100 + 0 + 0 + 0 + 0 + English(US) + + 0 + False + <_gbEnableQoV type="bool">False + False + + + 0 + 100 + 0 + 0 + 0 + 0 + English(US) + US_042.wav + <_audioFormat type="str">Format: PCM, Duration: 32785 ms, Size: 524556 bytes + -20 + <_gbOutputLevel type="bool">False + 0 + 10 + 1 + + <_dict type="list"> + + _gbEnableQoV + + + + channelTypeQoV + + + + pesqPolqa + + + + enablePTT + + + + enableP56 + + + + qovAnalize + + + + channelsQoVPerZionPort + + + + _COV1 + + 0 + 0 + + + + useTelchemy + + + + activityIdQoV + + + + rtpTosVal + + + + useJitComp + + + + audioDuration + + + + _JB1 + + + + enableAudio + + + + portIPsQoV + + + + _gbQoVMetrics + + + + dodName + + + + jitMs + + + + _gbASRLanguage + + + + rtpTos + + + + radioBtnQoVASR + + + + silenceMode + + + + playTypeAudio + + + + useQoV + + + + activityNameQoV + + + + enableQoV + + + + jitCMs + + + + valueQoV + + + + _gbOutputLevel + + + + unitsQoV + + + + serviceEnabledQoV + + + + audioClip + + + + languageASR + + + + customTosGroupBox + + + + audioDurationUnit + + + + useMos + + + + channelsQoV + + + + customTos + + + + qovSettings + + + + useJitter + + + + useSilence + + + + metricsQoV + + + + jitCMaxDrop + + + + enableTosRtp + + + + enableAudioOWD + + + + _audioFormat + + + + _gbEnableAudio + + + + outputLevel + + + + + + + 0 + False + False + False + <_gbBtnTosBit7_0 type="bool">False + <_gbBtnTosBit7_1 type="bool">False + <_gbBtnTosBit6_0 type="bool">False + <_gbBtnTosBit6_1 type="bool">False + <_gbBtnTosBit5_0 type="bool">False + <_gbBtnTosBit5_1 type="bool">False + <_gbBtnTosBit4_0 type="bool">False + <_gbBtnTosBit4_1 type="bool">False + <_gbBtnTosBit3_0 type="bool">False + <_gbBtnTosBit3_1 type="bool">False + <_gbBtnTosBit2_0 type="bool">False + <_gbBtnTosBit2_1 type="bool">False + <_gbDisabledBtns type="bool">False + + + False + False + False + False + False + False + False + False + False + False + False + False + <_masterKeySelection type="int">0 + + + <_enableSRTP type="bool">False + <_useStaticKey type="bool">False + <_singleMasterKeyGrp type="bool">False + <_multipleMasterKeysGrp type="bool">False + + <_dict type="list"> + + bDisableSRTPAuthentication + + + + _singleMasterKeyGrp + + + + bIncludeMKI + + + + bEnableSRTP + + + + bDisableValidations + + + + _useStaticKey + + + + bEnablePreencryption + + + + _multipleMasterKeysGrp + + + + _enableSRTP + + + + bStaticMasterKeySalt + + + + staticKeyFile + + + + bDisableMasterSalt + + + + staticSingleKeySalt + + + + bAllowOnlySecureStreams + + + + bDisableSRTCPEncryption + + + + bEnableVideoSRTP + + + + bDisableSRTPEncryption + + + + bEnableTextSRTP + + + + _masterKeySelection + + + + + + + + 0 + 0 + 0 + 0 + 0 + 66 + 0 + 1 + + + False + 0 + False + 0 + False + 0 + False + 0 + False + 0 + False + 0 + False + 0 + + + False + False + 1 + <_gbEnableVideo type="bool">False + Fire_avc.mp4 + <_videoFormat type="str">Codec: H264, Duration: 12800 ms, Size: 2012176 bytes, Bitrate: 1225 kbps + 0 + 5 + 1 + False + <_gbUseConference type="bool">False + 0 + 1 + 1 + 1 + 1 + False + <_gbUseTelepresence type="bool">False + + 1 + 1 + 1 + False + False + <_gbTipMoreClips type="int">0 + Fire_avc.mp4 + 0 + 1 + 1 + 1 + 1 + <_gbTipPresentation type="bool">False + False + Fire_avc.mp4 + US_042.wav + 1 + 1 + 1 + 1 + 0 + False + <_gbTipLegacy type="int">0 + Fire_avc.mp4 + False + <_gbTipLegacyAudio type="int">0 + US_042.wav + False + False + False + False + False + False + False + False + False + False + True + + <_gbTosVideo type="bool">False + False + 1 + 0x20 + <_gbCustomTosVideo type="bool">False + 32 + False + False + False + 1 + True + False + <_gbH323AdvancedSettings type="bool">False + False + <_gbUseH323AdvancedSettings type="bool">False + + + False + + <_dict type="list"> + + hintTrackType + + + + videoMaxSessions + + + + useSingleNALUnit + + + + enableVideo + + + + useConference + + + + customTosVideo + + + + tipSettings + + + + playTypeVideo + + + + rotationScheme + + + + _gbUseH323AdvancedSettings + + + + isMP4 + + + + confVideoDuration + + + + tosValVideo + + + + enablePACSI + + + + _videoFormat + + + + confDuration + + + + tosVideo + + + + _gbUseTelepresence + + + + enableVideoOWD + + + + enableTosVideo + + + + fmtp + + + + videoType + + + + confDurationUnit + + + + videoDurationUnit + + + + _gbUseConference + + + + _gbH323AdvancedSettings + + + + _gbTosVideo + + + + _gbCustomTosVideo + + + + ignoreHintTrack + + + + enableAcceptSSRCChanges + + + + videoDuration + + + + useH323AdvancedSettings + + + + videoClip + + + + confVideoDurationUnit + + + + rtpmap + + + + _gbEnableVideo + + + + btnTelepresence + + + + useMosVideo + + + + + + + 0 + <_gbRotationScheme type="int">0 + 0 + 0 + 0 + 0 + + <_dict type="list"> + + rotationScheme + + + + confDuration + + + + confVideoDurationUnit + + + + confDurationUnit + + + + _gbRotationScheme + + + + confVideoDuration + + + + + + + 0 + 0 + 0 + False + False + <_gbTipMoreClips type="int">0 + Fire_avc.mp4 + 0 + 0 + 0 + 0 + 0 + <_gbTipPresentation type="bool">False + False + Fire_avc.mp4 + US_042.wav + 0 + 0 + 0 + 0 + 0 + False + <_gbTipLegacy type="int">0 + Fire_avc.mp4 + False + <_gbTipLegacyAudio type="int">0 + US_042.wav + False + False + False + False + False + False + False + False + False + False + True + + <_dict type="list"> + + tipUnrestrictedMedia + + + + tipLegacyClipAudio + + + + tipRotationScheme + + + + tipLegacyMode + + + + _tipLegacyClip + + + + tipVideoRefresh + + + + tipUsePresentationStream + + + + tipRtcpFeedback + + + + tipStartAfterUnit + + + + tipArithmetingCoding + + + + _gbTipLegacyAudio + + + + tipConfDuration + + + + tipConfDurationUnit + + + + tipG722Legacy + + + + tipDuration + + + + tipLegacyClip + + + + tipMoreClips + + + + tipDurationUnit + + + + tipInbandSets + + + + tipLegacyModeAudio + + + + _tipVideoClip2 + + + + tipAudioDurationUnit + + + + tipResolution + + + + tipDinamicChannels + + + + _tipLegacyClipAudio + + + + tipSyntheticPayload + + + + _gbTipPresentation + + + + tipHighProfile + + + + tipAudioActivityMetric + + + + tipGDR + + + + tipVideoClip2 + + + + _gbTipMoreClips + + + + tipVersion + + + + _tipVideoClip + + + + tipEndpointType + + + + _gbTipLegacy + + + + tipLTRP + + + + tipStartAfter + + + + _tipAudioClip + + + + tipPresentationRotation + + + + tipAudioClip + + + + tipVideoClip + + + + tipAudioDuration + + + + + + + False + False + <_gbEnableText type="bool">False + The quick brown fox jumps over the lazy dog + Format: t140, Max duration: 42300 ms + 1.0 + 1.0 + 300 + 0 + 0 + 5 + 1 + <_gbTosText type="bool">False + False + 1 + 0x20 + <_gbCustomTosText type="bool">False + 32 + + <_dict type="list"> + + tosValText + + + + _gbEnableText + + + + textClip + + + + customTosText + + + + textChpsMin + + + + textRedundancyLevel + + + + textChpsMax + + + + textBufferTime + + + + textDuration + + + + enableTextOWD + + + + _gbTosText + + + + enableText + + + + textPlayType + + + + _gbCustomTosText + + + + enableTosText + + + + textFormat + + + + textDurationUnit + + + + tosText + + + + + + + False + <_gbEnableT38 type="bool">False + <_gbEnableT38_2 type="bool">False + Ixia2Pages.tif + <_faxFormat type="str">Format: TIFF, Img size: 1660 x 2291, Size: 140402 bytes + 1 + 40000 + 0 + <_gbT38UdpEncapsulation type="bool">False + 102 + True + 0 + True + 5 + True + 0 + False + 0 + False + False + <_gbUdpOptions type="bool">False + True + 0 + True + 256 + False + 200 + + + <_dict type="list"> + + t38TranscodingMMR + + + + t38UdpEncapsulation + + + + useT38MaxBitrate + + + + t38RateMgmt + + + + t38TranscodingJBIG + + + + enableT38 + + + + t38TransportType + + + + _gbEnableT38_2 + + + + _gbEnableT38 + + + + useFaxVersion + + + + t38Port + + + + t38FillBitRemoval + + + + faxVersion + + + + useT38FillBitRemoval + + + + useT38RateMgmt + + + + faxImage + + + + useT38MaxBufferSize + + + + errorRecoverySchema + + + + t38MaxDatagramSize + + + + t38MaxBufferSize + + + + t38PayloadType + + + + useT38MaxDatagramSize + + + + t38MaxBitrate + + + + _faxFormat + + + + _gbUdpOptions + + + + _gbT38UdpEncapsulation + + + + imagesList + + + + useErrorRecoverySchema + + + + + + + 5551[000-] + 0 + 5 + 0 + 0 + 1 + 0 + 1 + 2 + 2 + 0 + 1 + True + True + True + True + 3 + 1 + + <_dict type="list"> + + t30SendResolution + + + + sendCedBeforeDIS + + + + t30ReceiveR8x7 + + + + t30SendPageSize + + + + t30ReceiveR8x3 + + + + t30SendProtocol + + + + t30ReceiveProtocol + + + + sendCNG + + + + t30SendCoding + + + + t30ReceiveMSLT + + + + t30SendMSLT + + + + t30ReceiveCoding + + + + t30ReceivePageSize + + + + t30ReceiveModulations + + + + t30ReceiveR8x15 + + + + t30StationId + + + + t30SendDataRate + + + + t30Receive200x200 + + + + + + + False + <_gbEnableMSRP type="bool">False + 2855 + 0 + alice[00-99].example.com + + 0 + False + 10.10.10.1 + True + 2855 + False + 0 + 0x00 + 0 + True + True + False + 30000 + 60000 + 30000 + 70000 + + + 0 + + False + + + <_dict type="list"> + + domainType + + + + filesCount + + + + firstRelayIpEnabled + + + + automaticMSRPAuth + + + + msrpSendEmptyMsg + + + + msrpTransactionTimeout + + + + msrpInterChunkTimeout + + + + tosMSRPVal + + + + enableMSRP + + + + localDomain + + + + relaysCount + + + + customMSRPTos + + + + firstRelayIp + + + + advSettings + + + + files + + + + msrpFirstChunkTimeout + + + + firstRelayIsIPv4 + + + + msrpPort + + + + _gbMSRPCustomTos + + + + msrpSessionTimeout + + + + _gbEnableMSRP + + + + enableMSRPTos + + + + msrpReuseTCP + + + + msrpGuiFiles + + + + msrpTos + + + + relays + + + + msrpRelayPort + + + + + + <_tempFile ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_FileRecord"> + 0 + <_typeStr type="str"> + + + + + <_bFileSize type="int">20 + <_msrpSizeCombo type="int">2 + 0 + 0 + application/octet-stream + + + <_tempAdvSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_MSRPAdvancedSettings"> + False + + + + + + + + + 0 + 201004[0000-] + + <_PN1 type="bool">False + <_bTelGrp type="bool">False + False + <_bkTelURIparams type="str">phone-context=example.com + + <_dict type="list"> + + phoneBookList + + + + filePath + + + + pattern + + + + ckTelURIBook + + + + _bkTelURIparams + + + + _PN1 + + + + _bTelGrp + + + + fromFile + + + + + + + + + + + + + <_gbStep1 type="bool">False + + + ANY + + + INVITE + + + ACK + + + BYE + + + CANCEL + + + OPTIONS + + + REGISTER + + + NOTIFY + + + SUBSCRIBE + + + REFER + + + MESSAGE + + + PRACK + + + INFO + + + UPDATE + + + + <_gbStep2 type="bool">False + 2 + 1 + + + To + + + From + + + Contact + + + Also + + + Authorization + + + Call-ID + + + Content-Length + + + Content-Type + + + CSeq + + + Event + + + Proxy-Authenticate + + + Proxy-Authorization + + + RAck + + + Record-Route + + + Refer-To + + + Referred-By + + + Replaces + + + Route + + + RSeq + + + Subscription-State + + + Via + + + WWW-Authenticate + + + To + t + 1 + 1 + 3 + False + + False + False + <_gbStep3 type="bool">False + 0 + False + < + 1 + False + > + last + 1 + last + <_gbStep4 type="bool">False + 0 + + + + 0 + + + + C:\Users\asordo\Documents\__Customers\Orange\OPNFV2_Lannion + + + + None + False + <_useTPb type="int">0 + <_tBp type="str"><None> + <_tBpPrv type="str"> + <_tPhone type="str">150[00000000-] + 0 + 150[00000000-] + <_tTelGrp type="bool">False + <_ckTTelURIParams type="bool">False + <_tTelURIparams type="str">phone-context=example.com + + + <_dict type="list"> + + _tBpPrv + + + + overridePhoneNo + + + + transTelPar + + + + _useTPb + + + + tPhone + + + + _tTelGrp + + + + _tPhone + + + + _ckTTelURIParams + + + + symTransferStr + + + + tPhoneType + + + + _tTelURIparams + + + + _tBp + + + + + + + 0 + mysipdomain.ixiacom.com + <_useEPb type="int">0 + <_eBp type="str"><None> + <_eBpPrv type="str"> + <_ePhone type="str">160[00000000-] + 0 + 160[00000000-] + <_eTelGrp type="bool">False + <_ckETelURI type="bool">False + <_eTelURIparams type="str">phone-context=example.com + + + <_dict type="list"> + + _useEPb + + + + _eBpPrv + + + + domainName + + + + _eBp + + + + _ePhone + + + + _eTelGrp + + + + ePhoneType + + + + _eTelURIparams + + + + useDomainName + + + + editTelPar + + + + ePhone + + + + _ckETelURI + + + + + + + + <_useSPb type="int">0 + <_sBp type="str"><None> + <_sBpPrv type="str"> + <_sPhone type="str">{{pnregistering}} + 0 + {{pnregistering}} + <_sTelGrp type="bool">False + <_ckSTelURIParams type="bool">False + <_sTelURIparams type="str">phone-context=example.com + + <_sTelGrp1 type="bool">False + <_dTelGrp1 type="bool">False + None + False + <_useDPb type="int">0 + <_dBp type="str"><None> + <_dBpPrv type="str"> + <_dPhone type="str">170[00000000-] + 0 + 170[00000000-] + <_dTelGrp type="bool">False + <_ckDTelURIParams type="bool">False + <_dTelURIparams type="str">phone-context=example.com + + False + False + False + sos + + + sos + + + sos.ambulance + + + sos.fire + + + sos.police + + + + <_dict type="list"> + + _useSPb + + + + _dTelGrp1 + + + + sourceIPs + + + + enableEmergencyCalls + + + + _sPhone + + + + _dBpPrv + + + + destPhoneType + + + + destTelPar + + + + useAnonymous + + + + _dTelGrp + + + + symDestStr + + + + _gbEmergencyDest + + + + _sBp + + + + makeEmergencyReg + + + + destPhone + + + + _gbEmergency + + + + _gbEmergencySource + + + + _ckSTelURIParams + + + + _dTelURIparams + + + + _dBp + + + + ovrDestPhone + + + + _sTelGrp1 + + + + emergencyServiceList + + + + _dPhone + + + + srcPhone + + + + srcTelPar + + + + _sTelURIparams + + + + _UseSrv1 + + + + srcPhoneType + + + + _sBpPrv + + + + _sTelGrp + + + + emergencyService + + + + _useDPb + + + + _ckDTelURIParams + + + + + + + True + {{sipportregistering}} + False + False + + {{pnregistering}}@{{domainname}} + {{authpassword}} + <None> + 0 + 0 + 0 + ixia + C:\Users\asordo\Documents\__Customers\Orange\OPNFV2_Lannion + ixia + 0 + 0 + 0 + False + <Default> + 00000000000000000000000000000000 + 00000000000000000000000000000001 + 00000000000000000000000000000002 + 00000000000000000000000000000004 + 00000000000000000000000000000008 + 64 + 0 + 32 + 64 + 96 + False + 0 + 0x00 + 0 + False + 0 + True + {{iplistims}} + 5060 + {{domainname}} + False + False + False + True + False + IP:PORT + False + False + + 1024 + False + False + False + + + False + ipsec-3gpp + 0 + hmac-sha-1-96 + 0 + esp + 0 + trans + 0 + aes-cbc + 255 + [3000-4000] + 4060 + + <_dict type="list"> + + protocol + + + + encrypt_algorithmStr + + + + algorithm + + + + modeStr + + + + protocolStr + + + + mechanism + + + + algorithmStr + + + + mode + + + + port_s + + + + port_c + + + + spi_start_idx + + + + encrypt_algorithm + + + + checked + + + + + + + False + False + 60 + False + False + 0 + True + False + <_enableAutoHeaders type="bool">False + <_btnAutoHeaders type="bool">False + False + False + + <_dict type="list"> + + _gbSrvSettings + + + + akaSharedSecretType + + + + T1 + + + + tcpWriteImmediate + + + + telURISource + + + + _gbRetransmissions + + + + _enableAutoHeaders + + + + enableSIP + + + + fqdn + + + + akaSharedSecretSource + + + + milenageConfCombo + + + + milenage_c3 + + + + milenage_c2 + + + + milenage_c5 + + + + milenage_c4 + + + + akaConfCombo + + + + akaOperatorVariantType + + + + overrideRegistrar + + + + port + + + + milenage_r4 + + + + milenage_r5 + + + + realm + + + + milenage_r3 + + + + milenage_r1 + + + + srvPort + + + + tos + + + + user + + + + akaOperatorVariantSource + + + + ovrDest + + + + useServer + + + + nUdpMaxSize + + + + retransmit1xx + + + + srvDomain + + + + _btnEditContact1 + + + + telURIDest + + + + ovrTimeout + + + + enablePeriodicDNSQueries + + + + useIPSecDoubleSPIPatch + + + + securityMechanismValList + + + + enableRetransmissions + + + + overrideRegistrarAddress + + + + enableTos + + + + srvAddr + + + + ovrDestHostPort + + + + DNSTimeoutValue + + + + tosVal + + + + passwd + + + + akaSharedSecretSequence + + + + T2 + + + + autoRegister + + + + skipDeleteDNSRecordsAtLoopEnd + + + + enableSigComp + + + + akaOperatorVariantSequence + + + + enableVoLTE + + + + retransmitACK + + + + _btnAutoHeaders + + + + volte_grbox + + + + customSipTos + + + + dontEndMediaOnBye + + + + milenage_r2 + + + + akaExportComplete + + + + mediaBearerType + + + + registrarSrv + + + + milenage_c1 + + + + akaUseOPasOPC + + + + _ovrDest1 + + + + outboundProxy + + + + _UseSrv1 + + + + _enableSIP1 + + + + closeTCPConnectionsOnRampdown + + + + ovrContact + + + + akaAbsolutePath + + + + serverAddresses + + + + enableCCDedicatedBearer + + + + akaConfComboSelIndex + + + + _gbCustomTos + + + + ovrTrans + + + + useDnsSrv + + + + ovrTransOption + + + + _enableSIP2 + + + + _gbPeriodicDNSQuery + + + + ignoreRetransmissions + + + + + + + True + + + True + REGISTER + 0 + Expires Header(s) + 3600 + + <_dict type="list"> + + message + + + + msgPartStr + + + + checked + + + + value + + + + msgPart + + + + + + + True + INVITE + 2 + Session-Expire(s) + 90 + + <_dict type="list"> + + message + + + + msgPartStr + + + + checked + + + + value + + + + msgPart + + + + + + + True + UPDATE + 2 + Session-Expire(s) + 90 + + <_dict type="list"> + + message + + + + msgPartStr + + + + checked + + + + value + + + + msgPart + + + + + + + 1 + 3000 + 50 + 32 + False + 500 + 4000 + True + True + True + False + False + 0 + False + False + False + 150 + False + False + False + + 0 + True + + <_dict type="list"> + + btnRefreshProcList + + + + autoEndCall + + + + ignoreRetransmissions + + + + minInterReregister + + + + autoEndCall2 + + + + enableTimers + + + + refreshInSecs + + + + retransmit1xx + + + + auto4xxAbort + + + + _gbEnableTimers + + + + ovrTimeout + + + + sessionRefreshType + + + + auto4xx + + + + procListChanged + + + + T2 + + + + autoProcedureList + + + + _gbAutoPRACK + + + + T1 + + + + refreshAfterPercent + + + + enableAutoPRACK + + + + stopActiveRetr + + + + enableRetransmissions + + + + rprTimeUntilNextRPR + + + + rprScenarioHasPRACK + + + + expirationValList + + + + refreshAfterSecs + + + + autoProceduresCount + + + + retransmitACK + + + + rprSendNegotiatedSDP + + + + + + + False + <_useCloud1 type="bool">False + <None> + + False + + False + <_ovrCloudRules1 type="bool">False + + <_dict type="list"> + + _gbVirtualIPs + + + + useCloud + + + + ovrCloudRules + + + + _ovrCloudRules1 + + + + _useCloud1 + + + + enableVirtualIPs + + + + virtualIPTable + + + + serverRules + + + + cloud + + + + + + + False + False + False + False + <_enableTLS1 type="bool">False + <_enableTLS2 type="bool">False + <_enableTLS3 type="bool">False + 5061 + 3 + False + <_tlsSessionRefresh type="bool">False + 3600 + 0 + False + <_tlsReuseConnection type="bool">False + False + False + <_gbTlsMutual type="bool">False + + + True + ECDHE-ECDSA-AES128-GCM-SHA256 + + <_dict type="list"> + + enabled + + + + name + + + + + + + True + ECDHE-ECDSA-AES256-GCM-SHA384 + + <_dict type="list"> + + enabled + + + + name + + + + + + + True + ECDHE-RSA-AES128-GCM-SHA256 + + <_dict type="list"> + + enabled + + + + name + + + + + + + True + ECDHE-ECDSA-AES256-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + True + ECDHE-ECDSA-AES128-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + True + ECDHE-RSA-AES128-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + True + AES128-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + True + AES256-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + ECDHE-ECDSA-AES256-SHA384 + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + ECDHE-ECDSA-AES128-SHA256 + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + ECDHE-RSA-AES256-GCM-SHA384 + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + ECDHE-RSA-AES128-SHA256 + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + ECDHE-RSA-AES256-SHA384 + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + DES-CBC-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + DES-CBC3-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + EXP-DES-CBC-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + EXP-RC2-CBC-MD5 + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + EXP-RC4-MD5 + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + EXP1024-DES-CBC-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + EXP1024-RC4-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + IDEA-CBC-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + NULL-MD5 + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + NULL-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + RC4-MD5 + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + RC4-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + C:\Program Files (x86)\Ixia\IxLoad\8.20-EA\aptixia\data\SSL_Certificates + Unsecured_RSA_key_1024.pem + Unsecured_RSA_cert_1024.pem + 0 + 0 + + 0 + 0 + True + False + + <_dict type="list"> + + tlsCertType + + + + tlsPassword + + + + tlsPort + + + + tlsMutual + + + + tlsPrivateKeyCertificate + + + + tlsTransportType + + + + enableTLS_HTTP + + + + tlsCyphers + + + + tlsProtocol + + + + tlsKeyType + + + + _tlsSessionRefresh + + + + tlsCertificatesPath + + + + tlsEnableTcpKeepAlive + + + + _gbTlsMutual + + + + tlsPublicKeyCertificate + + + + _enableCert + + + + enableTLS + + + + tlsAuthClient + + + + ignoreSubjectAltName + + + + _enableTLS4 + + + + _enableTLS1 + + + + _enableTLS2 + + + + _enableTLS3 + + + + enableDTLS + + + + enableTLS_MSRP + + + + tlsReuseConnection + + + + tlsRefreshInterval + + + + tlsSessionRefresh + + + + tlsDisableUdpAndTcp + + + + sipScheme + + + + _tlsReuseConnection + + + + + + + 200 + 30000 + False + + + 6 + 100 + 30000 + + + + + + + + + + + + + 0 + False + <_gbHardcodedForDemo type="bool">False + <_gbStunSettings type="bool">False + False + 127.0.0.1 + 3478 + False + False + <_gbSRVCCSettings type="bool">False + False + + False + False + False + <_gbPCO type="bool">False + + False + False + + + + <_dict type="list"> + + _gbIceSettings + + + + _gbPCO + + + + VOIP_IPAddress4 + + + + _gbStunSettings + + + + VOIP_IPAddress0 + + + + VOIP_IPAddress3 + + + + VOIP_IPAddress2 + + + + bUseIce + + + + mobilityPath + + + + VOIP_Var0 + + + + VOIP_IPAddress1 + + + + PCO_List + + + + _gbSRVCCSettings + + + + absolutePathForCsvWithVariables + + + + VOIP_Var2 + + + + PCO_Groupbox + + + + bUseHardcoded + + + + bUseSRVCC + + + + useBHCA + + + + ipPreference + + + + btnBrowseForVariableCsv + + + + bUsePCO + + + + stunPort + + + + bUseStun + + + + stunAddr + + + + ddgGroupboxSRVCC + + + + _gbHardcodedForDemo + + + + pathForCsvWithVariables + + + + DodPathForCsvWithVariables + + + + _varCsvGroupBox + + + + VOIP_Var1 + + + + loadVariablesFromCsv + + + + VOIP_Var3 + + + + bIceLite + + + + VOIP_Var4 + + + + + + + False + sc.home1.net + False + phone-context=example + 61814712345 + 0 + 0 + False + False + False + False + + False + 160[00000000-] + <None> + + 0 + 0 + False + False + False + False + + False + 160[00000000-] + <None> + + 0 + 0 + + False + False + None + 0 + + + 0 + False + False + False + + <_dict type="list"> + + smOrigNumberingPlan + + + + smsFiles + + + + enableSMS + + + + enableSMOrigReplyPath + + + + smsFilesCount + + + + btnSMRecipEdit + + + + grBoxSMOriginator + + + + grBoxSMRecipient + + + + enableSMRecipOverrideSrc + + + + enableSMOrigReqStatusReport + + + + smsAddressOriginator + + + + telURI + + + + depActivities + + + + pcpuCommonPath + + + + smOrigTypeOfNo + + + + smRecipTypeOfNo + + + + requestURI + + + + smsFilesBackup + + + + smsAddressRecipient + + + + enableTelURI + + + + useFilesFromActivity + + + + smRecipNumberingPlan + + + + smscPhoneNo + + + + smsImportFilesActivity + + + + enableSMRecipReplyPath + + + + btnSMOrigEdit + + + + smscNumberingPlan + + + + duringLoadFromBackup + + + + enableSMRecipReqStatusReport + + + + grBoxSMServiceCenter + + + + verifyUserInfo + + + + smscTypeOfNo + + + + enableSMOrigOverrideDest + + + + smsActivityForFiles + + + + + + + 0 + + + + + + 0 + 0 + 0 + + + + <_dict type="list"> + + segmentNo + + + + contentViewShow + + + + ixSmsFilePath + + + + contentViewEdit + + + + comboCoding + + + + segmentOrder + + + + comboRefNo + + + + loadedFileType + + + + btnSmsLoadFiles + + + + ixSmsFileName + + + + btnSmsSaveAs + + + + fileName + + + + totalTpudSize + + + + + + + 0 + <None> + + 160[00000000-] + 0 + 160[00000000-] + False + + + + <_dict type="list"> + + userPattern + + + + phoneBookPreview + + + + ePhoneType + + + + fakeEnableTelURI + + + + fakeTelToPort + + + + comboPhoneBook + + + + ePhone + + + + fakeTelURI + + + + radioBtnPhoneNo + + + + + + + 0 + <None> + + 160[00000000-] + 0 + 160[00000000-] + False + + + + <_dict type="list"> + + userPattern + + + + phoneBookPreview + + + + ePhoneType + + + + fakeEnableTelURI + + + + fakeTelToPort + + + + comboPhoneBook + + + + ePhone + + + + fakeTelURI + + + + radioBtnPhoneNo + + + + + + + True + + + + + INVITE + + + ACK + + + BYE + + + CANCEL + + + OPTIONS + + + REGISTER + + + NOTIFY + + + SUBSCRIBE + + + REFER + + + MESSAGE + + + PRACK + + + INFO + + + UPDATE + + + 100 (Trying) + + + 180 (Ringing) + + + 181 (Call Is Being Forwarded) + + + 182 (Queued) + + + 183 (Session Progress) + + + 200 (OK) + + + 202 (Accepted) + + + 300 (Multiple Choices) + + + 301 (Moved Permanently) + + + 302 (Moved Temporarily) + + + 305 (Use Proxy) + + + 380 (Alternative Service) + + + 400 (Bad Request) + + + 401 (Unauthorized) + + + 402 (Payment Required) + + + 403 (Forbidden) + + + 404 (Not Found) + + + 405 (Method Not Allowed) + + + 406 (Not Acceptable) + + + 407 (Proxy Authentication Required) + + + 408 (Request Timeout) + + + 410 (Gone) + + + 413 (Request Entity Too Large) + + + 414 (Request-URI Too Large) + + + 415 (Unsupported Media Type) + + + 416 (Unsupported URI Scheme) + + + 420 (Bad Extension) + + + 421 (Extension Required) + + + 423 (Interval Too Brief) + + + 480 (Temporarily not available) + + + 481 (Call Leg/Transaction Does Not Exist) + + + 482 (Loop Detected) + + + 483 (Too Many Hops) + + + 484 (Address Incomplete) + + + 485 (Ambiguous) + + + 486 (Busy Here) + + + 487 (Request Terminated) + + + 488 (Not Acceptable Here) + + + 491 (Request Pending) + + + 493 (Undecipherable) + + + 500 (Internal Server Error) + + + 501 (Not Implemented) + + + 502 (Bad Gateway) + + + 503 (Service Unavailable) + + + 504 (Server Time-out) + + + 505 (SIP Version not supported) + + + 513 (Message Too Large) + + + 600 (Busy Everywhere) + + + 603 (Decline) + + + 604 (Does not exist anywhere) + + + 606 (Not Acceptable) + + + + + + Request-Uri + + + Via + + + From + + + To + + + Call-ID + + + CSeq + + + Contact + + + Content-Length + + + Route + + + Record-Route + + + Authorization + + + Proxy-Authorization + + + Referred-By + + + Replaces + + + Event + + + RAck + + + RSeq + + + Refer-To + + + Subscription-State + + + WWW-Authenticate + + + Also + + + To + + False + + + True + + + False + + + + + + False + 40000 + 60000 + 1 + False + False + 10 + False + False + + <_dict type="list"> + + tcpIdlePeriod + + + + tcpEndPortLabel + + + + tcpIdlePeriodLabel + + + + donotCloseTCPInsideCallEnable + + + + tcpPortStepLabel + + + + tcpLocalPortStep + + + + tcpLocalPortEnd + + + + tcpStartPortLabel + + + + tcpLocalPortStart + + + + closeIdleTcpConnectionsEnable + + + + recordingServerEnable + + + + overrideTCPLocalPort + + + + closeNonsecureTcpConnectionsEnable + + + + + + + 2 + <_apiUniqueId type="int">15470 + 27 + 11 + + + <_dict type="list"/> + + VoIP + + + + True + CALLING + None + False + Both + 0 + + + + VoIP2_CALLED + protocolSpecific + + + protocolSpecific + + True + None + + + VoIP2@VM2 + None + netTraffic + True + Peer + ethernet + ipTrafficAgent + Both + + + + None + VoIP2 + Peer + ipTrafficAgent + None + + + 1 + CALLED + None + False + Both + 0 + + + 100.0 + 43 + + 4.10 + + + -2 + START + Start + + + Output1 + 0 + 3 + 0 + 2 + + + + + -3 + STOP + Stop + + + + 3 + Procedure + SIP ReceiveCall (#3) + + + OK + 0 + 17 + 1 + 4 + + + Error + 1 + -3 + 2 + 1 + + + + + 11 + Procedure + SIP EndCall Receive (#4) + + + OK + 0 + -3 + 1 + 1 + + + Error + 1 + -3 + 2 + 1 + + + + + 17 + CommandEx + Voice Session (#2) + + + OK + 0 + 11 + 1 + 3 + + + Error + 1 + 11 + 2 + 3 + + + RTPVoiceSession + + + + VoiceLink1 + 2 + + + 3 + 5 + + + + False + False + 600000 + False + False + 1 + False + 10 + + + False + 0 + False + True + 25 + False + False + 10 + 0 + 0 + + False + + + 0 + 0 + 1 + 1000 + 0 + -20 + 0 + 0 + 10 + 0 + 200 + 200 + -10 + 4000 + 2000 + 500 + 2000 + True + False + + + 15 + + + 25 + False + False + + + False + False + False + 0 + 1 + 10 + [00-10] + + + + 653520 + 3 + 2 + activeUsers + 1000 + 9223372036854775807 + 8 + False + + 32000 + False + False + False + False + + CALLED + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + {{sipportcalled}} + 0 + 1 + {{pncalled}} + 1 + 0 + 1 + 0 + + 1 + 1 + 0 + 1 + [10000-65535,4] + 40000 + 2855 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + False + False + False + False + 5061 + True + 1 + 2 + 1 + False + False + 0 + 0 + aptixia-T.03440c56.4e1a.4def.8406.ec64db91d4c1-L2EthernetPlugin-820b0582.6a4c.4109.bd5d.587621a43ce2-161.105.231.12;2;1default + + + + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + + 0 + 0 + + 1 + 0 + 0 + 0 + + 0 + 0 + 0 + 0 + + + 2855 + 0 + 0 + 0 + 0 + 1 + 12 + 0 + False + False + False + False + + False + 1 + 2 + 1 + False + False + 0 + 0 + + + False + + + 5060 + + + + + + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + 0 + 0 + + 0 + 0 + 0 + 0 + + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + False + False + False + False + + False + 0 + 1 + 1 + False + False + 0 + 0 + + + False + False + + 5060 + + + + + + 0 + + + + + + + + + .\SIPCall.tst + 1 + 18 + 66 + 8 + 0 + + + 0 + 1 + 0 + 0 + True + False + 1 + 0 + 1 + 0 + 1 + 1 + True + 0 + 1 + 1 + 1 + True + False + True + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + 9 + 1 + 1 + 32 + <_gbDebugLogs type="bool">False + False + + <_dict type="list"> + + _ipRule1 + + + + dl_S_ADV + + + + loopMidDelay + + + + dl_T_IO + + + + dl_T_INFO + + + + dl_S_SEND + + + + _rtpIpRule1 + + + + _estimatedBacklog + + + + loopPreDelay + + + + dl_S_VRB + + + + dl_TG_ADV + + + + log_filesize + + + + rtp_log_in_file + + + + dl_T_VRB + + + + aliases + + + + dl_Q_ADV + + + + multipleUsersPerIO + + + + log_level + + + + rtpIpRule + + + + dl_1 + + + + dl_3 + + + + dl_2 + + + + rampdownSleep + + + + _portRule1 + + + + dl_S_SER + + + + dl_R_VRB + + + + dl_L_ADV + + + + dl_Q_VRB + + + + portRuleCh + + + + dl_S_INFO + + + + rtpPortRule + + + + dl_M_IO + + + + dl_EE_DD + + + + rtpIpRuleCh + + + + dl_S_FSM + + + + loopMode + + + + gracefulRampDown + + + + dl_FLOW + + + + dl_BUG + + + + dl_S_SUA + + + + ipRule + + + + ipRuleCh + + + + phoneRule + + + + _rtpPortRule1 + + + + dl_R_PAR + + + + loopCount + + + + dl_S_WAIT + + + + dl_SDP_DD + + + + dl_TRACE + + + + _gbDebugLogs + + + + rtpPortRuleCh + + + + dl_TG_VRB + + + + portRule + + + + dl_L_INFO + + + + dl_EE_VRB + + + + dl_R_DD + + + + dl_T_ADV + + + + ccExportProfile + + + + log_in_memory + + + + dl_L_VRB + + + + + + + False + 1-5 + 0 + 10000 + 1 + 500 + 500 + 4000 + 1 + 0 + 0 + 18 + 0 + 30000 + 16750 + 33500 + 1500 + 2000 + 500 + 40 + 0 + 0 + 800 + 2150 + 1500 + 2000 + 500 + 0 + 30000 + {{activecalls}} + 0 + {{activecalls}} + + + 1 + + + 0 + 35 + 0 + + + Default.cap + False + False + 10000 + 0x8078C5D3 + + + + + + 0 + 0 + 160 + + + 8 + 8 + 160 + + + 2 + <_gbVideoCodecs type="bool">False + 96 + <_gbDataCodecs type="bool">False + + + 100 + + + 101 + + + -1 + + + [10000-65535,4] + False + False + False + False + False + False + False + False + False + False + False + False + False + AS:48 + False + 800 + False + 800 + False + AS:384 + False + 6400 + False + 6400 + False + AS:48 + False + 800 + False + 800 + + <_dict type="list"> + + videoRR_value + + + + _gbVideoSDPParams + + + + textRS_value + + + + jitMs + + + + _gbAudioSDPParams + + + + ixnamSupported + + + + dedicatedCoreRange + + + + enableRTP + + + + rtpTosVal + + + + channelTypeQoV + + + + enableMediaSDPParams + + + + _gbTextSDPParams + + + + activityIdQoV + + + + rtpPort + + + + audioRS_option + + + + useJitComp + + + + dedicatedCoreRangeLength + + + + audioB_option + + + + audioB_value + + + + portIPsQoV + + + + audioRS_value + + + + enableHwAcc + + + + chEnableHwAcc + + + + channelsQoVPerZionPort + + + + videoRR_option + + + + rtpTos + + + + enableRTCPMux + + + + textRR_option + + + + silenceMode + + + + _gbMediaSDPParams + + + + textB_option + + + + enableQoV + + + + jitCMs + + + + valueQoV + + + + enableRTCP + + + + maxMosStreams + + + + enableMDI + + + + enableIxStack + + + + enableOWD + + + + unitsQoV + + + + serviceEnabledQoV + + + + chDisableHwAcc + + + + customTosGroupBox + + + + audioRR_option + + + + enablePerStream + + + + limitMos + + + + useMos + + + + textRR_value + + + + customTos + + + + videoB_value + + + + mosInterval + + + + enableAdvStatCalc + + + + useJitter + + + + useSilence + + + + metricsQoV + + + + videoRS_option + + + + videoRS_value + + + + jitCMaxDrop + + + + audioRR_value + + + + textB_value + + + + enableTosRtp + + + + videoB_option + + + + activityNameQoV + + + + textRS_option + + + + enableNBExec + + + + + + + False + 0 + False + False + IxLoad + 2000 + 2000 + + <_dict type="list"> + + rtcpSDESTool + + + + rtcpSenderTimer + + + + rtcpCNAMEType + + + + hasSDESTool + + + + rtcpReceiverTimer + + + + rtcpIgnoreSSRC + + + + hasSDESName + + + + enableRTCPMux2 + + + + + + + False + <_gbEnableAudio type="bool">False + False + False + <_JB1 type="bool">False + 20 + False + 1000 + 7 + rtp_esmad-asordo-l_2170 + False + False + 1 + False + 1 + False + 0x20 + 32 + <_COV1 type="bool">False + False + 5 + + 0 + False + <_gbEnableQoV type="bool">False + False + + + 0 + 100 + 0 + 0 + 0 + 0 + English(US) + + 0 + False + <_gbEnableQoV type="bool">False + False + + + 0 + 100 + 0 + 0 + 0 + 0 + English(US) + US_042.wav + <_audioFormat type="str">Format: PCM, Duration: 32785 ms, Size: 524556 bytes + -20 + <_gbOutputLevel type="bool">False + 0 + 10 + 1 + + <_dict type="list"> + + _gbEnableQoV + + + + channelTypeQoV + + + + pesqPolqa + + + + enablePTT + + + + enableP56 + + + + qovAnalize + + + + channelsQoVPerZionPort + + + + _COV1 + + + + useTelchemy + + + + activityIdQoV + + + + rtpTosVal + + + + useJitComp + + + + audioDuration + + + + _JB1 + + + + enableAudio + + + + enableTosRtp + + + + portIPsQoV + + + + _gbQoVMetrics + + + + dodName + + + + jitMs + + + + _gbASRLanguage + + + + rtpTos + + + + radioBtnQoVASR + + + + silenceMode + + + + playTypeAudio + + + + useQoV + + + + activityNameQoV + + + + enableQoV + + + + jitCMs + + + + valueQoV + + + + _gbOutputLevel + + + + unitsQoV + + + + serviceEnabledQoV + + + + audioClip + + + + languageASR + + + + customTosGroupBox + + + + audioDurationUnit + + + + useMos + + + + customTos + + + + qovSettings + + + + useJitter + + + + useSilence + + + + metricsQoV + + + + jitCMaxDrop + + + + channelsQoV + + + + enableAudioOWD + + + + _audioFormat + + + + _gbEnableAudio + + + + outputLevel + + + + + + + 0 + False + False + False + <_gbBtnTosBit7_0 type="bool">False + <_gbBtnTosBit7_1 type="bool">False + <_gbBtnTosBit6_0 type="bool">False + <_gbBtnTosBit6_1 type="bool">False + <_gbBtnTosBit5_0 type="bool">False + <_gbBtnTosBit5_1 type="bool">False + <_gbBtnTosBit4_0 type="bool">False + <_gbBtnTosBit4_1 type="bool">False + <_gbBtnTosBit3_0 type="bool">False + <_gbBtnTosBit3_1 type="bool">False + <_gbBtnTosBit2_0 type="bool">False + <_gbBtnTosBit2_1 type="bool">False + <_gbDisabledBtns type="bool">False + + + False + False + False + False + False + False + False + False + False + False + False + False + <_masterKeySelection type="int">0 + + + <_enableSRTP type="bool">False + <_useStaticKey type="bool">False + <_singleMasterKeyGrp type="bool">False + <_multipleMasterKeysGrp type="bool">False + + <_dict type="list"> + + bEnableSRTP + + + + _singleMasterKeyGrp + + + + bDisableSRTPEncryption + + + + bDisableSRTPAuthentication + + + + bDisableValidations + + + + _useStaticKey + + + + bEnablePreencryption + + + + staticSingleKeySalt + + + + _enableSRTP + + + + bStaticMasterKeySalt + + + + staticKeyFile + + + + bDisableMasterSalt + + + + _multipleMasterKeysGrp + + + + bAllowOnlySecureStreams + + + + bDisableSRTCPEncryption + + + + bEnableVideoSRTP + + + + bIncludeMKI + + + + bEnableTextSRTP + + + + _masterKeySelection + + + + + + + + 0 + 0 + 0 + 0 + 0 + 66 + 0 + 1 + + + False + 0 + False + 0 + False + 0 + False + 0 + False + 0 + False + 0 + False + 0 + + + False + False + 1 + <_gbEnableVideo type="bool">False + Fire_avc.mp4 + <_videoFormat type="str">Codec: H264, Duration: 12800 ms, Size: 2012176 bytes, Bitrate: 1225 kbps + 0 + 5 + 1 + False + <_gbUseConference type="bool">False + 0 + 1 + 1 + 1 + 1 + False + <_gbUseTelepresence type="bool">False + + 1 + 1 + 1 + False + False + <_gbTipMoreClips type="int">0 + Fire_avc.mp4 + 0 + 1 + 1 + 1 + 1 + <_gbTipPresentation type="bool">False + False + Fire_avc.mp4 + US_042.wav + 1 + 1 + 1 + 1 + 0 + False + <_gbTipLegacy type="int">0 + Fire_avc.mp4 + False + <_gbTipLegacyAudio type="int">0 + US_042.wav + False + False + False + False + False + False + False + False + False + False + True + + <_gbTosVideo type="bool">False + False + 1 + 0x20 + <_gbCustomTosVideo type="bool">False + 32 + False + False + False + 1 + True + False + <_gbH323AdvancedSettings type="bool">False + False + <_gbUseH323AdvancedSettings type="bool">False + + + False + + <_dict type="list"> + + hintTrackType + + + + videoMaxSessions + + + + useSingleNALUnit + + + + enableVideo + + + + useConference + + + + customTosVideo + + + + tipSettings + + + + playTypeVideo + + + + rotationScheme + + + + _gbUseH323AdvancedSettings + + + + isMP4 + + + + confVideoDuration + + + + tosValVideo + + + + enablePACSI + + + + _videoFormat + + + + confDuration + + + + tosVideo + + + + _gbUseTelepresence + + + + enableVideoOWD + + + + enableTosVideo + + + + fmtp + + + + videoType + + + + confDurationUnit + + + + videoDurationUnit + + + + _gbUseConference + + + + _gbH323AdvancedSettings + + + + _gbTosVideo + + + + _gbCustomTosVideo + + + + ignoreHintTrack + + + + enableAcceptSSRCChanges + + + + videoDuration + + + + useH323AdvancedSettings + + + + videoClip + + + + confVideoDurationUnit + + + + rtpmap + + + + _gbEnableVideo + + + + btnTelepresence + + + + useMosVideo + + + + + + + 0 + <_gbRotationScheme type="int">0 + 0 + 0 + 0 + 0 + + <_dict type="list"> + + rotationScheme + + + + confDuration + + + + confVideoDurationUnit + + + + confDurationUnit + + + + _gbRotationScheme + + + + confVideoDuration + + + + + + + 0 + 0 + 0 + False + False + <_gbTipMoreClips type="int">0 + Fire_avc.mp4 + 0 + 0 + 0 + 0 + 0 + <_gbTipPresentation type="bool">False + False + Fire_avc.mp4 + US_042.wav + 0 + 0 + 0 + 0 + 0 + False + <_gbTipLegacy type="int">0 + Fire_avc.mp4 + False + <_gbTipLegacyAudio type="int">0 + US_042.wav + False + False + False + False + False + False + False + False + False + False + True + + <_dict type="list"> + + tipDuration + + + + tipRotationScheme + + + + tipLegacyMode + + + + _tipLegacyClip + + + + tipVideoClip + + + + tipVideoRefresh + + + + tipUsePresentationStream + + + + tipGDR + + + + tipStartAfterUnit + + + + tipArithmetingCoding + + + + _gbTipLegacyAudio + + + + tipConfDuration + + + + tipConfDurationUnit + + + + tipG722Legacy + + + + tipLegacyClipAudio + + + + tipLegacyClip + + + + tipMoreClips + + + + tipDurationUnit + + + + tipInbandSets + + + + tipSyntheticPayload + + + + _tipVideoClip2 + + + + tipAudioDurationUnit + + + + tipResolution + + + + _tipVideoClip + + + + _tipLegacyClipAudio + + + + tipAudioDuration + + + + tipLegacyModeAudio + + + + _gbTipPresentation + + + + tipHighProfile + + + + tipRtcpFeedback + + + + tipVideoClip2 + + + + _gbTipMoreClips + + + + tipVersion + + + + tipDinamicChannels + + + + tipEndpointType + + + + _gbTipLegacy + + + + tipLTRP + + + + tipStartAfter + + + + _tipAudioClip + + + + tipPresentationRotation + + + + tipAudioClip + + + + tipAudioActivityMetric + + + + tipUnrestrictedMedia + + + + + + + False + False + <_gbEnableText type="bool">False + The quick brown fox jumps over the lazy dog + Format: t140, Max duration: 42300 ms + 1.0 + 1.0 + 300 + 0 + 0 + 5 + 1 + <_gbTosText type="bool">False + False + 1 + 0x20 + <_gbCustomTosText type="bool">False + 32 + + <_dict type="list"> + + tosValText + + + + _gbEnableText + + + + textClip + + + + customTosText + + + + textChpsMin + + + + textRedundancyLevel + + + + textChpsMax + + + + textBufferTime + + + + textDuration + + + + enableTextOWD + + + + _gbTosText + + + + enableText + + + + textPlayType + + + + _gbCustomTosText + + + + enableTosText + + + + textFormat + + + + textDurationUnit + + + + tosText + + + + + + + False + <_gbEnableT38 type="bool">False + <_gbEnableT38_2 type="bool">False + Ixia2Pages.tif + <_faxFormat type="str">Format: TIFF, Img size: 1660 x 2291, Size: 140402 bytes + 1 + 40000 + 0 + <_gbT38UdpEncapsulation type="bool">False + 102 + True + 0 + True + 5 + True + 0 + False + 0 + False + False + <_gbUdpOptions type="bool">False + True + 0 + True + 256 + False + 200 + + + <_dict type="list"> + + t38TranscodingMMR + + + + t38UdpEncapsulation + + + + useT38MaxBitrate + + + + t38RateMgmt + + + + t38TranscodingJBIG + + + + enableT38 + + + + t38TransportType + + + + _gbEnableT38_2 + + + + _gbEnableT38 + + + + t38Port + + + + t38FillBitRemoval + + + + faxVersion + + + + useT38FillBitRemoval + + + + useT38RateMgmt + + + + faxImage + + + + useT38MaxBufferSize + + + + errorRecoverySchema + + + + t38MaxDatagramSize + + + + t38MaxBufferSize + + + + _faxFormat + + + + t38PayloadType + + + + useT38MaxDatagramSize + + + + t38MaxBitrate + + + + useFaxVersion + + + + _gbUdpOptions + + + + _gbT38UdpEncapsulation + + + + imagesList + + + + useErrorRecoverySchema + + + + + + + 5551[000-] + 0 + 5 + 0 + 0 + 1 + 0 + 1 + 2 + 2 + 0 + 1 + True + True + True + True + 3 + 1 + + <_dict type="list"> + + t30SendResolution + + + + sendCedBeforeDIS + + + + t30ReceiveR8x7 + + + + t30SendPageSize + + + + t30ReceiveR8x3 + + + + t30SendCoding + + + + t30ReceiveProtocol + + + + sendCNG + + + + t30SendProtocol + + + + t30ReceiveMSLT + + + + t30SendMSLT + + + + t30SendDataRate + + + + t30ReceivePageSize + + + + t30ReceiveModulations + + + + t30ReceiveR8x15 + + + + t30StationId + + + + t30ReceiveCoding + + + + t30Receive200x200 + + + + + + + False + <_gbEnableMSRP type="bool">False + 2855 + 0 + alice[00-99].example.com + + 0 + False + 10.10.10.1 + True + 2855 + False + 0 + 0x00 + 0 + True + True + False + 30000 + 60000 + 30000 + 70000 + + + 0 + + False + + + <_dict type="list"> + + customMSRPTos + + + + filesCount + + + + firstRelayIpEnabled + + + + automaticMSRPAuth + + + + msrpSendEmptyMsg + + + + msrpTransactionTimeout + + + + msrpInterChunkTimeout + + + + tosMSRPVal + + + + enableMSRP + + + + localDomain + + + + relaysCount + + + + domainType + + + + firstRelayIp + + + + advSettings + + + + files + + + + msrpFirstChunkTimeout + + + + firstRelayIsIPv4 + + + + msrpPort + + + + _gbMSRPCustomTos + + + + msrpSessionTimeout + + + + _gbEnableMSRP + + + + enableMSRPTos + + + + msrpReuseTCP + + + + msrpGuiFiles + + + + msrpTos + + + + relays + + + + msrpRelayPort + + + + + + <_tempFile ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_FileRecord"> + 0 + <_typeStr type="str"> + + + + + <_bFileSize type="int">20 + <_msrpSizeCombo type="int">2 + 0 + 0 + application/octet-stream + + + <_tempAdvSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_MSRPAdvancedSettings"> + False + + + + + + + + + 0 + 201004[0000-] + + <_PN1 type="bool">False + <_bTelGrp type="bool">False + False + <_bkTelURIparams type="str">phone-context=example.com + + <_dict type="list"> + + phoneBookList + + + + filePath + + + + pattern + + + + ckTelURIBook + + + + _bkTelURIparams + + + + _PN1 + + + + _bTelGrp + + + + fromFile + + + + + + + + + + + + + <_gbStep1 type="bool">False + + + ANY + + + INVITE + + + ACK + + + BYE + + + CANCEL + + + OPTIONS + + + REGISTER + + + NOTIFY + + + SUBSCRIBE + + + REFER + + + MESSAGE + + + PRACK + + + INFO + + + UPDATE + + + + <_gbStep2 type="bool">False + 2 + 1 + + + To + + + From + + + Contact + + + Also + + + Authorization + + + Call-ID + + + Content-Length + + + Content-Type + + + CSeq + + + Event + + + Proxy-Authenticate + + + Proxy-Authorization + + + RAck + + + Record-Route + + + Refer-To + + + Referred-By + + + Replaces + + + Route + + + RSeq + + + Subscription-State + + + Via + + + WWW-Authenticate + + + To + t + 1 + 1 + 3 + False + + False + False + <_gbStep3 type="bool">False + 0 + False + < + 1 + False + > + last + 1 + last + <_gbStep4 type="bool">False + 0 + + + + 0 + + + + C:\Users\asordo\Documents\__Customers\Orange\OPNFV2_Lannion + + + + None + False + <_useTPb type="int">0 + <_tBp type="str"><None> + <_tBpPrv type="str"> + <_tPhone type="str">150[00000000-] + 0 + 150[00000000-] + <_tTelGrp type="bool">False + <_ckTTelURIParams type="bool">False + <_tTelURIparams type="str">phone-context=example.com + + + <_dict type="list"> + + _tBpPrv + + + + overridePhoneNo + + + + _tTelGrp + + + + _useTPb + + + + tPhone + + + + transTelPar + + + + _tPhone + + + + _ckTTelURIParams + + + + symTransferStr + + + + tPhoneType + + + + _tTelURIparams + + + + _tBp + + + + + + + 0 + mysipdomain.ixiacom.com + <_useEPb type="int">0 + <_eBp type="str"><None> + <_eBpPrv type="str"> + <_ePhone type="str">160[00000000-] + 0 + 160[00000000-] + <_eTelGrp type="bool">False + <_ckETelURI type="bool">False + <_eTelURIparams type="str">phone-context=example.com + + + <_dict type="list"> + + _useEPb + + + + _eBpPrv + + + + domainName + + + + _eBp + + + + _ePhone + + + + _eTelGrp + + + + ePhoneType + + + + _eTelURIparams + + + + useDomainName + + + + editTelPar + + + + ePhone + + + + _ckETelURI + + + + + + + + <_useSPb type="int">0 + <_sBp type="str"><None> + <_sBpPrv type="str"> + <_sPhone type="str">{{pncalled}} + 0 + {{pncalled}} + <_sTelGrp type="bool">False + <_ckSTelURIParams type="bool">False + <_sTelURIparams type="str">phone-context=example.com + + <_sTelGrp1 type="bool">False + <_dTelGrp1 type="bool">False + None + False + <_useDPb type="int">0 + <_dBp type="str"><None> + <_dBpPrv type="str"> + <_dPhone type="str">170[00000000-] + 0 + 170[00000000-] + <_dTelGrp type="bool">False + <_ckDTelURIParams type="bool">False + <_dTelURIparams type="str">phone-context=example.com + + False + False + False + sos + + + sos + + + sos.ambulance + + + sos.fire + + + sos.police + + + + <_dict type="list"> + + _useSPb + + + + _dTelGrp1 + + + + sourceIPs + + + + enableEmergencyCalls + + + + _sPhone + + + + _dBpPrv + + + + destPhoneType + + + + destTelPar + + + + useAnonymous + + + + _dTelGrp + + + + symDestStr + + + + _gbEmergencyDest + + + + _sBp + + + + makeEmergencyReg + + + + destPhone + + + + srcTelPar + + + + _gbEmergencySource + + + + _ckSTelURIParams + + + + _dTelURIparams + + + + _dBp + + + + ovrDestPhone + + + + _sTelGrp1 + + + + emergencyServiceList + + + + _dPhone + + + + srcPhone + + + + _gbEmergency + + + + _sTelURIparams + + + + _UseSrv1 + + + + srcPhoneType + + + + _sBpPrv + + + + _sTelGrp + + + + emergencyService + + + + _useDPb + + + + _ckDTelURIParams + + + + + + + True + {{sipportcalled}} + False + False + + {{pncalled}}@{{domainname}} + {{authpassword}} + <None> + 0 + 0 + 0 + ixia + C:\Users\asordo\Documents\__Customers\Orange\OPNFV2_Lannion + ixia + 0 + 0 + 0 + False + <Default> + 00000000000000000000000000000000 + 00000000000000000000000000000001 + 00000000000000000000000000000002 + 00000000000000000000000000000004 + 00000000000000000000000000000008 + 64 + 0 + 32 + 64 + 96 + False + 0 + 0x00 + 0 + False + 0 + True + {{iplistims}} + 5060 + {{domainname}} + False + False + True + True + False + IP:PORT + False + True + {{domainname}} + 2048 + False + False + False + + + False + ipsec-3gpp + 0 + hmac-sha-1-96 + 0 + esp + 0 + trans + 0 + aes-cbc + 255 + [3000-4000] + 4060 + + <_dict type="list"> + + protocol + + + + encrypt_algorithmStr + + + + algorithm + + + + modeStr + + + + protocolStr + + + + mechanism + + + + algorithmStr + + + + mode + + + + port_s + + + + port_c + + + + spi_start_idx + + + + encrypt_algorithm + + + + checked + + + + + + + False + False + 60 + False + False + 0 + True + False + <_enableAutoHeaders type="bool">False + <_btnAutoHeaders type="bool">False + False + False + + <_dict type="list"> + + _gbSrvSettings + + + + akaSharedSecretType + + + + _btnAutoHeaders + + + + tcpWriteImmediate + + + + ovrDest + + + + _enableAutoHeaders + + + + enableSIP + + + + fqdn + + + + akaSharedSecretSource + + + + milenageConfCombo + + + + milenage_c3 + + + + milenage_c2 + + + + milenage_c5 + + + + milenage_c4 + + + + akaConfCombo + + + + _UseSrv1 + + + + akaOperatorVariantType + + + + overrideRegistrar + + + + port + + + + milenage_r2 + + + + registrarSrv + + + + milenage_r4 + + + + milenage_r5 + + + + _gbRetransmissions + + + + milenage_r3 + + + + milenage_r1 + + + + tos + + + + user + + + + akaOperatorVariantSource + + + + telURISource + + + + useServer + + + + nUdpMaxSize + + + + retransmit1xx + + + + srvDomain + + + + _btnEditContact1 + + + + telURIDest + + + + ovrTimeout + + + + enablePeriodicDNSQueries + + + + useIPSecDoubleSPIPatch + + + + securityMechanismValList + + + + skipDeleteDNSRecordsAtLoopEnd + + + + overrideRegistrarAddress + + + + enableTos + + + + srvAddr + + + + ovrDestHostPort + + + + DNSTimeoutValue + + + + tosVal + + + + passwd + + + + T2 + + + + autoRegister + + + + T1 + + + + enableSigComp + + + + akaOperatorVariantSequence + + + + enableVoLTE + + + + retransmitACK + + + + akaSharedSecretSequence + + + + volte_grbox + + + + customSipTos + + + + dontEndMediaOnBye + + + + realm + + + + akaExportComplete + + + + mediaBearerType + + + + _gbPeriodicDNSQuery + + + + enableRetransmissions + + + + milenage_c1 + + + + akaUseOPasOPC + + + + _ovrDest1 + + + + outboundProxy + + + + ignoreRetransmissions + + + + closeTCPConnectionsOnRampdown + + + + ovrContact + + + + akaAbsolutePath + + + + serverAddresses + + + + enableCCDedicatedBearer + + + + akaConfComboSelIndex + + + + _gbCustomTos + + + + ovrTrans + + + + useDnsSrv + + + + ovrTransOption + + + + _enableSIP2 + + + + _enableSIP1 + + + + srvPort + + + + + + + True + + + True + REGISTER + 0 + Expires Header(s) + 3600 + + <_dict type="list"> + + message + + + + msgPart + + + + checked + + + + value + + + + msgPartStr + + + + + + + True + INVITE + 2 + Session-Expire(s) + 90 + + <_dict type="list"> + + message + + + + msgPart + + + + checked + + + + value + + + + msgPartStr + + + + + + + True + UPDATE + 2 + Session-Expire(s) + 90 + + <_dict type="list"> + + message + + + + msgPart + + + + checked + + + + value + + + + msgPartStr + + + + + + + 1 + 3000 + 50 + 32 + False + 500 + 4000 + True + True + True + False + False + 0 + False + False + False + 150 + False + False + False + + 0 + True + + <_dict type="list"> + + btnRefreshProcList + + + + autoEndCall + + + + ignoreRetransmissions + + + + minInterReregister + + + + autoEndCall2 + + + + enableTimers + + + + refreshInSecs + + + + retransmit1xx + + + + _gbEnableTimers + + + + ovrTimeout + + + + sessionRefreshType + + + + auto4xx + + + + retransmitACK + + + + procListChanged + + + + T2 + + + + autoProcedureList + + + + _gbAutoPRACK + + + + T1 + + + + refreshAfterPercent + + + + enableAutoPRACK + + + + stopActiveRetr + + + + enableRetransmissions + + + + rprTimeUntilNextRPR + + + + rprScenarioHasPRACK + + + + expirationValList + + + + refreshAfterSecs + + + + autoProceduresCount + + + + auto4xxAbort + + + + rprSendNegotiatedSDP + + + + + + + False + <_useCloud1 type="bool">False + <None> + + False + + False + <_ovrCloudRules1 type="bool">False + + <_dict type="list"> + + _gbVirtualIPs + + + + useCloud + + + + ovrCloudRules + + + + _ovrCloudRules1 + + + + cloud + + + + enableVirtualIPs + + + + virtualIPTable + + + + serverRules + + + + _useCloud1 + + + + + + + False + False + False + False + <_enableTLS1 type="bool">False + <_enableTLS2 type="bool">False + <_enableTLS3 type="bool">False + 5061 + 3 + False + <_tlsSessionRefresh type="bool">False + 3600 + 0 + False + <_tlsReuseConnection type="bool">False + False + False + <_gbTlsMutual type="bool">False + + + True + ECDHE-ECDSA-AES128-GCM-SHA256 + + <_dict type="list"> + + enabled + + + + name + + + + + + + True + ECDHE-ECDSA-AES256-GCM-SHA384 + + <_dict type="list"> + + enabled + + + + name + + + + + + + True + ECDHE-RSA-AES128-GCM-SHA256 + + <_dict type="list"> + + enabled + + + + name + + + + + + + True + ECDHE-ECDSA-AES256-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + True + ECDHE-ECDSA-AES128-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + True + ECDHE-RSA-AES128-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + True + AES128-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + True + AES256-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + ECDHE-ECDSA-AES256-SHA384 + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + ECDHE-ECDSA-AES128-SHA256 + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + ECDHE-RSA-AES256-GCM-SHA384 + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + ECDHE-RSA-AES128-SHA256 + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + ECDHE-RSA-AES256-SHA384 + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + DES-CBC-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + DES-CBC3-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + EXP-DES-CBC-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + EXP-RC2-CBC-MD5 + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + EXP-RC4-MD5 + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + EXP1024-DES-CBC-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + EXP1024-RC4-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + IDEA-CBC-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + NULL-MD5 + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + NULL-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + RC4-MD5 + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + RC4-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + C:\Program Files (x86)\Ixia\IxLoad\8.20-EA\aptixia\data\SSL_Certificates + Unsecured_RSA_key_1024.pem + Unsecured_RSA_cert_1024.pem + 0 + 0 + + 0 + 0 + True + False + + <_dict type="list"> + + tlsCertType + + + + tlsPassword + + + + tlsPort + + + + ignoreSubjectAltName + + + + tlsPrivateKeyCertificate + + + + tlsTransportType + + + + enableTLS_HTTP + + + + tlsCyphers + + + + tlsProtocol + + + + tlsKeyType + + + + _tlsSessionRefresh + + + + tlsCertificatesPath + + + + tlsEnableTcpKeepAlive + + + + _gbTlsMutual + + + + tlsPublicKeyCertificate + + + + _enableCert + + + + enableTLS + + + + tlsAuthClient + + + + tlsMutual + + + + _enableTLS4 + + + + _enableTLS1 + + + + _enableTLS2 + + + + _enableTLS3 + + + + enableDTLS + + + + enableTLS_MSRP + + + + tlsReuseConnection + + + + tlsRefreshInterval + + + + tlsSessionRefresh + + + + tlsDisableUdpAndTcp + + + + sipScheme + + + + _tlsReuseConnection + + + + + + + 200 + 30000 + False + + + 6 + 100 + 30000 + + + + + + + + + + + + + 0 + False + <_gbHardcodedForDemo type="bool">False + <_gbStunSettings type="bool">False + False + 127.0.0.1 + 3478 + False + False + <_gbSRVCCSettings type="bool">False + False + + False + False + False + <_gbPCO type="bool">False + + False + False + + + + <_dict type="list"> + + _gbIceSettings + + + + _gbPCO + + + + VOIP_IPAddress4 + + + + VOIP_IPAddress1 + + + + VOIP_IPAddress0 + + + + VOIP_IPAddress3 + + + + VOIP_IPAddress2 + + + + bUseIce + + + + mobilityPath + + + + VOIP_Var0 + + + + _gbStunSettings + + + + PCO_List + + + + _gbSRVCCSettings + + + + absolutePathForCsvWithVariables + + + + bIceLite + + + + PCO_Groupbox + + + + bUseHardcoded + + + + bUseSRVCC + + + + useBHCA + + + + ipPreference + + + + btnBrowseForVariableCsv + + + + bUsePCO + + + + stunPort + + + + bUseStun + + + + stunAddr + + + + ddgGroupboxSRVCC + + + + _gbHardcodedForDemo + + + + pathForCsvWithVariables + + + + DodPathForCsvWithVariables + + + + _varCsvGroupBox + + + + VOIP_Var1 + + + + loadVariablesFromCsv + + + + VOIP_Var3 + + + + VOIP_Var2 + + + + VOIP_Var4 + + + + + + + False + sc.home1.net + False + phone-context=example + 61814712345 + 0 + 0 + False + False + False + False + + False + 160[00000000-] + <None> + + 0 + 0 + False + False + False + False + + False + 160[00000000-] + <None> + + 0 + 0 + + False + False + None + 0 + + + 0 + False + False + False + + <_dict type="list"> + + smOrigNumberingPlan + + + + smsFiles + + + + enableSMS + + + + enableSMOrigReplyPath + + + + smsFilesCount + + + + btnSMRecipEdit + + + + enableSMOrigReqStatusReport + + + + grBoxSMRecipient + + + + enableSMRecipOverrideSrc + + + + grBoxSMOriginator + + + + smsAddressOriginator + + + + telURI + + + + depActivities + + + + pcpuCommonPath + + + + smOrigTypeOfNo + + + + smRecipTypeOfNo + + + + requestURI + + + + smsFilesBackup + + + + smsAddressRecipient + + + + enableTelURI + + + + useFilesFromActivity + + + + smRecipNumberingPlan + + + + smscPhoneNo + + + + smsImportFilesActivity + + + + enableSMRecipReplyPath + + + + btnSMOrigEdit + + + + smscNumberingPlan + + + + duringLoadFromBackup + + + + enableSMRecipReqStatusReport + + + + grBoxSMServiceCenter + + + + verifyUserInfo + + + + smscTypeOfNo + + + + enableSMOrigOverrideDest + + + + smsActivityForFiles + + + + + + + 0 + + + + + + 0 + 0 + 0 + + + + <_dict type="list"> + + contentViewShow + + + + ixSmsFilePath + + + + contentViewEdit + + + + segmentOrder + + + + comboRefNo + + + + loadedFileType + + + + btnSmsLoadFiles + + + + ixSmsFileName + + + + btnSmsSaveAs + + + + fileName + + + + segmentNo + + + + totalTpudSize + + + + comboCoding + + + + + + + 0 + <None> + + 160[00000000-] + 0 + 160[00000000-] + False + + + + <_dict type="list"> + + userPattern + + + + phoneBookPreview + + + + ePhoneType + + + + ePhone + + + + fakeEnableTelURI + + + + comboPhoneBook + + + + fakeTelToPort + + + + fakeTelURI + + + + radioBtnPhoneNo + + + + + + + 0 + <None> + + 160[00000000-] + 0 + 160[00000000-] + False + + + + <_dict type="list"> + + userPattern + + + + phoneBookPreview + + + + ePhoneType + + + + ePhone + + + + fakeEnableTelURI + + + + comboPhoneBook + + + + fakeTelToPort + + + + fakeTelURI + + + + radioBtnPhoneNo + + + + + + + True + + + + + INVITE + + + ACK + + + BYE + + + CANCEL + + + OPTIONS + + + REGISTER + + + NOTIFY + + + SUBSCRIBE + + + REFER + + + MESSAGE + + + PRACK + + + INFO + + + UPDATE + + + 100 (Trying) + + + 180 (Ringing) + + + 181 (Call Is Being Forwarded) + + + 182 (Queued) + + + 183 (Session Progress) + + + 200 (OK) + + + 202 (Accepted) + + + 300 (Multiple Choices) + + + 301 (Moved Permanently) + + + 302 (Moved Temporarily) + + + 305 (Use Proxy) + + + 380 (Alternative Service) + + + 400 (Bad Request) + + + 401 (Unauthorized) + + + 402 (Payment Required) + + + 403 (Forbidden) + + + 404 (Not Found) + + + 405 (Method Not Allowed) + + + 406 (Not Acceptable) + + + 407 (Proxy Authentication Required) + + + 408 (Request Timeout) + + + 410 (Gone) + + + 413 (Request Entity Too Large) + + + 414 (Request-URI Too Large) + + + 415 (Unsupported Media Type) + + + 416 (Unsupported URI Scheme) + + + 420 (Bad Extension) + + + 421 (Extension Required) + + + 423 (Interval Too Brief) + + + 480 (Temporarily not available) + + + 481 (Call Leg/Transaction Does Not Exist) + + + 482 (Loop Detected) + + + 483 (Too Many Hops) + + + 484 (Address Incomplete) + + + 485 (Ambiguous) + + + 486 (Busy Here) + + + 487 (Request Terminated) + + + 488 (Not Acceptable Here) + + + 491 (Request Pending) + + + 493 (Undecipherable) + + + 500 (Internal Server Error) + + + 501 (Not Implemented) + + + 502 (Bad Gateway) + + + 503 (Service Unavailable) + + + 504 (Server Time-out) + + + 505 (SIP Version not supported) + + + 513 (Message Too Large) + + + 600 (Busy Everywhere) + + + 603 (Decline) + + + 604 (Does not exist anywhere) + + + 606 (Not Acceptable) + + + + + + Request-Uri + + + Via + + + From + + + To + + + Call-ID + + + CSeq + + + Contact + + + Content-Length + + + Route + + + Record-Route + + + Authorization + + + Proxy-Authorization + + + Referred-By + + + Replaces + + + Event + + + RAck + + + RSeq + + + Refer-To + + + Subscription-State + + + WWW-Authenticate + + + Also + + + To + + False + + + True + + + False + + + + + + False + 40000 + 60000 + 1 + False + False + 10 + False + False + + <_dict type="list"> + + tcpIdlePeriod + + + + tcpEndPortLabel + + + + tcpIdlePeriodLabel + + + + donotCloseTCPInsideCallEnable + + + + tcpPortStepLabel + + + + tcpLocalPortStep + + + + tcpLocalPortEnd + + + + tcpStartPortLabel + + + + tcpLocalPortStart + + + + closeIdleTcpConnectionsEnable + + + + recordingServerEnable + + + + overrideTCPLocalPort + + + + closeNonsecureTcpConnectionsEnable + + + + + + + 1 + <_apiUniqueId type="int">16522 + 43 + 3 + + + <_dict type="list"/> + + VoIP + + + + + + None + VM2 + Both + none + 0 + Default + False + + Ixia Virtual Load Module + + + + 1 + 2 + 1 + False + Ixia Virtual Load Module + + None + + False;8192 + + None + + + + + + <_smRangeObjectId type="str">c69dae97-f1c2-4505-aedb-3f9ca3f4d02a + Network Range IP-R2 in VM2 ({{ipcard2}}+1) + + DistGroup1 + consecutiveIps + 0 + <_apiUniqueId type="int">16512 + <_networkRangeList ver="[0, [3, [0, [0, [0], [0]], [0]]]]" type="ixWeakrefSequenceContainer" itemtype="ixBasicNetworkRange"> + + + <_rangeGroupObjectId type="str">de9d629b-e0dc-41f5-99cb-5aa8a808ceee + <_smPluginObjectId type="str">e53ae54e-ab21-4997-b532-e9bd58210050 + + False + + + None + None + + + + 0 + 0 + 1024 + 65535 + 0.0.0.0 + 255.255.0.0 + :: + FFFF:FFFF:FFFF:FFFF:FFFF:FFFF::0 + + 0 + + True + False + + + 0 + 30000 + + + + + + False + True + True + False + False + 0 + 1024 + False + 0 + 1024 + 60 + 75 + 9 + 7200 + 5 + 5 + 5 + 4096 + 4096 + True + False + 200 + 120000 + + + + + False + False + False + False + False + False + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 0 + 1 + any + any + any + False + FragmentationPercent + 50 + 1000 + 1 + 1 + <_seed type="int">1 + + <_portGroupId type="str">b1fbd381-b769-4ec1-8715-299508ecb458 + <_smExternalLinks ver="[0, [1, [0, [0]]]]" type="_smExternalLinkersMap"> + + + 1 + + + + + VoIP Peer + CALLED + True + + Timeline2 + 2014 + 2014 + 1 + 0 + 0 + 4953 + 0 + {{activecalls}} + 1 + 1 + 20 + 0 + 1 + + + + Linear Segment 1 + 0 + 1 + 0.0 + 1.0 + 1 + 0 + + + Linear Segment 2 + 0 + 1 + 1.0 + 1.0 + {{testduration}} + 4 + + + 20 + + 5 + + + False + 1-5 + 0 + 10000 + 1 + 500 + 500 + 4000 + 80000 + 0 + 0 + 18 + 0 + 30000 + 16750 + 33500 + 1500 + 2000 + 100 + 40 + 0 + 0 + 800 + 2150 + 1500 + 2000 + 100 + 0 + 30000 + {{activecalls}} + 0 + 100 + + Peer + Both + 100.0 + concurrentConnections + {{activecalls}} + activeUsers + {{activecalls}} + SimulatedUserConstraint + {{activecalls}} + 100 + True + SimulatedUserConstraint + 100 + False + protocolSpecific + 1 + 0 + 1:1 + Consecutive + + 1 + <_apiUniqueId type="int">16585 + 58ff41761a9072107c63efca + <_objectiveValue type="int">{{activecalls}} + + 1.0 + + + + + + + + + + + False + <_apiUniqueId type="int">16521 + + None + + + <_apiUniqueId type="int">16509 + + <_dict type="list"> + + + + + + + <_dict type="list"> + + + + + + + <_dict type="list"> + + SIP + + SIP + True + + + + RTP + + RTP + True + + + + T38 + + T38 + True + + + + MSRP + + MSRP + True + + + + + + + + + + + + + + True + 1 + 0 + 0 + 20 + 60 + 1 + mixedMap + n/a + -1 + -1 + -1 + -1 + 0 + 10 + n/a + -1 + 0 + 1 + <_apiUniqueId type="int">16508 + True + + <_portOperationModesAllowed type="dict"> + + 0 + True + + + 1 + True + + + 2 + False + + + 3 + True + + + 4 + True + + + 6 + True + + + 8 + True + + + <_tcpAccelerationAllowed type="dict"> + + 0 + True + + + 1 + True + + + + CALLED + None + 1 + + + 100.0 + 39 + + 4.10 + + + -2 + START + Start + + + Output1 + 0 + 3 + 0 + 2 + + + + + -3 + STOP + Stop + + + + 3 + Procedure + SIP MakeCall (#1) + + + OK + 0 + 16 + 1 + 4 + + + Error + 1 + -3 + 2 + 1 + + + + + 10 + Procedure + SIP EndCall Initiate (#2) + + + OK + 0 + -3 + 1 + 1 + + + Error + 1 + -3 + 2 + 1 + + + + + 16 + CommandEx + Voice Session (#1) + + + OK + 0 + 10 + 1 + 3 + + + Error + 1 + 10 + 2 + 3 + + + RTPVoiceSession + + + + VoiceLink1 + 2 + + + 4 + 4 + + + + False + False + 600000 + False + False + 1 + False + 10 + + + False + 0 + False + True + 25 + False + False + 10 + 0 + 0 + + False + + + 0 + 0 + 1 + 1000 + 0 + -20 + 0 + 0 + 10 + 0 + 200 + 200 + -10 + 4000 + 2000 + 500 + 2000 + True + False + + + 15 + + + 25 + False + False + + + False + False + False + 0 + 1 + 10 + [00-10] + + + + 45638 + 3 + 1 + activeUsers + 1000 + 9223372036854775807 + 8 + False + + 32000 + False + False + False + False + + CALLING + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + {{sipportcalling}} + 0 + 1 + {{pncalling}} + 1 + 0 + 1 + 0 + + 1 + 1 + 0 + 1 + [10000-65535,4] + 40000 + 2855 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + False + False + False + False + 5061 + True + 1 + 2 + 1 + False + False + 0 + 1 + aptixia-T.03440c56.4e1a.4def.8406.ec64db91d4c1-L2EthernetPlugin-166a11b6.4d30.40ea.b9e1.ac4fb44f112b-161.105.231.12;1;1default + + + + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + + 0 + 0 + + 1 + 0 + 0 + 0 + + 0 + 0 + 0 + 0 + + + 2855 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + False + False + False + False + + False + 1 + 2 + 1 + False + False + 0 + 0 + + + False + + + 5060 + + + + + + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + 0 + 0 + + 0 + 0 + 0 + 0 + + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + False + False + False + False + + False + 0 + 1 + 1 + False + False + 0 + 0 + + + False + False + + 5060 + + + + + + 0 + + + + + + + + + .\SIPCall.tst + 0 + 17 + 68 + 6 + 0 + + + 0 + 1 + 0 + 0 + True + False + 1 + 0 + 1 + 0 + 1 + 1 + True + 0 + 1 + 1 + 1 + True + False + True + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + False + 9 + 1 + 1 + 32 + <_gbDebugLogs type="bool">False + False + + <_dict type="list"> + + _ipRule1 + + + + dl_S_ADV + + + + loopMidDelay + + + + dl_T_IO + + + + dl_T_INFO + + + + dl_S_SEND + + + + _rtpIpRule1 + + + + _estimatedBacklog + + + + loopPreDelay + + + + dl_S_VRB + + + + dl_TG_ADV + + + + log_filesize + + + + rtp_log_in_file + + + + dl_T_VRB + + + + aliases + + + + dl_Q_ADV + + + + multipleUsersPerIO + + + + log_level + + + + rtpIpRule + + + + dl_1 + + + + dl_3 + + + + dl_2 + + + + rampdownSleep + + + + _portRule1 + + + + dl_S_SER + + + + dl_R_VRB + + + + dl_L_ADV + + + + dl_Q_VRB + + + + portRuleCh + + + + dl_S_INFO + + + + rtpPortRule + + + + dl_M_IO + + + + dl_EE_DD + + + + rtpIpRuleCh + + + + dl_S_FSM + + + + loopMode + + + + gracefulRampDown + + + + dl_FLOW + + + + dl_BUG + + + + dl_S_SUA + + + + ipRule + + + + ipRuleCh + + + + phoneRule + + + + _rtpPortRule1 + + + + dl_R_PAR + + + + loopCount + + + + dl_S_WAIT + + + + dl_SDP_DD + + + + dl_TRACE + + + + _gbDebugLogs + + + + rtpPortRuleCh + + + + dl_TG_VRB + + + + portRule + + + + dl_L_INFO + + + + dl_EE_VRB + + + + dl_R_DD + + + + dl_T_ADV + + + + ccExportProfile + + + + log_in_memory + + + + dl_L_VRB + + + + + + + False + 1-5 + 0 + 10000 + 1 + 500 + 500 + 4000 + 1 + 0 + 0 + 18 + 0 + 30000 + 16750 + 33500 + 1500 + 2000 + 500 + 40 + 0 + 0 + 800 + 2150 + 1500 + 2000 + 500 + 0 + 30000 + {{activecalls}} + 0 + {{activecalls}} + + + 1 + + + 0 + 35 + 0 + + + Default.cap + False + False + 10000 + 0x8078C5D3 + + + + + + 0 + 0 + 160 + + + 8 + 8 + 160 + + + 2 + <_gbVideoCodecs type="bool">False + 96 + <_gbDataCodecs type="bool">False + + + 100 + + + 101 + + + -1 + + + [10000-65535,4] + False + False + False + False + False + False + False + False + False + False + False + False + False + AS:48 + False + 800 + False + 800 + False + AS:384 + False + 6400 + False + 6400 + False + AS:48 + False + 800 + False + 800 + + <_dict type="list"> + + videoRR_value + + + + _gbVideoSDPParams + + + + textRS_value + + + + jitMs + + + + _gbAudioSDPParams + + + + ixnamSupported + + + + dedicatedCoreRange + + + + enableRTP + + + + rtpTosVal + + + + channelTypeQoV + + + + enableMediaSDPParams + + + + _gbTextSDPParams + + + + activityIdQoV + + + + rtpPort + + + + audioRS_option + + + + useJitComp + + + + dedicatedCoreRangeLength + + + + audioB_option + + + + audioB_value + + + + portIPsQoV + + + + audioRS_value + + + + enableHwAcc + + + + chEnableHwAcc + + + + channelsQoVPerZionPort + + + + videoRR_option + + + + rtpTos + + + + enableRTCPMux + + + + textRR_option + + + + silenceMode + + + + _gbMediaSDPParams + + + + textB_option + + + + enableQoV + + + + jitCMs + + + + valueQoV + + + + enableRTCP + + + + maxMosStreams + + + + enableMDI + + + + enableIxStack + + + + enableOWD + + + + unitsQoV + + + + serviceEnabledQoV + + + + chDisableHwAcc + + + + customTosGroupBox + + + + audioRR_option + + + + enablePerStream + + + + limitMos + + + + useMos + + + + textRR_value + + + + customTos + + + + videoB_value + + + + mosInterval + + + + enableAdvStatCalc + + + + useJitter + + + + useSilence + + + + metricsQoV + + + + videoRS_option + + + + videoRS_value + + + + jitCMaxDrop + + + + audioRR_value + + + + textB_value + + + + enableTosRtp + + + + videoB_option + + + + activityNameQoV + + + + textRS_option + + + + enableNBExec + + + + + + + False + 0 + False + False + IxLoad + 2000 + 2000 + + <_dict type="list"> + + rtcpSDESTool + + + + rtcpSenderTimer + + + + rtcpCNAMEType + + + + hasSDESTool + + + + rtcpReceiverTimer + + + + rtcpIgnoreSSRC + + + + hasSDESName + + + + enableRTCPMux2 + + + + + + + False + <_gbEnableAudio type="bool">False + False + False + <_JB1 type="bool">False + 20 + False + 1000 + 7 + rtp_esmad-asordo-l_2170 + False + False + 1 + False + 1 + False + 0x20 + 32 + <_COV1 type="bool">False + False + 5 + + 0 + False + <_gbEnableQoV type="bool">False + False + + + 0 + 100 + 0 + 0 + 0 + 0 + English(US) + + 0 + False + <_gbEnableQoV type="bool">False + False + + + 0 + 100 + 0 + 0 + 0 + 0 + English(US) + US_042.wav + <_audioFormat type="str">Format: PCM, Duration: 32785 ms, Size: 524556 bytes + -20 + <_gbOutputLevel type="bool">False + 0 + 10 + 1 + + <_dict type="list"> + + _gbEnableQoV + + + + channelTypeQoV + + + + pesqPolqa + + + + enablePTT + + + + enableP56 + + + + qovAnalize + + + + channelsQoVPerZionPort + + + + _COV1 + + + + useTelchemy + + + + activityIdQoV + + + + rtpTosVal + + + + useJitComp + + + + audioDuration + + + + _JB1 + + + + enableAudio + + + + enableTosRtp + + + + portIPsQoV + + + + _gbQoVMetrics + + + + dodName + + + + jitMs + + + + _gbASRLanguage + + + + rtpTos + + + + radioBtnQoVASR + + + + silenceMode + + + + playTypeAudio + + + + useQoV + + + + activityNameQoV + + + + enableQoV + + + + jitCMs + + + + valueQoV + + + + _gbOutputLevel + + + + unitsQoV + + + + serviceEnabledQoV + + + + audioClip + + + + languageASR + + + + customTosGroupBox + + + + audioDurationUnit + + + + useMos + + + + customTos + + + + qovSettings + + + + useJitter + + + + useSilence + + + + metricsQoV + + + + jitCMaxDrop + + + + channelsQoV + + + + enableAudioOWD + + + + _audioFormat + + + + _gbEnableAudio + + + + outputLevel + + + + + + + 0 + False + False + False + <_gbBtnTosBit7_0 type="bool">False + <_gbBtnTosBit7_1 type="bool">False + <_gbBtnTosBit6_0 type="bool">False + <_gbBtnTosBit6_1 type="bool">False + <_gbBtnTosBit5_0 type="bool">False + <_gbBtnTosBit5_1 type="bool">False + <_gbBtnTosBit4_0 type="bool">False + <_gbBtnTosBit4_1 type="bool">False + <_gbBtnTosBit3_0 type="bool">False + <_gbBtnTosBit3_1 type="bool">False + <_gbBtnTosBit2_0 type="bool">False + <_gbBtnTosBit2_1 type="bool">False + <_gbDisabledBtns type="bool">False + + + False + False + False + False + False + False + False + False + False + False + False + False + <_masterKeySelection type="int">0 + + + <_enableSRTP type="bool">False + <_useStaticKey type="bool">False + <_singleMasterKeyGrp type="bool">False + <_multipleMasterKeysGrp type="bool">False + + <_dict type="list"> + + bEnableSRTP + + + + _singleMasterKeyGrp + + + + bDisableSRTPEncryption + + + + bDisableSRTPAuthentication + + + + bDisableValidations + + + + _useStaticKey + + + + bEnablePreencryption + + + + staticSingleKeySalt + + + + _enableSRTP + + + + bStaticMasterKeySalt + + + + staticKeyFile + + + + bDisableMasterSalt + + + + _multipleMasterKeysGrp + + + + bAllowOnlySecureStreams + + + + bDisableSRTCPEncryption + + + + bEnableVideoSRTP + + + + bIncludeMKI + + + + bEnableTextSRTP + + + + _masterKeySelection + + + + + + + + 0 + 0 + 0 + 0 + 0 + 66 + 0 + 1 + + + False + 0 + False + 0 + False + 0 + False + 0 + False + 0 + False + 0 + False + 0 + + + False + False + 1 + <_gbEnableVideo type="bool">False + Fire_avc.mp4 + <_videoFormat type="str">Codec: H264, Duration: 12800 ms, Size: 2012176 bytes, Bitrate: 1225 kbps + 0 + 5 + 1 + False + <_gbUseConference type="bool">False + 0 + 1 + 1 + 1 + 1 + False + <_gbUseTelepresence type="bool">False + + 1 + 1 + 1 + False + False + <_gbTipMoreClips type="int">0 + Fire_avc.mp4 + 0 + 1 + 1 + 1 + 1 + <_gbTipPresentation type="bool">False + False + Fire_avc.mp4 + US_042.wav + 1 + 1 + 1 + 1 + 0 + False + <_gbTipLegacy type="int">0 + Fire_avc.mp4 + False + <_gbTipLegacyAudio type="int">0 + US_042.wav + False + False + False + False + False + False + False + False + False + False + True + + <_gbTosVideo type="bool">False + False + 1 + 0x20 + <_gbCustomTosVideo type="bool">False + 32 + False + False + False + 1 + True + False + <_gbH323AdvancedSettings type="bool">False + False + <_gbUseH323AdvancedSettings type="bool">False + + + False + + <_dict type="list"> + + hintTrackType + + + + videoMaxSessions + + + + useSingleNALUnit + + + + enableVideo + + + + useConference + + + + customTosVideo + + + + tipSettings + + + + playTypeVideo + + + + rotationScheme + + + + _gbUseH323AdvancedSettings + + + + isMP4 + + + + confVideoDuration + + + + tosValVideo + + + + enablePACSI + + + + _videoFormat + + + + confDuration + + + + tosVideo + + + + _gbUseTelepresence + + + + enableVideoOWD + + + + enableTosVideo + + + + fmtp + + + + videoType + + + + confDurationUnit + + + + videoDurationUnit + + + + _gbUseConference + + + + _gbH323AdvancedSettings + + + + _gbTosVideo + + + + _gbCustomTosVideo + + + + ignoreHintTrack + + + + enableAcceptSSRCChanges + + + + videoDuration + + + + useH323AdvancedSettings + + + + videoClip + + + + confVideoDurationUnit + + + + rtpmap + + + + _gbEnableVideo + + + + btnTelepresence + + + + useMosVideo + + + + + + + 0 + <_gbRotationScheme type="int">0 + 0 + 0 + 0 + 0 + + <_dict type="list"> + + rotationScheme + + + + confDuration + + + + confVideoDurationUnit + + + + confDurationUnit + + + + _gbRotationScheme + + + + confVideoDuration + + + + + + + 0 + 0 + 0 + False + False + <_gbTipMoreClips type="int">0 + Fire_avc.mp4 + 0 + 0 + 0 + 0 + 0 + <_gbTipPresentation type="bool">False + False + Fire_avc.mp4 + US_042.wav + 0 + 0 + 0 + 0 + 0 + False + <_gbTipLegacy type="int">0 + Fire_avc.mp4 + False + <_gbTipLegacyAudio type="int">0 + US_042.wav + False + False + False + False + False + False + False + False + False + False + True + + <_dict type="list"> + + tipDuration + + + + tipRotationScheme + + + + tipLegacyMode + + + + _tipLegacyClip + + + + tipVideoClip + + + + tipVideoRefresh + + + + tipUsePresentationStream + + + + tipGDR + + + + tipStartAfterUnit + + + + tipArithmetingCoding + + + + _gbTipLegacyAudio + + + + tipConfDuration + + + + tipConfDurationUnit + + + + tipG722Legacy + + + + tipLegacyClipAudio + + + + tipLegacyClip + + + + tipMoreClips + + + + tipDurationUnit + + + + tipInbandSets + + + + tipSyntheticPayload + + + + _tipVideoClip2 + + + + tipAudioDurationUnit + + + + tipResolution + + + + _tipVideoClip + + + + _tipLegacyClipAudio + + + + tipAudioDuration + + + + tipLegacyModeAudio + + + + _gbTipPresentation + + + + tipHighProfile + + + + tipRtcpFeedback + + + + tipVideoClip2 + + + + _gbTipMoreClips + + + + tipVersion + + + + tipDinamicChannels + + + + tipEndpointType + + + + _gbTipLegacy + + + + tipLTRP + + + + tipStartAfter + + + + _tipAudioClip + + + + tipPresentationRotation + + + + tipAudioClip + + + + tipAudioActivityMetric + + + + tipUnrestrictedMedia + + + + + + + False + False + <_gbEnableText type="bool">False + The quick brown fox jumps over the lazy dog + Format: t140, Max duration: 42300 ms + 1.0 + 1.0 + 300 + 0 + 0 + 5 + 1 + <_gbTosText type="bool">False + False + 1 + 0x20 + <_gbCustomTosText type="bool">False + 32 + + <_dict type="list"> + + tosValText + + + + _gbEnableText + + + + textClip + + + + customTosText + + + + textChpsMin + + + + textRedundancyLevel + + + + textChpsMax + + + + textBufferTime + + + + textDuration + + + + enableTextOWD + + + + _gbTosText + + + + enableText + + + + textPlayType + + + + _gbCustomTosText + + + + enableTosText + + + + textFormat + + + + textDurationUnit + + + + tosText + + + + + + + False + <_gbEnableT38 type="bool">False + <_gbEnableT38_2 type="bool">False + Ixia2Pages.tif + <_faxFormat type="str">Format: TIFF, Img size: 1660 x 2291, Size: 140402 bytes + 1 + 40000 + 0 + <_gbT38UdpEncapsulation type="bool">False + 102 + True + 0 + True + 5 + True + 0 + False + 0 + False + False + <_gbUdpOptions type="bool">False + True + 0 + True + 256 + False + 200 + + + <_dict type="list"> + + t38TranscodingMMR + + + + t38UdpEncapsulation + + + + useT38MaxBitrate + + + + t38RateMgmt + + + + t38TranscodingJBIG + + + + enableT38 + + + + t38TransportType + + + + _gbEnableT38_2 + + + + _gbEnableT38 + + + + t38Port + + + + t38FillBitRemoval + + + + faxVersion + + + + useT38FillBitRemoval + + + + useT38RateMgmt + + + + faxImage + + + + useT38MaxBufferSize + + + + errorRecoverySchema + + + + t38MaxDatagramSize + + + + t38MaxBufferSize + + + + _faxFormat + + + + t38PayloadType + + + + useT38MaxDatagramSize + + + + t38MaxBitrate + + + + useFaxVersion + + + + _gbUdpOptions + + + + _gbT38UdpEncapsulation + + + + imagesList + + + + useErrorRecoverySchema + + + + + + + 5551[000-] + 0 + 5 + 0 + 0 + 1 + 0 + 1 + 2 + 2 + 0 + 1 + True + True + True + True + 3 + 1 + + <_dict type="list"> + + t30SendResolution + + + + sendCedBeforeDIS + + + + t30ReceiveR8x7 + + + + t30SendPageSize + + + + t30ReceiveR8x3 + + + + t30SendCoding + + + + t30ReceiveProtocol + + + + sendCNG + + + + t30SendProtocol + + + + t30ReceiveMSLT + + + + t30SendMSLT + + + + t30SendDataRate + + + + t30ReceivePageSize + + + + t30ReceiveModulations + + + + t30ReceiveR8x15 + + + + t30StationId + + + + t30ReceiveCoding + + + + t30Receive200x200 + + + + + + + False + <_gbEnableMSRP type="bool">False + 2855 + 0 + alice[00-99].example.com + + 0 + False + 10.10.10.1 + True + 2855 + False + 0 + 0x00 + 0 + True + True + False + 30000 + 60000 + 30000 + 70000 + + + 0 + + False + + + <_dict type="list"> + + customMSRPTos + + + + filesCount + + + + firstRelayIpEnabled + + + + automaticMSRPAuth + + + + msrpSendEmptyMsg + + + + msrpTransactionTimeout + + + + msrpInterChunkTimeout + + + + tosMSRPVal + + + + enableMSRP + + + + localDomain + + + + relaysCount + + + + domainType + + + + firstRelayIp + + + + advSettings + + + + files + + + + msrpFirstChunkTimeout + + + + firstRelayIsIPv4 + + + + msrpPort + + + + _gbMSRPCustomTos + + + + msrpSessionTimeout + + + + _gbEnableMSRP + + + + enableMSRPTos + + + + msrpReuseTCP + + + + msrpGuiFiles + + + + msrpTos + + + + relays + + + + msrpRelayPort + + + + + + <_tempFile ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_FileRecord"> + 0 + <_typeStr type="str"> + + + + + <_bFileSize type="int">20 + <_msrpSizeCombo type="int">2 + 0 + 0 + application/octet-stream + + + <_tempAdvSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_MSRPAdvancedSettings"> + False + + + + + + + + + 0 + 201004[0000-] + + <_PN1 type="bool">False + <_bTelGrp type="bool">False + False + <_bkTelURIparams type="str">phone-context=example.com + + <_dict type="list"> + + phoneBookList + + + + filePath + + + + pattern + + + + ckTelURIBook + + + + _bkTelURIparams + + + + _PN1 + + + + _bTelGrp + + + + fromFile + + + + + + + + + + + + + <_gbStep1 type="bool">False + + + ANY + + + INVITE + + + ACK + + + BYE + + + CANCEL + + + OPTIONS + + + REGISTER + + + NOTIFY + + + SUBSCRIBE + + + REFER + + + MESSAGE + + + PRACK + + + INFO + + + UPDATE + + + + <_gbStep2 type="bool">False + 2 + 1 + + + To + + + From + + + Contact + + + Also + + + Authorization + + + Call-ID + + + Content-Length + + + Content-Type + + + CSeq + + + Event + + + Proxy-Authenticate + + + Proxy-Authorization + + + RAck + + + Record-Route + + + Refer-To + + + Referred-By + + + Replaces + + + Route + + + RSeq + + + Subscription-State + + + Via + + + WWW-Authenticate + + + To + t + 1 + 1 + 3 + False + + False + False + <_gbStep3 type="bool">False + 0 + False + < + 1 + False + > + last + 1 + last + <_gbStep4 type="bool">False + 0 + + + + 0 + + + + C:\Users\asordo\Documents\__Customers\Orange\OPNFV2_Lannion + + + + None + False + <_useTPb type="int">0 + <_tBp type="str"><None> + <_tBpPrv type="str"> + <_tPhone type="str">150[00000000-] + 0 + 150[00000000-] + <_tTelGrp type="bool">False + <_ckTTelURIParams type="bool">False + <_tTelURIparams type="str">phone-context=example.com + + + <_dict type="list"> + + _tBpPrv + + + + overridePhoneNo + + + + _tTelGrp + + + + _useTPb + + + + tPhone + + + + transTelPar + + + + _tPhone + + + + _ckTTelURIParams + + + + symTransferStr + + + + tPhoneType + + + + _tTelURIparams + + + + _tBp + + + + + + + 0 + mysipdomain.ixiacom.com + <_useEPb type="int">0 + <_eBp type="str"><None> + <_eBpPrv type="str"> + <_ePhone type="str">160[00000000-] + 0 + 160[00000000-] + <_eTelGrp type="bool">False + <_ckETelURI type="bool">False + <_eTelURIparams type="str">phone-context=example.com + + + <_dict type="list"> + + _useEPb + + + + _eBpPrv + + + + domainName + + + + _eBp + + + + _ePhone + + + + _eTelGrp + + + + ePhoneType + + + + _eTelURIparams + + + + useDomainName + + + + editTelPar + + + + ePhone + + + + _ckETelURI + + + + + + + + <_useSPb type="int">0 + <_sBp type="str"><None> + <_sBpPrv type="str"> + <_sPhone type="str">{{pncalling}} + 0 + {{pncalling}} + <_sTelGrp type="bool">False + <_ckSTelURIParams type="bool">False + <_sTelURIparams type="str">phone-context=example.com + + <_sTelGrp1 type="bool">False + <_dTelGrp1 type="bool">False + VoIP2_CALLED:{{sipportcalled}} + True + <_useDPb type="int">0 + <_dBp type="str"><None> + <_dBpPrv type="str"> + <_dPhone type="str">{{pncalled}} + 0 + {{pncalled}} + <_dTelGrp type="bool">False + <_ckDTelURIParams type="bool">False + <_dTelURIparams type="str">phone-context=example.com + + False + False + False + sos + + + sos + + + sos.ambulance + + + sos.fire + + + sos.police + + + + <_dict type="list"> + + _useSPb + + + + _dTelGrp1 + + + + sourceIPs + + + + enableEmergencyCalls + + + + _sPhone + + + + _dBpPrv + + + + destPhoneType + + + + destTelPar + + + + useAnonymous + + + + _dTelGrp + + + + symDestStr + + + + _gbEmergencyDest + + + + _sBp + + + + makeEmergencyReg + + + + destPhone + + + + srcTelPar + + + + _gbEmergencySource + + + + _ckSTelURIParams + + + + _dTelURIparams + + + + _dBp + + + + ovrDestPhone + + + + _sTelGrp1 + + + + emergencyServiceList + + + + _dPhone + + + + srcPhone + + + + _gbEmergency + + + + _sTelURIparams + + + + _UseSrv1 + + + + srcPhoneType + + + + _sBpPrv + + + + _sTelGrp + + + + emergencyService + + + + _useDPb + + + + _ckDTelURIParams + + + + + + + True + {{sipportcalling}} + False + False + + {{pncalling}}@{{domainname}} + {{authpassword}} + <None> + 0 + 0 + 0 + ixia + C:\Users\asordo\Documents\__Customers\Orange\OPNFV2_Lannion + ixia + 0 + 0 + 0 + False + <Default> + 00000000000000000000000000000000 + 00000000000000000000000000000001 + 00000000000000000000000000000002 + 00000000000000000000000000000004 + 00000000000000000000000000000008 + 64 + 0 + 32 + 64 + 96 + False + 0 + 0x00 + 0 + False + 0 + True + {{iplistims}} + 5060 + {{domainname}} + False + False + True + True + False + IP:PORT + False + True + {{domainname}} + 2048 + False + False + False + + + False + ipsec-3gpp + 0 + hmac-sha-1-96 + 0 + esp + 0 + trans + 0 + aes-cbc + 255 + [3000-4000] + 4060 + + <_dict type="list"> + + protocol + + + + encrypt_algorithmStr + + + + algorithm + + + + modeStr + + + + protocolStr + + + + mechanism + + + + algorithmStr + + + + mode + + + + port_s + + + + port_c + + + + spi_start_idx + + + + encrypt_algorithm + + + + checked + + + + + + + False + False + 60 + False + False + 0 + True + False + <_enableAutoHeaders type="bool">False + <_btnAutoHeaders type="bool">False + False + False + + <_dict type="list"> + + _gbSrvSettings + + + + akaSharedSecretType + + + + _btnAutoHeaders + + + + tcpWriteImmediate + + + + ovrDest + + + + _enableAutoHeaders + + + + enableSIP + + + + fqdn + + + + akaSharedSecretSource + + + + milenageConfCombo + + + + milenage_c3 + + + + milenage_c2 + + + + milenage_c5 + + + + milenage_c4 + + + + akaConfCombo + + + + _UseSrv1 + + + + akaOperatorVariantType + + + + overrideRegistrar + + + + port + + + + milenage_r2 + + + + registrarSrv + + + + milenage_r4 + + + + milenage_r5 + + + + _gbRetransmissions + + + + milenage_r3 + + + + milenage_r1 + + + + tos + + + + user + + + + akaOperatorVariantSource + + + + telURISource + + + + useServer + + + + nUdpMaxSize + + + + retransmit1xx + + + + srvDomain + + + + _btnEditContact1 + + + + telURIDest + + + + ovrTimeout + + + + enablePeriodicDNSQueries + + + + useIPSecDoubleSPIPatch + + + + securityMechanismValList + + + + skipDeleteDNSRecordsAtLoopEnd + + + + overrideRegistrarAddress + + + + enableTos + + + + srvAddr + + + + ovrDestHostPort + + + + DNSTimeoutValue + + + + tosVal + + + + passwd + + + + T2 + + + + autoRegister + + + + T1 + + + + enableSigComp + + + + akaOperatorVariantSequence + + + + enableVoLTE + + + + retransmitACK + + + + akaSharedSecretSequence + + + + volte_grbox + + + + customSipTos + + + + dontEndMediaOnBye + + + + realm + + + + akaExportComplete + + + + mediaBearerType + + + + _gbPeriodicDNSQuery + + + + enableRetransmissions + + + + milenage_c1 + + + + akaUseOPasOPC + + + + _ovrDest1 + + + + outboundProxy + + + + ignoreRetransmissions + + + + closeTCPConnectionsOnRampdown + + + + ovrContact + + + + akaAbsolutePath + + + + serverAddresses + + + + enableCCDedicatedBearer + + + + akaConfComboSelIndex + + + + _gbCustomTos + + + + ovrTrans + + + + useDnsSrv + + + + ovrTransOption + + + + _enableSIP2 + + + + _enableSIP1 + + + + srvPort + + + + + + + True + + + True + REGISTER + 0 + Expires Header(s) + 3600 + + <_dict type="list"> + + message + + + + msgPart + + + + checked + + + + value + + + + msgPartStr + + + + + + + True + INVITE + 2 + Session-Expire(s) + 90 + + <_dict type="list"> + + message + + + + msgPart + + + + checked + + + + value + + + + msgPartStr + + + + + + + True + UPDATE + 2 + Session-Expire(s) + 90 + + <_dict type="list"> + + message + + + + msgPart + + + + checked + + + + value + + + + msgPartStr + + + + + + + 1 + 3000 + 50 + 32 + False + 500 + 4000 + True + True + True + False + False + 0 + False + False + False + 150 + False + False + False + + 0 + True + + <_dict type="list"> + + btnRefreshProcList + + + + autoEndCall + + + + ignoreRetransmissions + + + + minInterReregister + + + + autoEndCall2 + + + + enableTimers + + + + refreshInSecs + + + + retransmit1xx + + + + _gbEnableTimers + + + + ovrTimeout + + + + sessionRefreshType + + + + auto4xx + + + + retransmitACK + + + + procListChanged + + + + T2 + + + + autoProcedureList + + + + _gbAutoPRACK + + + + T1 + + + + refreshAfterPercent + + + + enableAutoPRACK + + + + stopActiveRetr + + + + enableRetransmissions + + + + rprTimeUntilNextRPR + + + + rprScenarioHasPRACK + + + + expirationValList + + + + refreshAfterSecs + + + + autoProceduresCount + + + + auto4xxAbort + + + + rprSendNegotiatedSDP + + + + + + + False + <_useCloud1 type="bool">False + <None> + + False + + False + <_ovrCloudRules1 type="bool">False + + <_dict type="list"> + + _gbVirtualIPs + + + + useCloud + + + + ovrCloudRules + + + + _ovrCloudRules1 + + + + cloud + + + + enableVirtualIPs + + + + virtualIPTable + + + + serverRules + + + + _useCloud1 + + + + + + + False + False + False + False + <_enableTLS1 type="bool">False + <_enableTLS2 type="bool">False + <_enableTLS3 type="bool">False + 5061 + 3 + False + <_tlsSessionRefresh type="bool">False + 3600 + 0 + False + <_tlsReuseConnection type="bool">False + False + False + <_gbTlsMutual type="bool">False + + + True + ECDHE-ECDSA-AES128-GCM-SHA256 + + <_dict type="list"> + + enabled + + + + name + + + + + + + True + ECDHE-ECDSA-AES256-GCM-SHA384 + + <_dict type="list"> + + enabled + + + + name + + + + + + + True + ECDHE-RSA-AES128-GCM-SHA256 + + <_dict type="list"> + + enabled + + + + name + + + + + + + True + ECDHE-ECDSA-AES256-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + True + ECDHE-ECDSA-AES128-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + True + ECDHE-RSA-AES128-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + True + AES128-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + True + AES256-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + ECDHE-ECDSA-AES256-SHA384 + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + ECDHE-ECDSA-AES128-SHA256 + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + ECDHE-RSA-AES256-GCM-SHA384 + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + ECDHE-RSA-AES128-SHA256 + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + ECDHE-RSA-AES256-SHA384 + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + DES-CBC-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + DES-CBC3-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + EXP-DES-CBC-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + EXP-RC2-CBC-MD5 + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + EXP-RC4-MD5 + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + EXP1024-DES-CBC-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + EXP1024-RC4-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + IDEA-CBC-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + NULL-MD5 + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + NULL-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + RC4-MD5 + + <_dict type="list"> + + enabled + + + + name + + + + + + + False + RC4-SHA + + <_dict type="list"> + + enabled + + + + name + + + + + + + C:\Program Files (x86)\Ixia\IxLoad\8.20-EA\aptixia\data\SSL_Certificates + Unsecured_RSA_key_1024.pem + Unsecured_RSA_cert_1024.pem + 0 + 0 + + 0 + 0 + True + False + + <_dict type="list"> + + tlsCertType + + + + tlsPassword + + + + tlsPort + + + + ignoreSubjectAltName + + + + tlsPrivateKeyCertificate + + + + tlsTransportType + + + + enableTLS_HTTP + + + + tlsCyphers + + + + tlsProtocol + + + + tlsKeyType + + + + _tlsSessionRefresh + + + + tlsCertificatesPath + + + + tlsEnableTcpKeepAlive + + + + _gbTlsMutual + + + + tlsPublicKeyCertificate + + + + _enableCert + + + + enableTLS + + + + tlsAuthClient + + + + tlsMutual + + + + _enableTLS4 + + + + _enableTLS1 + + + + _enableTLS2 + + + + _enableTLS3 + + + + enableDTLS + + + + enableTLS_MSRP + + + + tlsReuseConnection + + + + tlsRefreshInterval + + + + tlsSessionRefresh + + + + tlsDisableUdpAndTcp + + + + sipScheme + + + + _tlsReuseConnection + + + + + + + 200 + 30000 + False + + + 6 + 100 + 30000 + + + + + + + + + + + + + 0 + False + <_gbHardcodedForDemo type="bool">False + <_gbStunSettings type="bool">False + False + 127.0.0.1 + 3478 + False + False + <_gbSRVCCSettings type="bool">False + False + + False + False + False + <_gbPCO type="bool">False + + False + False + + + + <_dict type="list"> + + _gbIceSettings + + + + _gbPCO + + + + VOIP_IPAddress4 + + + + VOIP_IPAddress1 + + + + VOIP_IPAddress0 + + + + VOIP_IPAddress3 + + + + VOIP_IPAddress2 + + + + bUseIce + + + + mobilityPath + + + + VOIP_Var0 + + + + _gbStunSettings + + + + PCO_List + + + + _gbSRVCCSettings + + + + absolutePathForCsvWithVariables + + + + bIceLite + + + + PCO_Groupbox + + + + bUseHardcoded + + + + bUseSRVCC + + + + useBHCA + + + + ipPreference + + + + btnBrowseForVariableCsv + + + + bUsePCO + + + + stunPort + + + + bUseStun + + + + stunAddr + + + + ddgGroupboxSRVCC + + + + _gbHardcodedForDemo + + + + pathForCsvWithVariables + + + + DodPathForCsvWithVariables + + + + _varCsvGroupBox + + + + VOIP_Var1 + + + + loadVariablesFromCsv + + + + VOIP_Var3 + + + + VOIP_Var2 + + + + VOIP_Var4 + + + + + + + False + sc.home1.net + False + phone-context=example + 61814712345 + 0 + 0 + False + False + False + False + + False + 160[00000000-] + <None> + + 0 + 0 + False + False + False + False + + False + 160[00000000-] + <None> + + 0 + 0 + + False + False + None + 0 + + + 0 + False + False + False + + <_dict type="list"> + + smOrigNumberingPlan + + + + smsFiles + + + + enableSMS + + + + enableSMOrigReplyPath + + + + smsFilesCount + + + + btnSMRecipEdit + + + + enableSMOrigReqStatusReport + + + + grBoxSMRecipient + + + + enableSMRecipOverrideSrc + + + + grBoxSMOriginator + + + + smsAddressOriginator + + + + telURI + + + + depActivities + + + + pcpuCommonPath + + + + smOrigTypeOfNo + + + + smRecipTypeOfNo + + + + requestURI + + + + smsFilesBackup + + + + smsAddressRecipient + + + + enableTelURI + + + + useFilesFromActivity + + + + smRecipNumberingPlan + + + + smscPhoneNo + + + + smsImportFilesActivity + + + + enableSMRecipReplyPath + + + + btnSMOrigEdit + + + + smscNumberingPlan + + + + duringLoadFromBackup + + + + enableSMRecipReqStatusReport + + + + grBoxSMServiceCenter + + + + verifyUserInfo + + + + smscTypeOfNo + + + + enableSMOrigOverrideDest + + + + smsActivityForFiles + + + + + + + 0 + + + + + + 0 + 0 + 0 + + + + <_dict type="list"> + + contentViewShow + + + + ixSmsFilePath + + + + contentViewEdit + + + + segmentOrder + + + + comboRefNo + + + + loadedFileType + + + + btnSmsLoadFiles + + + + ixSmsFileName + + + + btnSmsSaveAs + + + + fileName + + + + segmentNo + + + + totalTpudSize + + + + comboCoding + + + + + + + 0 + <None> + + 160[00000000-] + 0 + 160[00000000-] + False + + + + <_dict type="list"> + + userPattern + + + + phoneBookPreview + + + + ePhoneType + + + + ePhone + + + + fakeEnableTelURI + + + + comboPhoneBook + + + + fakeTelToPort + + + + fakeTelURI + + + + radioBtnPhoneNo + + + + + + + 0 + <None> + + 160[00000000-] + 0 + 160[00000000-] + False + + + + <_dict type="list"> + + userPattern + + + + phoneBookPreview + + + + ePhoneType + + + + ePhone + + + + fakeEnableTelURI + + + + comboPhoneBook + + + + fakeTelToPort + + + + fakeTelURI + + + + radioBtnPhoneNo + + + + + + + True + + + + + INVITE + + + ACK + + + BYE + + + CANCEL + + + OPTIONS + + + REGISTER + + + NOTIFY + + + SUBSCRIBE + + + REFER + + + MESSAGE + + + PRACK + + + INFO + + + UPDATE + + + 100 (Trying) + + + 180 (Ringing) + + + 181 (Call Is Being Forwarded) + + + 182 (Queued) + + + 183 (Session Progress) + + + 200 (OK) + + + 202 (Accepted) + + + 300 (Multiple Choices) + + + 301 (Moved Permanently) + + + 302 (Moved Temporarily) + + + 305 (Use Proxy) + + + 380 (Alternative Service) + + + 400 (Bad Request) + + + 401 (Unauthorized) + + + 402 (Payment Required) + + + 403 (Forbidden) + + + 404 (Not Found) + + + 405 (Method Not Allowed) + + + 406 (Not Acceptable) + + + 407 (Proxy Authentication Required) + + + 408 (Request Timeout) + + + 410 (Gone) + + + 413 (Request Entity Too Large) + + + 414 (Request-URI Too Large) + + + 415 (Unsupported Media Type) + + + 416 (Unsupported URI Scheme) + + + 420 (Bad Extension) + + + 421 (Extension Required) + + + 423 (Interval Too Brief) + + + 480 (Temporarily not available) + + + 481 (Call Leg/Transaction Does Not Exist) + + + 482 (Loop Detected) + + + 483 (Too Many Hops) + + + 484 (Address Incomplete) + + + 485 (Ambiguous) + + + 486 (Busy Here) + + + 487 (Request Terminated) + + + 488 (Not Acceptable Here) + + + 491 (Request Pending) + + + 493 (Undecipherable) + + + 500 (Internal Server Error) + + + 501 (Not Implemented) + + + 502 (Bad Gateway) + + + 503 (Service Unavailable) + + + 504 (Server Time-out) + + + 505 (SIP Version not supported) + + + 513 (Message Too Large) + + + 600 (Busy Everywhere) + + + 603 (Decline) + + + 604 (Does not exist anywhere) + + + 606 (Not Acceptable) + + + + + + Request-Uri + + + Via + + + From + + + To + + + Call-ID + + + CSeq + + + Contact + + + Content-Length + + + Route + + + Record-Route + + + Authorization + + + Proxy-Authorization + + + Referred-By + + + Replaces + + + Event + + + RAck + + + RSeq + + + Refer-To + + + Subscription-State + + + WWW-Authenticate + + + Also + + + To + + False + + + True + + + False + + + + + + False + 40000 + 60000 + 1 + False + False + 10 + False + False + + <_dict type="list"> + + tcpIdlePeriod + + + + tcpEndPortLabel + + + + tcpIdlePeriodLabel + + + + donotCloseTCPInsideCallEnable + + + + tcpPortStepLabel + + + + tcpLocalPortStep + + + + tcpLocalPortEnd + + + + tcpStartPortLabel + + + + tcpLocalPortStart + + + + closeIdleTcpConnectionsEnable + + + + recordingServerEnable + + + + overrideTCPLocalPort + + + + closeNonsecureTcpConnectionsEnable + + + + + + + 6 + <_apiUniqueId type="int">16382 + 39 + 59 + + + <_dict type="list"/> + + VoIP + + + + + + None + VM1 + Both + none + 0 + Default + False + + Ixia Virtual Load Module + + + + 1 + 1 + 1 + False + Ixia Virtual Load Module + + None + + False;8192 + + None + + + + + + <_smRangeObjectId type="str">5affc0a7-68f6-46f6-b801-0e18e067a572 + Network Range IP-R13 in VM1 ({{ipcard1}}+1) + + Group1 + consecutiveIps + 0 + <_apiUniqueId type="int">15457 + <_networkRangeList ver="[0, [3, [0, [0, [0], [0]], [0]]]]" type="ixWeakrefSequenceContainer" itemtype="ixNetworkRange"> + + + <_rangeGroupObjectId type="str">abf2b6e4-a102-4cbe-bf1b-a11f11b2faac + <_smPluginObjectId type="str">9ea551b2-a0af-4a7d-9872-e9b94298d7bd + + False + + + None + None + + + + 0 + 0 + 1024 + 65535 + 0.0.0.0 + 255.255.0.0 + :: + FFFF:FFFF:FFFF:FFFF:FFFF:FFFF::0 + + 0 + + True + False + + + False + 30000 + + + + + + False + True + True + False + False + 0 + 1024 + False + 0 + 1024 + 60 + 75 + 9 + 7200 + 5 + 5 + 5 + 8192 + 8192 + True + False + 1000 + 60000 + + + + + False + False + False + False + False + False + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 0 + 1 + any + any + any + False + FragmentationPercent + 50 + 1000 + 1 + 1 + <_seed type="int">1 + + <_portGroupId type="str">e7fa1f9e-23d9-4742-96b2-6edce6c4424e + <_smExternalLinks ver="[0, [1, [0, [0]]]]" type="_smExternalLinkersMap"> + + + 1 + + + + + VoIP Peer + REGISTERING + True + + Timeline1 + {{registeringduration}} + {{registeringduration}} + 1 + 0 + 10 + 0 + 0 + {{registeringtotalcalls}} + {{registeringduration}} + {{registeringduration}} + 0 + 0 + 1 + + + + Linear Segment 1 + 0 + 1 + 0.0 + 1.0 + {{registeringduration}} + 17 + + + 20 + <_apiUniqueId type="int">16159 + + 3 + + + False + 1-5 + 0 + 10000 + 1 + 500 + 500 + 4000 + 80000 + 0 + 0 + 18 + 0 + 1500 + 5 + 2500 + 1500 + 2000 + 100 + 40 + 0 + 0 + 800 + 2150 + 1500 + 2000 + 100 + 0 + 750 + 86534 + 0 + 100 + + Peer + Both + 100.0 + concurrentConnections + {{registeringtotalcalls}} + activeUsers + {{registeringtotalcalls}} + SimulatedUserConstraint + 86534 + 100 + True + SimulatedUserConstraint + 100 + False + protocolSpecific + 1 + 0 + 1:1 + Consecutive + + 2 + <_apiUniqueId type="int">15566 + 58ff41761a9072107c63efca + <_objectiveValue type="int">{{registeringtotalcalls}} + + 1.0 + + + + + VoIP Peer + CALLING + True + + + False + 1-5 + 0 + 10000 + 1 + 500 + 500 + 4000 + 80000 + 0 + 0 + 18 + 0 + 30000 + 16750 + 33500 + 1500 + 2000 + 100 + 40 + 0 + 0 + 800 + 2150 + 1500 + 2000 + 100 + 0 + 30000 + {{activecalls}} + 0 + 100 + + Peer + Both + 100.0 + concurrentConnections + {{activecalls}} + activeUsers + {{activecalls}} + SimulatedUserConstraint + {{activecalls}} + 100 + True + SimulatedUserConstraint + 100 + False + protocolSpecific + 1 + 0 + 1:1 + Consecutive + + 6 + <_apiUniqueId type="int">16446 + 58ff41761a9072107c63efca + <_objectiveValue type="int">{{activecalls}} + + 1.0 + + + + + + + + + + + False + <_apiUniqueId type="int">15466 + + None + + + <_apiUniqueId type="int">15451 + + <_dict type="list"> + + + + + + + <_dict type="list"> + + + + + + + <_dict type="list"> + + SIP + + SIP + True + + + + RTP + + RTP + True + + + + T38 + + T38 + True + + + + MSRP + + MSRP + True + + + + + + + + + + + + + <_dict type="list"> + + SIP + + SIP + True + + + + RTP + + RTP + True + + + + T38 + + T38 + True + + + + MSRP + + MSRP + True + + + + + + + + + + + + + + True + 1 + 0 + 10 + 244522 + 3549 + 3549 + protocolSpecific + n/a + {{registeringtotalcalls}} + 0 + 5 + 1 + 17307 + 20 + activeUsers + {{registeringtotalcalls}} + {{registeringtotalcalls}} + 0 + <_apiUniqueId type="int">15450 + True + + <_portOperationModesAllowed type="dict"> + + 0 + True + + + 1 + True + + + 2 + False + + + 3 + True + + + 4 + True + + + 8 + True + + + <_tcpAccelerationAllowed type="dict"> + + 0 + True + + + 1 + False + + + + + 0 + <_apiUniqueId type="int">15447 + + + Terminate + + + + 2 + <_apiUniqueId type="int">15449 + + + + + concurrentConnections + {{activecalls}} + protocolSpecific + activeUsers + {{activecalls}} + + {{activecalls}} + True + VoiceLink1 + + + + + 0 + <_apiUniqueId type="int">16586 + + + + 0 + <_apiUniqueId type="int">15446 + + + 45 + True + True + True + True + False + False + False + False + Kbps + + False + + + + <_apiUniqueId type="int">15684 + + False + None + 0 + 0 + 0 + + + + Playlist + playlist + + + + 0 + + + Random Data + rdge + + + 0 + 1 + + + 1 + + + Real File + realfile + + None + + 2 + + + Unified File System + ufs + + None + + 3 + + + <_profileMru type="str"> + + None + True + True + 0 + <_apiUniqueId type="int">15445 + + + 2 + True + False + begin 666 <data> M>)S=G6MOXSBRAO^*D(,9S& GMJB[,ND,TD[2$W1NB-T]N]A>--0VDVC;EKR2 MG,L>G/]^*-E.1+)DUTQ$"LB'[C@65:5Z0Y;X4)?:_^UQ-C7N:9;':?)NA_3, MG=\.]H=%5'R.Z0/-7C9Y/<_LF3TKM'98 YJ7WY[%>6%\I$_O=J)Y$3_&42^_ M[\W+/?*")F/:J[7[(XOF;!/;>7!Y,3J^&!G]@_VKZ^,A^W@X.KV\$'__>GQT M.CI\?W9<;AA<GK\_O3@^>G:=/W_"'(#D_&#_)*/_6; V3\9]-%W0=SO63N4H MOS]+;V_CY';]_2A;T&K3*)[1X5,R?D_OHOLXS=8-S.>M>1'-YE<9'<?5@:VV MV]7VX]N,'4NIZNAI3M?;2+7MDJD\3:/)5986=%S4]GUV_G)<O\>3"4U*0_FZ MU4DTS9?-CI/HVY0>144T+-*,R@VN7L2I'X<#[;W1$SN@RT4Q7Q3/0IXOID4\ MGXJQ58V.AEN:G4>/9:_+V?$-%GF1SCZP/]G=<QMO[?,DGM*KJ'C>4GU_.*59 MD:]_&JQ+)_G>8QZ_V[DKBOE>O__P\-![L'MI=MNW3)/T_WY^-AS?T5FT&R?L MC\;$V'G>:[)]K\II?^WUB-Y$+*9*)_ZWJAF_>9"EJUZ04<I:,ZU'I>@'^X_Y M7EY9-V)V"!?TH?H[T&)U9&6HZT/$'.&R[2R?,"OO=A99LK*>[\[B,3N(]*;8 M':>S/=9N=]EJISH&.J4SFA1&$LTH?QC+5GNG^>J;=SM%U3M7WY]'<?(<3MES M*:UB/DPF'[)T,<^?6YZEXZALLG3(#H+UAL>R-RY_OTOC,35F<7(Y'B^RO!I@ ML^AQ_=LB^98ND@F=0,<+> 6=Y,O.2 $3IT<[1L':O=MAFZ9I<KLC'$L?V.DJ MRM@O?VG7"_9_;;>\R&+<CF4P?VG'P1T=?R]'V\L?K_K#59:&3RP[S'I_Q,DD M?<A[)VDVRWLO>_QB0 U^,3ZOSA-.KSQ+F+\8 ];G%QE]E]!%D4737XRKQ;=I M/&;)>I1^I\F[;[X?N6/7(Z'M4#,(:Y%$R=,R-HSNQ=U?TN RF[#SP<N><5)@ M=EMFR$EMQV]I.J51 NS<Y_I97^R%_1?CJZU5Q\>T7([D@_U)?'-SF^TM?T2S MOS+F5_LL36S;9^UH]YZP8764CA?E,1VO#TT>?,;J",N,)F\ES]TO2Q^J/T@E MW6J?NR@?W$7)+66"LBS-<FTUY$^/#LS]/OM_?SWF#G;)?O_YE_UR/!U4CO;[ MU>?]2L7*Y7Y_J>A+?SZP]ONUW_;+#G70+^VQG_O5057VEY]69\C)09GY]OOK MWYA9*;@_+X<%R$$0<A!!#E-28W4*P@E" $'6!@1A3"VZV( N%D(72]!%[B57 M:588@ZM/1ADKFQ7%8UZB\CC^K$*@S;IHKI[>Y "JV0C5;$$U2U+M!^,HSK\; MGXIX&O\W*F>KG&AEW']6-,AD73-+BV0N()F#D,S9*MDH+:*I<4YG:?;TT\?W M/[]:,-F@_G'I 7*Y"+G<K7(Q5J!MJB79JXNE9SCZ@%@>0BQOJUAEKCEC\&@< MWM\:/Q'C/$X6!7V]:(UVZ^+96L0+ /%\A'C^GQ3/7069MZU>W7!=/D>+?"$@ M7X"0+_BS?4^9?J1)0%>+@,0$% P1"H;;3Z;K0%]_#GVQ5%?(TZ,0-)<GF,D\ M$6?S\C3MS-JUJ^E4;MRDF3&8QB60E1.MUT_7-MKN8-I&0 I 88#( 40&@;,X M^5Y%2U_=W>JF],\]" 0%!$,%1,("4"9J#.>4OGY4UDWIGW40B ((!@.(R & M3"<9^S\WANR[%J9H-5OZI_X$FOL3S.2?B+/_S4(9UVT,/MF@_DD9@>;_! , M1"0 0++/T32>&*LXK^F8QO<MC,8&J_JG9 3B 8(! B(2 5:\=GK>)M,=3,P@ M,B 8-" B&P ROG\JVDIO=5,=S,X@ B 8!" B T RQ44M%1D_??PV;P$ &JS6 MQ?/U+,M"DW^"F?T3<?K?V,=:2W"BN;I<@1ZY(!*P,"1@2230T->XM--J?X,M MUT4,]8@(48"%H0 +00&C+$KR65P8A]F<A?R?!<U?G^%@H]R45P\:6.#U M0% M P0:"&'.IT]M*U>9Y'33=/D)8@4+PPH6@A56(ZO5+@?:Y)33 P\6! \6!AXL M!#SP4;;1X0"+G&IZ^,&"^,'"\(,E\<.V):,AS>YIIF;)B+?=P9*1!;&$A6$) M2[JZX+[=)2,+8@4+PPJ6=!T!E.EM+!E9$"M8&%:PI.L%LDQO:,G(AKC PG"! M)5T6V"C4VUDRLB$VL#%L8(ML $CVQI>,;(@); P3V"(38,5[BTM&-H0'-@8/ M;!$/ !G?S)*1#=X_A+J!2+J#")#I;2\9V1 0V!@@L*5[B9KZV!M:,K(A$K Q M)&!+]Q(U]+6WOV1D0Q1@8RC 1E# VUXRLB$TL#%H8"/0X.TN&=D0*]@85K 1 MK/"6EXP<"!YL##S8"'AXJTM&#L0/#H8?'.1=1J,[YNCV;KXHEBL\[2P6R5:[ MN"$<X@<'PP^.R ^.O$JYNG%*S<1NLW']2TD.Q! .AB$<D2&V2*EDWK+=@?YE M)P?B#0?#&X[(&X"DJS5:-;USLW']"U,.^!P#ZD$&D3ZV2*FD=VYWH'_ARH$( MQ<$0BK/]6L7G]/1J&,]?_W#6RE G#VDY$'XX&/QP1/QP (9;Y$_&[^DB,P;1 MM'SN)<H76?7486[\M K[YU>?J]?Z(;UQW=#4)#-$*@Z&5!R15$K=19E_'QR^ M?KEOK6)EK(.>"$&)@X$21X026*)!FQ(-NCC9NA!].!CZ<$3Z 9KN6M"IRI& M)F2:'X::!(1 Q,6 B"N"2*DH^+3@.M;6>IMH5O_0="$$<3$(XDH((LMV."Y* M1&U=-\EN!P,6 @X7 QRN!!RR<,/%>$SS_&:AH-.!MCMXM!?""Q>#%ZZ$%[* M?T194KXQJ'7U9,/ZY[XNA!,N!B=<"2=DZ4ZBF!UJ^\I)=O5?L'7!!Z113TB+ MT !ENV]IN8."="<9UG^1UH5HPL70A(N@B;,TG:N8G4AV^:F)IDP'$8*+(017 M) 17GO[*Z=RHHE9XOE@[Z&"Z I&$BR$)5R0)0$H^0[4L(VQ<_\3%@TC#Q9"& M*Y(&(*%P>FQ9PP;K^B<O'D0;'H8V/)$V !&%?-^RB W6]4]C/(@]/ Q[>")[ M ")R;-6RA*!M_=,9#V(0#\,@GL@@@("G24&S*CCC:)%5KP R?CJ\O_W9^.<L M_U=K6FYSHW^JXT%DXF'(Q)/(!%B+B:9J%F)$N_Q41U./A,C$PY"))Y))J:68 M%XN"SN95[BJ#;2\CBG8[>',31"8>ADP\D4P X08I2U3C]H63['8PG0%?XX1Z MCY/()8!PJTF;JH[79+Z#"0W$*!Z&43R140 9GR\:MBN?:+:#*0S$(QZ&1SR1 M1Z!\E^0/-&L_W0EF]4]<?(A!/ R#>"*#- ]:19VNP;K^:8H/,8B/81!?9!! MQ.-D%9IQFL1%S 1IX<&-E82@;?TWU/L0?_@8_O!%_M@H8'L/ODCZP?>(Z[FE MWH?HP\?0AR_2QT;Y!M6+E]7TOYIM_3?9^Q!G^!C.\$7. 2L;DB^H5G[YP_ MLOZ;ZWV(-'P,:?@(TJCN-VE7M;K)#FZH]R' \#& X2, 8WU!MMUY"F>T@YOI M?8@M? Q;^ BVN*;_5L%DHMD.;J7WP;?#HEX/BX*)29RI44XTW,$-]3Y$%#Z& M*'P$42S/>@]Q<6<<+HH[MBD>+Y?<RD<O6/3MG60QKCA]]:!' *&'CT$/'X$> MRZ#+XD'&IZ.KEK5\,<OIIH<V H@V @QM! C:J 4X&BC1K3++Z:8',@((,@(, M9 0(R*@'>#94HEMIEM--#UT$$%T$&+H($'11"_ \?F0)OYK3SM/L]<^S 1I* M+C@]]<!& ,%&@(&- 'E1HWHB0-65#=DX?WE#4Q*$H"/ 0$<@0D>P]?*&T<_I M6-4UCI5Q_1<Z HA# @R'!"*' !(*%R3:E1 VKO^21P!A28#!DD#$$D!"?F&S M705!V_HO=@00GP08/@E$/H&&,;>\WO(HAFSKO^P1@/4K4 4L1$@!!)36E]K5 ML,F\_LL@(<0B 89% I%% !E?%IS:U4^RJ__21PC!2(B!D5"$$3 #_EO9.02T MK?_21PA128BADE"D$E! ?B&E;0E!Z_HO@(00HH081 E%1(&F,EO73UJ>W6#] MZ;]0$D+L$F+8)139I5'H]>**"E$%V_HOEH00MX08;@D1W,*OLB@3\,5V!Y=/ M0@A;0@RVA!ALX=9;U"GX;+N#BRDA1"TAAEI"!+4TK[8H4Q/VT\'EEA#"F1"# M,Z'T!'K#TLXHGJE;VI&,\TL[FF9$$-*$&*0)1:0I585$'-)B,:^B57$?]287 M^I=YB D6Z$-5Z!/9!M!S%$V_*U,2-JY_G8>8< D_7 T_$70 %=?WP2A3LMF! M_D4?8H)U_$Q4(3]3I!ZH3RX?"BG#5?F\Q#8W^E>#B F6_C-1M?],Z6GXIM>K M*GBKC&B7/_'HH4AB@A4!351)0%.N\R$7-%V&N7Y!99LWT@&6NSC5@)4"352I M0%,N]]$D8.NW<6YZS:^N,PQ8,=!$E0PTI4?BH==>WL9YL<Q2*D9PHWU^).M9 MIB F6$+01-40-.4B@K*<+Q?QN, 57"04['<QJL%"@B:JDJ IEQ*4Q:P]UZY& MS68'78QTL."@B:HX:,HE!X'R&.OG(E1("1OO8!()UAVOQ$7(*!<?W#3$CZCJ M02YYZ&#N")<IQ]4IEPN5;Q[FJA3=Y$+_54724+ <5[%<+E;8.-15R=ED7O]U M1@(7-<=5-9?*FF^9'RF[?VJS$WZFI.=Z!(&KH./*H,MUT(D\96^8R:BZIPIR MTL&<":Z9CBN:+E=-!V1MFM*TJ^L6+QW,GN#*ZKC2ZG)M]8W]54A[JGHL[*:+ M&14(3;C"ZW+E]<U]5JFV6_UT,;L"(0I7CEVJQ[[M_%5=QU%\^A)]<)IJNA9, MX.+MN.KM<OEV(B\E2R&K6$C>[*2#LQ=<UAU7UUTN[ [(R@]+9<)N<]/!^0LL M 4]0->")5 0>R /#TROCG"6_Z%;)#+;)/#_Z=6D)XA6J%#R1:\%;0#T'%NVJ M$E)+A0OK.@J6NQCG(%2AZL$3N2#\-@'9MKS%17O0=A<C&B0H5'%X(E>'WR;B M>52,[U2I^&R\@]DG6"B>H"K%$[E4?*.,^9Q- ]LJ0\J+R)ON8(X)5HTGJ++Q M1*X;#TCX$F/+8UDVW,%J'5@KGJ"*Q1.I6OSV'JAF)$O6.UBK ZO)$U0Y>2+5 MDX>$/+WX?#HZ5G1JAHWK?S* @-7F":K</)'JS6-D;'E0-YG7_WP >O1$U1! M>B)5I,=(V?;@;K2O_QD E:J)ZA2]42J58\1\YH6JQM;%"K*.]'_9 !:]@3 M5!%[(E6QAV0]''Q4E#(!RQT\&4# \O4$5;^>2 7LMRK8<K8$;7?P= !J]L3 M5'E[(M6WWZIBVXD2-M[!LP $+'1/4)7NB53J?JN.2G+D!@\=O)")V"#?V"B^ ML3%\\_X?JB:5@.4.7KE$;!!Q;!3BV!C$X>)L.4."MCMX 1.Q0;ZQ47QC8_B& MB[3M# D;[^"%3,0& <=& 8Z- 1PNU*J\01)-IT]J)87\=/#:)N* S&.CF,?& M, \7M9+SSP8/';RXB3@@^#@H\'$PX$,>'U4M44*F.0TU48X#4HZ#HAP'0SE\ MH"V?@F#CW&JY)M9Q0-9Q4*SC8%B'#[7MC-E@G5-2$^\X(.\X*-YQ,+S#QZHD M46YRP6FJB7T<D'T<%/LX&/:QU&5*R#2GH2;:<4#:<5"TXV!HQU*9*6'CG(Z: MF,<!F<=!,8^#81Y+::9LL,XIJ8E[')!['!3W.!CNL=1GRDTN.$TU,9 #,I"# M8B 'PT"VNDP)F>8TU$0Z+D@Z#HIT' SIV"HS)6R<TU$3W[@@W[@HOG$Q?&,K MS90-UCDE-5&."U*.BZ(<%T,YMOI,N<D%_ZB*)DU!XG%1Q.-BB,=1ERDAT_PM MDYHT!%G'1;&.BV$=1V6FA(US.FKB&Q?D&Q?%-RZ&;QREF;+!.J>D)LIQ0<IQ M493C8BC'49\I-[G@--5$/"Y(/"Z*>%P,\;CJ,B5DFM-0$^NX(.NX*-9Q,:SC MJLR4L'%.1TU\XX)\XZ+XQL7PC:LT4S98YY341#D>2#DNBG)<#.6XZC/E)A>< MIIJ(QP.)QT,1CX<A'D]=IH1,<QIJ8AT/9!T/Q3H>AG4\E9D2-L[=?:Z);SR0 M;SP4WW@8OO&49LH&ZYR2FBC' RG'0U&.AZ$<3WVFW.2"TU03\7@@\7@HXO$P MQ#,XO!@<GQEJ;K^"C7,Z:N(=#^0=#\4['H9WQ%!;SI=-YCDM-7&.!W*.A^(< M#\,Y8K!MY\Q&^YR:FHC' XG'0Q&/AR$>,5HE>7.S$TY7303D@03DH0C(PQ#0 MY=7H]/)BJ"AU-ECGE-1$0#Y(0!Z*@#P, 4FQMIP\&^US:FIB'Q]D'Q_%/CZ& M?:1HVTZ?S0XX/35QD ]RD(_B(!_#05*X2A+H%B_<XZ2:R,@'R<A'D9&/(:/K MXP^GP]'QM:(4VF2>TU(3&_D@&_DH-O(Q;"0'V_:SXHT..#TU<9$/<I&/XB(? MPT5RN&VGT0T>.$4U$9(/$I*/(B0?]18#*5XEB72;&TY;3<3D@\3DHXC)QQ#3 MQ>7H].0?BO(H;)S341,K^2 K^2A6\C&L)(;:<@YM,L]IJ8F/?)"/?!0?^1@^ M$H-M.W\VVN?4U,1( <A(/HJ1? PCB=$JR9V;G7"Z:J*E *2E $5+ 8:6AI_> M#P?7I^]5/8'::)]34Q,K!2 K!2A6"E!O;I.C;3F%;O# O2M&$R,%(",%*$8* M4*]RD^-M_0U&&UQPFFIBI0!DI0#%2@'JS6YRP$K2Z58_G+J:R"D R2E D5. M(Z<3A4@/V.94U$1+ 4A+ 8J6 APMG2B%>= ZIZ0F-@I -@I0;!1@V$B(M7V, MA\US6FKBHP#DHP#%1P&&CX1@%0'\!A^<JII(*0!)*4"14H AI?/CX?#P@ZH9 M:(-U3DE-E!2"E!2@*"G 4)(4:\MYL]$^IZ8F-@I!-@I1;!1BV$B*MNW<V>R MTU,3'84@'84H.@HQ="2%JR1_;O'"O092$R6%("6%*$H*,91T>G%RJ2A]0J8Y M#35140A248BBHA!#17R@+2=.V#BGHR;^"4'^"5'\$V+XAP^U_3>2@M8Y)34Q M4 @R4(ABH!##0'RLBEY'VNR"TU03#84@#84H&@HQ-/3IZNA0V3N<8>.<CII( M* 1)*$214(@A(3'4EO-EDWE.2TW\$X+\$Z+X)\3PCQALVSFST3ZGIAX&LDR0 M@4(4 X48!A*C59(W-SOA=-5#0Y8)T5"E]E9=62N$KE?7ZM[D#-KF5-3#0)8) M,5"E+4)%# ,)D;:<-ANLUY4,]#"/94+,4^F+4!+#/$*L;2?-)O.<EGK8QS(A M]JD41FB)81\A6"4I<Z,/3E4])&29$ E56B-4Q9#0IXN/%Y=_7*B;)#79Y]34 M0T.6"=%0I3%"30P-2=&V/DUJ=,#IJ8>$+!,BH4IEA)XH$GH.5]$SKLT..#WU M$)%E0D14J8S0$T5$4KCJ.NC&YUT#/5QDF1 753HC%,5PT;*TU/HTP78VSO/; M]LK,-YGGM-1$102BHDIAA)88*BJ#/;U-TJPJ5KX*.L_+ZL2M"MKH@U-5$Q,1 MD(D(BHD(ZNZY>AG#RVS.;+7=/T7CG(Z:J(B 5$105$3P%4_764V-D)+UNI*A M)BHB(!41%!41D8J@.KRT&F\LW)N,YG>4%[$\F+\LHFR9?Y6<IED[ 5F(H%B( MB"QD >7B3Z*8':ZQ6<G7=,=F!W5!=75($((("H*("$&0G,/%>,PBO5E,%4JZ MV4E=5DW$3D :(B@:(B(-0;)>TS&-[Y7VTTTNZI+J&O@@$!$4$!$1B"!)#]D< M<#8OE&JZT0>73S6)"E(105$1$:D(.!\=9UF:J:@(+QOFST:Z] ,9B* 8B(@, M5"DJ"#C*XMM;FAG+>%OKAZ+9#LX\%H@\!(4\1$0>2+KKT57;LM5-=G!6L4"> ML5 \8XD\ TFV+B+5MFZ2W0[.'Q8(,18*8BP18L"A&L]HNBA:'ZJ"V0[.$A9( M+1:*6BR16N LQXALGF;MBR<9YM[1H4D^$%DL%+)8,K+(\I6 .XBF4^-DFCZT M+2%LG'M\3Y.,(*I8*%2Q9%2!9:R6J%L_W0*6N3M\-0D(0HF%@A)+AA)8P.%1 MZV==T2QW8X FZ4#XL%#P8<GPT2S=ARG[WABDR20N6E^<A1UP*XJ:Y 2QPT)A MAR5B1Y.<QX]%%HT+XW.4Q>71YRKZ9;,3;GE1DZP@C5@H&K$P-%*M\"N:(X*V MN4FV)C"Q03"Q4&!BB6 ",/$1G49/*IA8-LPSL:;IC@U2BHVB%%NBE%)1\6Z5 M-"^,HYAUDRIBXZ?#^]N?C7_.\G^U=[/*!A<=L+(-LHN-8A=;8A= TG,ZB:-5 MK*._JU!T@X<.2-H&B<9&$8TM$0U"T//H4;&@-0\=T+4-,HZ-8AQ;8AR,H'&B M6M 7#QTPMPW2CHVB'5NBG2V"7BL?\M?-0U[7:0FD'QM%/[9$/PA!U0[YZ^8A MKXG';9");!03V1(38015.N2OFX>\)CZW02JR451D2U34,'':O8K'WQ=SM5.G M9B<=L+L-4I&-HB);HB*<K.V/_<U..F!X!\0D&X5)MG3]!BEKZQE@LY,.&-X! MZ<E!T9.#H:?/\82FAA9Q,:ZZ('P'Q"D'A5,.!J>: V\]+V!<<1IK(BP')"P' M15@.AK : V__E(9QQ6FL";H<$+H<%'0Y&.A:!JX>O;;ZX=351& .2& .BL < M#($U1*TH12#7"W2M$CH@CCDH'',P. 9'K2HY8)>W-+&9 [*9@V(S!\-F<M1J M"&VK'TY=3:#F@*#FH$#-P8!:0]0:,L.&906BB=<<D-<<%*\Y&%Z#H]:1&3:L M@A%-V.:"V.:@L,T1L0VHMK7(BW1F5$XY(2OW@)(FH&3=2+^3"RXN2&$NBL)< MD<*:5'JE/H(R?VU>WS]*QXL9.[;C*2U_L&]6$2Y_1+.R#=-A5%IAGP=9FN>E ME=+:P?YU-(G3RIBP(6:VV#0XKDPVMAI,8^;T),UFBVDTI$41)[>Y<1]-%_3= MSO_^^#^/1[^R_PY__?$_B[3X]3/-RGNFE[_L+7^0GKO\\(O4N@QUU?:?+QO_ M]?+Q_UX^[AA]]H>@>7&]2,3C^'%:_/K;XVQJW"_]OUM[-I<?#)J,TPG;8[5A M4=SL$F_Y^;<?;XM?:T?&3*V\G"8WZ9!F<32-_QN5MV*\CVX-YB7)]Q[S>&7J MKBCF>_W^P\-#[\'NI=EMWS)-TO_[^=EP?$=GT2[K>T64C.GJ2-;[3Y#[+UOQ MQV@8Y5'.OA8K-5C'B\=763K/Q7;+EF4\94<NMY:?2?EEO_XMO,^ =>C;-'LJ M6WQ.XS%=)\[G_>LM9!N#F]N3>$K+,5 V&.Q]^<3&8?XERM-LDGY9=^S\R]>O MRP%3;KS,RD'[Y?+JXN2S]?4L2A*F_)?KXP]?!X=G9U^K[[]>7A]>?#C^>A_> M];+'F^IP!&=P1#1;1[P\AN= 7C;(.QXM*IV,?N/FWQ]6'7]#F^&V-N5A7'[[ M-QT7\3W--[7Z/;Z]F[)_16.KJ](5BXIEM G[+[Z):5:V=.W0_T9#?]>]\2>[ MCNW:N]]N'']WXMV8MN>0\8T75IHT&9!=L0Y8[UOL5]<A;F6DMDG>K^P*P].C M<N-PE^RZNQ;9M4V7>*YK.^XNL^'Y[)A,?]<F%H/AT#'-7>('KE?9KNT.'A,; M%&7&OTS*%I9)_%UFR3)'A.R9WIYM]P+'M<+0_9MI[9GF^G"YO1KLIO-YV<)@ M.6 OB:>K<5RF\M40;_B;+#/I>32^BQ.ZUN5X>'YXM'LXO+P^NMP]6W9DJ-T6 M<X>324;S:OB3T.H1+^B1'B'6RV[$[)D]EZ7BEV]6#=U>K=D-#<R]/6+>F'L. MI=_V?/-FCUB1_X,CM0EO[#W+GY ]SYUX>TY@^S\05VP5F1[=8WV-[OG^-[(7 M3NP??#[9]IL"D4,^?;R@Q4.:?5^?9EBKH&>7D1%OF=2@)AL,7=,IC?)*X=/' MLS2:&$PXTS@^Y(W5FFTP5LMS+!F79V:CS$BY\=-CX/W\Y?0QCKXLO7PICWI7 M]-*<NDX?KVEYCS3-:F'9/;^,W'975H F</KX=#X<1],J&F*N^K[PO;SC\+ZV M^>,W=JHI=^.^!<=+&90\(JJ=,2>PVHF.YN7<_7)>W139,";2Z93ESW**5C8X MHD7U).>RF_';&G<^HU&6T$EY\B_;W413]H>O&1"V-]HI;\9>SN% ,_SF1BLL M#Y<M2X6JAE6:J9D1MV\RM'J@;9,ML4FSN2PMTG$ZK>X'O(G&%+8(MFHT>ITN M"GI=S=DA:\)FR,QL7F:/T7-W$:6'MC?URXW];=DO)T])V6L_TB?@3,PU^5Q. M5*5&ST.O8;99MJ[FO?W!Y<7H^&+$\.+Z>,@^');%.,LM]=^_'A^=C@[?GQV7 M&P:7Y^]/+XX9T%33[.JK_/XRF3Y5OY/RB[,X^4XGS]O[+_NLGR9_^92#V\_8 M).%@O^K(1L+.5>]V*FL[SS/Q';+#;U_.]':,=(EL#..BZM'@,WI/IPSAEO%6 M>QSL#Y/9W&#ROMN)V-^!)=!>?M^;K^<F8]HK&ZSF*N4D>Z>,>Z54N6F0)C?Q M[2*K!*W30LXVCMG&ZN^Q^OT^RI;'N#R/E_NOSNA1-2>3S_03FH^SN.HAJXVU MZ3JSRDYI4W8^6T_YRK_VRE'=[X3>;]FAUJ)?/_+7]HUJ]S+.\@<;\^7?CO'I &_P,I\+)D end + + + 45 + <_scenarioElementFactory ver="[0, [1, [0, [0]]]]" type="ixScenarioElementFactory"> + + + + qovCoprocessor + 0 + + + Impairment + 0 + + + asrCoprocessor + 0 + + + + + + diff --git a/functest/opnfv_tests/vnf/ims/ixia/files/Registration_only_LPS.tst b/functest/opnfv_tests/vnf/ims/ixia/files/Registration_only_LPS.tst new file mode 100644 index 0000000000000000000000000000000000000000..a7bce95a0c03f176629ce4b8d3886ff8578366e2 GIT binary patch literal 491520 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 O7)TgM82DB)@c#fE9UVLX literal 0 HcmV?d00001 diff --git a/functest/opnfv_tests/vnf/ims/ixia/utils/IxChassisUtils.py b/functest/opnfv_tests/vnf/ims/ixia/utils/IxChassisUtils.py new file mode 100644 index 000000000..973e0264d --- /dev/null +++ b/functest/opnfv_tests/vnf/ims/ixia/utils/IxChassisUtils.py @@ -0,0 +1,150 @@ +#!/usr/bin/env python + +# Copyright (c) 2017 IXIA and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 + +import httplib2 +import json +import logging + + +okStates = [200, 201, 202] +states = [ + 'Queued', + 'In Progress', + 'Manual Step Required', + 'Error', + 'Finished', + 'Aborted', + 'Retried', + 'IRebooting', + 'Force Continue', + 'Pending', + ] +notStartedState = 'Not_Started' +errorStates = ['Error', 'Aborted', 'Force Continue'] +finishedStates = ['Manual Step Required', 'Finished'] + +logger = logging.getLogger(__name__) + + +class TestFailedError(Exception): + pass + + +class ChassisRestAPI: + @staticmethod + def postWithPayload(loginUrl, payload=None): + urlHeadersJson = {'content-type': 'application/json'} + try: + h = httplib2.Http('.cache', + disable_ssl_certificate_validation=True) + if payload is None: + logger.debug('POST: ' + loginUrl) + (response, content) = h.request(loginUrl, 'POST', '', + urlHeadersJson) + logger.debug(content) + else: + logger.debug('POST: ' + loginUrl + ' <- Data: ' + str(payload)) + (response, content) = h.request(loginUrl, 'POST', + body=payload, + headers=urlHeadersJson) + logger.debug(response) + logger.debug(content) + except Exception, e: + raise Exception('Got an error code: ', e) + return content + + @staticmethod + def postWithPayloadAndHeaders(loginUrl, urlHeadersJson, + payload=None): + try: + h = httplib2.Http('.cache', + disable_ssl_certificate_validation=True) + if payload is None: + logger.debug('POST: ' + loginUrl) + (response, content) = h.request(loginUrl, 'POST', '', + urlHeadersJson) + else: + logger.debug('POST: ' + loginUrl + ' <- Data: ' + str(payload)) + (response, content) = h.request(loginUrl, 'POST', + body=payload, + headers=urlHeadersJson) + except Exception, e: + raise Exception('Got an error code: ', e) + return content + + @staticmethod + def postOperation(url, apiKey, payload=''): + urlHeadersJson = {'content-type': 'application/json', + 'X-Api-Key': '%s' % str(apiKey)} + try: + h = httplib2.Http('.cache', + disable_ssl_certificate_validation=True) + if payload is None: + logger.debug('POST: ' + url) + (response, content) = h.request(url, 'POST', + json.dumps(payload), + urlHeadersJson) + else: + logger.debug('POST: ' + url + ' <- Data: ' + str(payload)) + (response, content) = h.request(url, 'POST', + json.dumps(payload), + headers=urlHeadersJson) + except Exception, e: + raise Exception('Got an error code: ', e) + return content + + @staticmethod + def patch(url, payload, apiKey): + urlHeadersJson = {'content-type': 'application/json', + 'X-Api-Key': '%s' % str(apiKey)} + try: + h = httplib2.Http('.cache', + disable_ssl_certificate_validation=True) + logger.debug('PATCH: ' + url + ' <-- Attribute: ' + + str(payload)) + (response, content) = h.request(url, 'PATCH', + json.dumps(payload), + urlHeadersJson) + except Exception, e: + + # print (response, content) + + raise Exception('Got an error code: ', e) + return content + + @staticmethod + def delete(url, apiKey): + urlHeadersJson = {'content-type': 'application/json', + 'X-Api-Key': '%s' % str(apiKey)} + try: + h = httplib2.Http('.cache', + disable_ssl_certificate_validation=True) + (response, content) = h.request(url, 'DELETE', '', urlHeadersJson) + logger.debug('DELETE: ' + url) + except Exception, e: + raise Exception('Got an error code: ', e) + if response.status not in okStates: + raise TestFailedError(json.loads(content)['error']) + return json.loads(content) + + @staticmethod + def getWithHeaders(url, apiKey): + urlHeadersJson = {'content-type': 'application/json', + 'X-Api-Key': '%s' % str(apiKey)} + try: + h = httplib2.Http('.cache', + disable_ssl_certificate_validation=True) + logger.debug('GET: ' + url) + (response, content) = h.request(url, 'GET', '', urlHeadersJson) + except Exception, e: + raise Exception('Got an error code: ', e) + if response.status not in okStates: + raise TestFailedError(json.loads(content)['error']) + output = json.loads(content) + return output diff --git a/functest/opnfv_tests/vnf/ims/ixia/utils/IxLoadUtils.py b/functest/opnfv_tests/vnf/ims/ixia/utils/IxLoadUtils.py new file mode 100644 index 000000000..d8003e46a --- /dev/null +++ b/functest/opnfv_tests/vnf/ims/ixia/utils/IxLoadUtils.py @@ -0,0 +1,397 @@ +#!/usr/bin/env python + +# Copyright (c) 2017 IXIA and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 + +import requests +import sys +import time +import logging +from IxRestUtils import formatDictToJSONPayload + +kActionStateFinished = 'finished' +kActionStatusSuccessful = 'Successful' +kActionStatusError = 'Error' +kTestStateUnconfigured = 'Unconfigured' + +logger = logging.getLogger(__name__) + + +def stripApiAndVersionFromURL(url): + + # remove the slash (if any) at the beginning of the url + + if url[0] == '/': + url = url[1:] + + urlElements = url.split('/') + if 'api' in url: + + # strip the api/v0 part of the url + + urlElements = urlElements[2:] + + return '/'.join(urlElements) + + +def waitForActionToFinish(connection, replyObj, actionUrl): + """ + This method waits for an action to finish executing. after a POST request + is sent in order to start an action, The HTTP reply will contain, + in the header, a 'location' field, that contains an URL. + The action URL contains the status of the action. we perform a GET on that + URL every 0.5 seconds until the action finishes with a success. + If the action fails, we will throw an error and + print the action's error message. + """ + + actionResultURL = replyObj.headers.get('location') + if actionResultURL: + actionResultURL = stripApiAndVersionFromURL(actionResultURL) + actionFinished = False + + while not actionFinished: + actionStatusObj = connection.httpGet(actionResultURL) + + if actionStatusObj.state == kActionStateFinished: + if actionStatusObj.status == kActionStatusSuccessful: + actionFinished = True + else: + errorMsg = "Error while executing action '%s'." \ + % actionUrl + + if actionStatusObj.status == kActionStatusError: + errorMsg += actionStatusObj.error + + print errorMsg + + sys.exit(1) + else: + time.sleep(0.1) + + +def performGenericOperation(connection, url, payloadDict): + """ + This will perform a generic operation on the given url, + it will wait for it to finish. + """ + + data = formatDictToJSONPayload(payloadDict) + reply = connection.httpPost(url=url, data=data) + + waitForActionToFinish(connection, reply, url) + + return reply + + +def performGenericPost(connection, listUrl, payloadDict): + """ + This will perform a generic POST method on a given url + """ + + data = formatDictToJSONPayload(payloadDict) + + reply = connection.httpPost(url=listUrl, data=data) + try: + newObjPath = reply.headers['location'] + except: + raise Exception('Location header is not present. \ + Please check if the action was created successfully.') + + newObjID = newObjPath.split('/')[-1] + return newObjID + + +def performGenericDelete(connection, listUrl, payloadDict): + """ + This will perform a generic DELETE method on a given url + """ + + data = formatDictToJSONPayload(payloadDict) + + reply = connection.httpDelete(url=listUrl, data=data) + return reply + + +def performGenericPatch(connection, url, payloadDict): + """ + This will perform a generic PATCH method on a given url + """ + + data = formatDictToJSONPayload(payloadDict) + + reply = connection.httpPatch(url=url, data=data) + return reply + + +def createSession(connection, ixLoadVersion): + """ + This method is used to create a new session. + It will return the url of the newly created session + """ + + sessionsUrl = 'sessions' + data = {'ixLoadVersion': ixLoadVersion} + + sessionId = performGenericPost(connection, sessionsUrl, data) + + newSessionUrl = '%s/%s' % (sessionsUrl, sessionId) + startSessionUrl = '%s/operations/start' % newSessionUrl + + # start the session + + performGenericOperation(connection, startSessionUrl, {}) + + logger.debug('Created session no %s' % sessionId) + + return newSessionUrl + + +def deleteSession(connection, sessionUrl): + """ + This method is used to delete an existing session. + """ + + deleteParams = {} + performGenericDelete(connection, sessionUrl, deleteParams) + + +def uploadFile(connection, url, fileName, uploadPath, overwrite=True): + headers = {'Content-Type': 'multipart/form-data'} + params = {'overwrite': overwrite, 'uploadPath': uploadPath} + + logger.debug('Uploading...') + try: + with open(fileName, 'rb') as f: + resp = requests.post(url, data=f, params=params, + headers=headers) + except requests.exceptions.ConnectionError, e: + raise Exception('Upload file failed. Received connection error. \ + One common cause for this error is the size of the \ + file to be uploaded.The web server sets a limit of 1GB\ + for the uploaded file size. \ + Received the following error: %s' % str(e)) + except IOError, e: + raise Exception('Upload file failed. Received IO error: %s' + % str(e)) + except Exception: + raise Exception('Upload file failed. Received the following error: %s' + % str(e)) + else: + logger.debug('Upload file finished.') + logger.debug('Response status code %s' % resp.status_code) + logger.debug('Response text %s' % resp.text) + + +def loadRepository(connection, sessionUrl, rxfFilePath): + """ + This method will perform a POST request to load a repository. + """ + + loadTestUrl = '%s/ixload/test/operations/loadTest' % sessionUrl + data = {'fullPath': rxfFilePath} + + performGenericOperation(connection, loadTestUrl, data) + + +def saveRxf(connection, sessionUrl, rxfFilePath): + """ + This method saves the current rxf to the disk of the machine on + which the IxLoad instance is running. + """ + + saveRxfUrl = '%s/ixload/test/operations/saveAs' % sessionUrl + rxfFilePath = rxfFilePath.replace('\\', '\\\\') + data = {'fullPath': rxfFilePath, 'overWrite': 1} + + performGenericOperation(connection, saveRxfUrl, data) + + +def runTest(connection, sessionUrl): + """ + This method is used to start the currently loaded test. + After starting the 'Start Test' action, wait for the action to complete. + """ + + startRunUrl = '%s/ixload/test/operations/runTest' % sessionUrl + data = {} + + performGenericOperation(connection, startRunUrl, data) + + +def getTestCurrentState(connection, sessionUrl): + """ + This method gets the test current state. + (for example - running, unconfigured, ..) + """ + + activeTestUrl = '%s/ixload/test/activeTest' % sessionUrl + testObj = connection.httpGet(activeTestUrl) + + return testObj.currentState + + +def getTestRunError(connection, sessionUrl): + """ + This method gets the error that appeared during the last test run. + If no error appeared (the test ran successfully), + the return value will be 'None'. + """ + + activeTestUrl = '%s/ixload/test/activeTest' % sessionUrl + testObj = connection.httpGet(activeTestUrl) + + return testObj.testRunError + + +def waitForTestToReachUnconfiguredState(connection, sessionUrl): + """ + This method waits for the current test to reach the 'Unconfigured' state. + """ + + while getTestCurrentState(connection, sessionUrl) \ + != kTestStateUnconfigured: + time.sleep(0.1) + + +def pollStats(connection, sessionUrl, watchedStatsDict, pollingInterval=4): + """ + This method is used to poll the stats. + Polling stats is per request but this method does a continuous poll. + """ + + statSourceList = watchedStatsDict.keys() + statsDict = {} + + collectedTimestamps = {} + testIsRunning = True + + # check stat sources + + for statSource in statSourceList[:]: + statSourceUrl = '%s/ixload/stats/%s/values' % (sessionUrl, statSource) + statSourceReply = connection.httpRequest('GET', statSourceUrl) + if statSourceReply.status_code != 200: + logger.debug("Warning - Stat source '%s' does not exist. \ + Will ignore it." % statSource) + statSourceList.remove(statSource) + + # check the test state, and poll stats while the test is still running + + while testIsRunning: + + # the polling interval is configurable. + # by default, it's set to 4 seconds + + time.sleep(pollingInterval) + + for statSource in statSourceList: + valuesUrl = '%s/ixload/stats/%s/values' % (sessionUrl, statSource) + + valuesObj = connection.httpGet(valuesUrl) + valuesDict = valuesObj.getOptions() + + # get just the new timestamps - that were not previously + # retrieved in another stats polling iteration + + newTimestamps = [int(timestamp) for timestamp in + valuesDict.keys() if timestamp + not in collectedTimestamps.get(statSource, + [])] + newTimestamps.sort() + + for timestamp in newTimestamps: + timeStampStr = str(timestamp) + + collectedTimestamps.setdefault(statSource, []).append( + timeStampStr) + + timestampDict = statsDict.setdefault(statSource, + {}).setdefault( + timestamp, {}) + + # save the values for the current timestamp, + # and later print them + + logger.info(' -- ') + for (caption, value) in \ + valuesDict[timeStampStr].getOptions().items(): + if caption in watchedStatsDict[statSource]: + logger.info(' %s -> %s' % (caption, value)) + timestampDict[caption] = value + + testIsRunning = getTestCurrentState(connection, sessionUrl) \ + == 'Running' + + logger.debug('Stopped receiving stats.') + return timestampDict + + +def clearChassisList(connection, sessionUrl): + """ + This method is used to clear the chassis list. + After execution no chassis should be available in the chassisListself. + """ + + chassisListUrl = '%s/ixload/chassischain/chassisList' % sessionUrl + deleteParams = {} + performGenericDelete(connection, chassisListUrl, deleteParams) + + +def configureLicenseServer(connection, sessionUrl, licenseServerIp): + """ + This method is used to clear the chassis list. + After execution no chassis should be available in the chassisList. + """ + + chassisListUrl = '%s/ixload/preferences' % sessionUrl + patchParams = {'licenseServer': licenseServerIp} + performGenericPatch(connection, chassisListUrl, patchParams) + + +def addChassisList(connection, sessionUrl, chassisList): + """ + This method is used to add one or more chassis to the chassis list. + """ + + chassisListUrl = '%s/ixload/chassisChain/chassisList' % sessionUrl + + for chassisName in chassisList: + data = {'name': chassisName} + chassisId = performGenericPost(connection, chassisListUrl, data) + + # refresh the chassis + + refreshConnectionUrl = '%s/%s/operations/refreshConnection' \ + % (chassisListUrl, chassisId) + performGenericOperation(connection, refreshConnectionUrl, {}) + + +def assignPorts(connection, sessionUrl, portListPerCommunity): + """ + This method is used to assign ports from a connected chassis + to the required NetTraffics. + """ + + communtiyListUrl = '%s/ixload/test/activeTest/communityList' \ + % sessionUrl + + communityList = connection.httpGet(url=communtiyListUrl) + + for community in communityList: + portListForCommunity = portListPerCommunity.get(community.name) + + portListUrl = '%s/%s/network/portList' % (communtiyListUrl, + community.objectID) + + if portListForCommunity: + for portTuple in portListForCommunity: + (chassisId, cardId, portId) = portTuple + paramDict = {'chassisId': chassisId, 'cardId': cardId, + 'portId': portId} + + performGenericPost(connection, portListUrl, paramDict) diff --git a/functest/opnfv_tests/vnf/ims/ixia/utils/IxRestUtils.py b/functest/opnfv_tests/vnf/ims/ixia/utils/IxRestUtils.py new file mode 100644 index 000000000..63db403b3 --- /dev/null +++ b/functest/opnfv_tests/vnf/ims/ixia/utils/IxRestUtils.py @@ -0,0 +1,192 @@ +#!/usr/bin/env python + +# Copyright (c) 2017 IXIA and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 + +from urlparse import urljoin +import requests + + +def getConnection(server, port): + """ + Gets a Connection instance, that will be used to + make the HTTP requests to the application + """ + connectionUrl = 'http://%s:%s/' % (server, port) + + conn = Connection(connectionUrl, 'v0') + return conn + + +def formatDictToJSONPayload(dictionary): + """ + Converts a given python dict instance to a string + JSON payload that can be sent to a REST API. + """ + jsonPayload = '{' + optionsList = [] + for (key, val) in dictionary.items(): + valStr = str(val) + if type(val) is str: + valStr = '"%s"' % val + if type(val) is bool: + valStr = valStr.lower() + optionsList.append('"%s":%s' % (key, valStr)) + + jsonPayload += ','.join(optionsList) + jsonPayload += '}' + + return jsonPayload + + +class Connection(object): + + """ + Class that executes the HTTP requests to the application instance. + It handles creating the HTTP session and executing HTTP methods. + """ + + kHeaderContentType = 'content-type' + kContentJson = 'application/json' + + def __init__(self, siteUrl, apiVersion): + self.httpSession = None + + self.url = Connection.urljoin(siteUrl, 'api') + self.url = Connection.urljoin(self.url, apiVersion) + + def _getHttpSession(self): + """ + This is a lazy initializer for the HTTP session. + It does not need to be active until it is required. + """ + + if self.httpSession is None: + self.httpSession = requests.Session() + return self.httpSession + + @classmethod + def urljoin(cls, base, end): + """ Join two URLs. If the second URL is absolute, the base is ignored. + + Use this instead of urlparse.urljoin directly so that we can customize + its behavior if necessary. + Currently differs in that it + 1. appends a / to base if not present. + 2. casts end to a str as a convenience + """ + + if base and not base.endswith('/'): + base = base + '/' + return urljoin(base, str(end)) + + def httpRequest(self, method, url='', data='', params={}, headers={}): + """ + Method for making a HTTP request. + The method type (GET, POST, PATCH, DELETE) will be sent as a parameter. + Along with the url and request data. The HTTP response is returned + """ + + headers[Connection.kHeaderContentType] = Connection.kContentJson + + absUrl = Connection.urljoin(self.url, url) + result = self._getHttpSession().request(method, + absUrl, + data=str(data), + params=params, + headers=headers) + return result + + def httpGet(self, url='', data='', params={}, headers={}): + """ + Method for calling HTTP GET. + This will return a WebObject that has the fields returned + in JSON format by the GET operation. + """ + + reply = self.httpRequest('GET', url, data, params, headers) + return _WebObject(reply.json()) + + def httpPost(self, url='', data='', params={}, headers={}): + """ + Method for calling HTTP POST. Will return the HTTP reply. + """ + + return self.httpRequest('POST', url, data, params, headers) + + def httpPatch(self, url='', data='', params={}, headers={}): + """ + Method for calling HTTP PATCH. Will return the HTTP reply. + """ + + return self.httpRequest('PATCH', url, data, params, headers) + + def httpDelete(self, url='', data='', params={}, headers={}): + """ + Method for calling HTTP DELETE. Will return the HTTP reply. + """ + + return self.httpRequest('DELETE', url, data, params, headers) + + +def _WebObject(value): + """ + Method used for creating a wrapper object corresponding to the JSON string + received on a GET request. + """ + + if isinstance(value, dict): + result = WebObject(**value) + elif isinstance(value, list): + result = WebList(entries=value) + else: + result = value + return result + + +class WebList(list): + + """ + Using this class a JSON list will be transformed + in a list of WebObject instances. + """ + + def __init__(self, entries=[]): + """ + Create a WebList from a list of items that + are processed by the _WebObject function + """ + + for item in entries: + self.append(_WebObject(item)) + + +class WebObject(object): + + """ + A WebObject instance will have its fields set to correspond to + the JSON format received on a GET request. + """ + + def __init__(self, **entries): + """ + Create a WebObject instance by providing a dict having a + property - value structure. + """ + + self.jsonOptions = {} + for (key, value) in entries.iteritems(): + webObj = _WebObject(value) + self.jsonOptions[key] = webObj + self.__dict__[key] = webObj + + def getOptions(self): + ''' + Get the JSON dictionary which represents the WebObject Instance + ''' + + return self.jsonOptions diff --git a/functest/opnfv_tests/vnf/ims/ixia/utils/__init__.py b/functest/opnfv_tests/vnf/ims/ixia/utils/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/requirements.txt b/requirements.txt index da1b5ad56..650f61458 100644 --- a/requirements.txt +++ b/requirements.txt @@ -34,5 +34,6 @@ SQLAlchemy<1.1.0,>=1.0.10 # MIT paramiko>=2.0 # LGPLv2.1+ Jinja2!=2.9.0,!=2.9.1,!=2.9.2,!=2.9.3,!=2.9.4,>=2.8 # BSD License (3 clause) urllib3>=1.15.1 # MIT +httplib2>=0.7.5 # MIT oslo.serialization>=1.10.0 # Apache-2.0 oslo.utils>=3.18.0 # Apache-2.0 -- 2.16.6