Commit 9a905796 authored by Pablo Armingol's avatar Pablo Armingol
Browse files

L3NM D3.2 evaluation changes

parent e87b4748
Loading
Loading
Loading
Loading
+99 −143
Original line number Diff line number Diff line
@@ -29,109 +29,109 @@ def setup_config_rules(
    network_interface_desc    = '{:s}-NetIf'.format(service_uuid)
    network_subinterface_desc = '{:s}-NetSubIf'.format(service_uuid)

    mtu                 = json_settings.get('mtu',                 1450 )    # 1512
    mtu                 = 3000   # 1512
    #address_families    = json_settings.get('address_families',    []   )    # ['IPV4']
    bgp_as              = json_settings.get('bgp_as',              0    )    # 65000
    bgp_route_target    = json_settings.get('bgp_route_target',    '0:0')    # 65000:333
    bgp_as              = json_settings.get('bgp_as',              65000    )    # 65000
    bgp_route_target    = json_settings.get('bgp_route_target',    '65000:123')    # 65000:333

    #router_id           = json_endpoint_settings.get('router_id',           '0.0.0.0')  # '10.95.0.10'
    router_id           = json_endpoint_settings.get('router_id',           '0.0.0.0')  # '10.95.0.10'
    route_distinguisher = json_endpoint_settings.get('route_distinguisher', '0:0'    )  # '60001:801'
    sub_interface_index = json_endpoint_settings.get('sub_interface_index', 0        )  # 1
    vlan_id             = json_endpoint_settings.get('vlan_id',             1        )  # 400
    address_ip          = json_endpoint_settings.get('address_ip',          '0.0.0.0')  # '2.2.2.1'
    address_prefix      = json_endpoint_settings.get('address_prefix',      24       )  # 30
    policy_import       = json_endpoint_settings.get('policy_1',      '2'              )  # 2
    policy_export       = json_endpoint_settings.get('policy_2',      '7'              )  # 30

    if_subif_name       = '{:s}.{:d}'.format(endpoint_uuid, vlan_id)

    json_config_rules = [
        json_config_rule_set(
            '/network_instance[{:s}]'.format(network_instance_name), {
                'name': network_instance_name, 'description': network_interface_desc, 'type': 'L3VRF',
                'name': network_instance_name, 
                'description': network_interface_desc, 
                'type': 'L3VRF',
                'route_distinguisher': route_distinguisher,
                #'router_id': router_id, 'address_families': address_families,
        }),
        json_config_rule_set(
            '/interface[{:s}]'.format(endpoint_uuid), {
                'name': endpoint_uuid, 'description': network_interface_desc, 'mtu': mtu,
        }),
        json_config_rule_set(
            '/interface[{:s}]/subinterface[{:d}]'.format(endpoint_uuid, sub_interface_index), {
                'name': endpoint_uuid, 'index': sub_interface_index,
                'description': network_subinterface_desc, 'vlan_id': vlan_id,
                'address_ip': address_ip, 'address_prefix': address_prefix,
        }),
        json_config_rule_set(
            '/network_instance[{:s}]/interface[{:s}]'.format(network_instance_name, if_subif_name), {
                'name': network_instance_name, 'id': if_subif_name, 'interface': endpoint_uuid,
                'subinterface': sub_interface_index,
        }),
        json_config_rule_set(
            '/network_instance[{:s}]/protocols[BGP]'.format(network_instance_name), {
                'name': network_instance_name, 'identifier': 'BGP', 'protocol_name': 'BGP', 'as': bgp_as,
                'name': network_instance_name, 
                'protocol_name': 'BGP', 
                'identifier': 'BGP', 
                'as': bgp_as,
                'router_id': router_id, 
        }),
         json_config_rule_set(
            '/network_instance[{:s}]/table_connections[STATIC][BGP][IPV4]'.format(network_instance_name), {
                'name': network_instance_name, 'src_protocol': 'STATIC', 'dst_protocol': 'BGP',
                'address_family': 'IPV4', #'default_import_policy': 'REJECT_ROUTE',
            '/network_instance[{:s}]/protocols[DIRECTLY_CONNECTED]'.format(network_instance_name), {
                'name': network_instance_name, 
                'identifier': 'DIRECTLY_CONNECTED', 
                'protocol_name': 'DIRECTLY_CONNECTED',
        }),
        json_config_rule_set(
            '/network_instance[{:s}]/table_connections[DIRECTLY_CONNECTED][BGP][IPV4]'.format(
                network_instance_name), {
                'name': network_instance_name, 'src_protocol': 'DIRECTLY_CONNECTED', 'dst_protocol': 'BGP',
                'address_family': 'IPV4', #'default_import_policy': 'REJECT_ROUTE',
            '/interface[{:s}]/subinterface[0]'.format(if_subif_name), {
                'name': if_subif_name, 
                'type':'l3ipvlan',
                'mtu': mtu,
                'index': 0,
                'description': network_subinterface_desc, 
                'vlan_id': vlan_id,
                'address_ip': address_ip, 
                'address_prefix': address_prefix,
        }),
        json_config_rule_set(
            '/routing_policy/bgp_defined_set[{:s}_rt_import]'.format(network_instance_name), {
                'ext_community_set_name': '{:s}_rt_import'.format(network_instance_name),
            '/network_instance[{:s}]/interface[{:s}]'.format(network_instance_name, if_subif_name), {
                'name': network_instance_name, 
                'id': if_subif_name, 
                'interface': if_subif_name,
                'subinterface': 0,
        }), 
        json_config_rule_set(
            '/routing_policy/bgp_defined_set[{:s}_rt_import][route-target:{:s}]'.format(
            '/routing_policy/bgp_defined_set[{:s}_rt_import][{:s}]'.format(
                network_instance_name, bgp_route_target), {
                'ext_community_set_name': '{:s}_rt_import'.format(network_instance_name),
                'ext_community_member'  : 'route-target:{:s}'.format(bgp_route_target),
        }), 
        json_config_rule_set(
            '/routing_policy/policy_definition[{:s}_import]'.format(network_instance_name), {
                'policy_name': '{:s}_import'.format(network_instance_name),
        }),
        json_config_rule_set(
            '/routing_policy/policy_definition[{:s}_import]/statement[{:s}]'.format(
                network_instance_name, '3'), {
                'policy_name': '{:s}_import'.format(network_instance_name), 'statement_name': '3',
            '/routing_policy/policy_definition[{:s}_import]/statement[3]'.format(
                network_instance_name), {
                'policy_name': policy_import, 
                'statement_name': '3',
                'ext_community_set_name': '{:s}_rt_import'.format(network_instance_name),
                'match_set_options': 'ANY', 'policy_result': 'ACCEPT_ROUTE',
                'policy_result': 'ACCEPT_ROUTE',
        }), 
        json_config_rule_set(
            # pylint: disable=duplicate-string-formatting-argument
            '/network_instance[{:s}]/inter_instance_policies[{:s}_import]'.format(
                network_instance_name, network_instance_name), {
                'name': network_instance_name, 'import_policy': '{:s}_import'.format(network_instance_name),
        }),
        json_config_rule_set(
            '/routing_policy/bgp_defined_set[{:s}_rt_export]'.format(network_instance_name), {
                'ext_community_set_name': '{:s}_rt_export'.format(network_instance_name),
                network_instance_name, policy_import), {
                'name': network_instance_name, 
                'import_policy': policy_import,
        }), 
        json_config_rule_set(
            '/routing_policy/bgp_defined_set[{:s}_rt_export][route-target:{:s}]'.format(
            '/routing_policy/bgp_defined_set[{:s}_rt_export][{:s}]'.format(
                network_instance_name, bgp_route_target), {
                'ext_community_set_name': '{:s}_rt_export'.format(network_instance_name),
                'ext_community_member'  : 'route-target:{:s}'.format(bgp_route_target),
        }), 
        json_config_rule_set(
            '/routing_policy/policy_definition[{:s}_export]'.format(network_instance_name), {
                'policy_name': '{:s}_export'.format(network_instance_name),
        }),
        json_config_rule_set(
            '/routing_policy/policy_definition[{:s}_export]/statement[{:s}]'.format(
                network_instance_name, '3'), {
                'policy_name': '{:s}_export'.format(network_instance_name), 'statement_name': '3',
            '/routing_policy/policy_definition[{:s}_export]/statement[3]'.format(
                network_instance_name), {
                'policy_name': policy_export, 
                'statement_name': '3',
                'ext_community_set_name': '{:s}_rt_export'.format(network_instance_name),
                'match_set_options': 'ANY', 'policy_result': 'ACCEPT_ROUTE',
                'policy_result': 'ACCEPT_ROUTE',
        }), 
        json_config_rule_set(
            # pylint: disable=duplicate-string-formatting-argument
            '/network_instance[{:s}]/inter_instance_policies[{:s}_export]'.format(
                network_instance_name, network_instance_name), {
                'name': network_instance_name, 'export_policy': '{:s}_export'.format(network_instance_name),
                network_instance_name, policy_export), {
                'name': network_instance_name, 
                'export_policy': policy_export,
        }),  
        json_config_rule_set(
            '/network_instance[{:s}]/table_connections[DIRECTLY_CONNECTED][BGP][IPV4]'.format(
                network_instance_name), {
                'name': network_instance_name, 
                'src_protocol': 'DIRECTLY_CONNECTED', 
                'dst_protocol': 'BGP',
                'address_family': 'IPV4',
                'default_import_policy': 'ACCEPT_ROUTE',
        }),
    ]

@@ -145,101 +145,57 @@ def teardown_config_rules(
    json_settings          : Dict = {} if service_settings  is None else service_settings.value
    json_endpoint_settings : Dict = {} if endpoint_settings is None else endpoint_settings.value

    #mtu                 = json_settings.get('mtu',                 1450 )    # 1512
    service_short_uuid        = service_uuid.split('-')[-1]
    network_instance_name     = '{:s}-NetInst'.format(service_short_uuid)
    #network_interface_desc    = '{:s}-NetIf'.format(service_uuid)
    #network_subinterface_desc = '{:s}-NetSubIf'.format(service_uuid)

    #mtu                 = json_settings.get('mtu',                 3000 )    # 1512
    #address_families    = json_settings.get('address_families',    []   )    # ['IPV4']
    #bgp_as              = json_settings.get('bgp_as',              0    )    # 65000
    bgp_route_target    = json_settings.get('bgp_route_target',    '0:0')    # 65000:333
    #bgp_as              = json_settings.get('bgp_as',              65000    )    # 65000
    bgp_route_target    = json_settings.get('bgp_route_target',    '65000:123')    # 65000:333

    #router_id           = json_endpoint_settings.get('router_id',           '0.0.0.0')  # '10.95.0.10'
    #route_distinguisher = json_endpoint_settings.get('route_distinguisher', '0:0'    )  # '60001:801'
    sub_interface_index = json_endpoint_settings.get('sub_interface_index', 0        )  # 1
    vlan_id             = json_endpoint_settings.get('vlan_id',             1        )  # 400
    #address_ip          = json_endpoint_settings.get('address_ip',          '0.0.0.0')  # '2.2.2.1'
    #address_prefix      = json_endpoint_settings.get('address_prefix',      24       )  # 30
    policy_import       = json_endpoint_settings.get('policy_1',      2              )  # 2
    policy_export       = json_endpoint_settings.get('policy_2',      7              )  # 30

    if_subif_name       = '{:s}.{:d}'.format(endpoint_uuid, vlan_id)
    service_short_uuid        = service_uuid.split('-')[-1]
    network_instance_name     = '{:s}-NetInst'.format(service_short_uuid)
    #network_interface_desc    = '{:s}-NetIf'.format(service_uuid)
    #network_subinterface_desc = '{:s}-NetSubIf'.format(service_uuid)


    json_config_rules = [
        json_config_rule_delete(
            '/network_instance[{:s}]/interface[{:s}]'.format(network_instance_name, if_subif_name), {
                'name': network_instance_name, 'id': if_subif_name,
        }),
        json_config_rule_delete(
            '/interface[{:s}]/subinterface[{:d}]'.format(endpoint_uuid, sub_interface_index), {
                'name': endpoint_uuid, 'index': sub_interface_index,
        }),
        json_config_rule_delete(
            '/interface[{:s}]'.format(endpoint_uuid), {
                'name': endpoint_uuid,
        }),
        json_config_rule_delete(
            '/network_instance[{:s}]/table_connections[DIRECTLY_CONNECTED][BGP][IPV4]'.format(
                network_instance_name), {
                'name': network_instance_name, 'src_protocol': 'DIRECTLY_CONNECTED', 'dst_protocol': 'BGP',
                'address_family': 'IPV4',
        }),
        json_config_rule_delete(
            '/network_instance[{:s}]/table_connections[STATIC][BGP][IPV4]'.format(network_instance_name), {
                'name': network_instance_name, 'src_protocol': 'STATIC', 'dst_protocol': 'BGP',
                'address_family': 'IPV4',
        }),
        json_config_rule_delete(
            '/network_instance[{:s}]/protocols[BGP]'.format(network_instance_name), {
                'name': network_instance_name, 'identifier': 'BGP', 'protocol_name': 'BGP',
        }),
        json_config_rule_delete(
            # pylint: disable=duplicate-string-formatting-argument
            '/network_instance[{:s}]/inter_instance_policies[{:s}_import]'.format(
                network_instance_name, network_instance_name), {
                'name': network_instance_name, 
                'src_protocol': 'DIRECTLY_CONNECTED', 
                'dst_protocol': 'BGP',
                'address_family': 'IPV4',
        }),
        json_config_rule_delete(
            '/routing_policy/policy_definition[{:s}_import]/statement[{:s}]'.format(
                network_instance_name, '3'), {
                'policy_name': '{:s}_import'.format(network_instance_name), 'statement_name': '3',
        }),
        json_config_rule_delete(
            '/routing_policy/policy_definition[{:s}_import]'.format(network_instance_name), {
                'policy_name': '{:s}_import'.format(network_instance_name),
        json_config_rule_delete('/routing_policy/policy_definition[{:s}_import]/statement[3]'.format(
            network_instance_name),{
                'policy_name' : policy_import,
        }),
        json_config_rule_delete(
            '/routing_policy/bgp_defined_set[{:s}_rt_import][route-target:{:s}]'.format(

        json_config_rule_delete('/routing_policy/bgp_defined_set[{:s}_rt_import][{:s}]'.format(
            network_instance_name,bgp_route_target),{
                'ext_community_set_name': '{:s}_rt_import'.format(network_instance_name),
                'ext_community_member'  : 'route-target:{:s}'.format(bgp_route_target),
        }),
        json_config_rule_delete(
            '/routing_policy/bgp_defined_set[{:s}_rt_import]'.format(network_instance_name), {
                'ext_community_set_name': '{:s}_rt_import'.format(network_instance_name),
        }),
        json_config_rule_delete(
            # pylint: disable=duplicate-string-formatting-argument
            '/network_instance[{:s}]/inter_instance_policies[{:s}_export]'.format(
                network_instance_name, network_instance_name), {
                'name': network_instance_name,
        }),
        json_config_rule_delete(
            '/routing_policy/policy_definition[{:s}_export]/statement[{:s}]'.format(
                network_instance_name, '3'), {
                'policy_name': '{:s}_export'.format(network_instance_name), 'statement_name': '3',
        }),
        json_config_rule_delete(
            '/routing_policy/policy_definition[{:s}_export]'.format(network_instance_name), {
                'policy_name': '{:s}_export'.format(network_instance_name),
        json_config_rule_delete('/routing_policy/policy_definition[{:s}_export]/statement[3]'.format(
            network_instance_name),{
                'policy_name' : policy_export,
        }),
        json_config_rule_delete(
            '/routing_policy/bgp_defined_set[{:s}_rt_export][route-target:{:s}]'.format(

        json_config_rule_delete('/routing_policy/bgp_defined_set[{:s}_rt_import][{:s}]'.format(
            network_instance_name,bgp_route_target),{
                'ext_community_set_name': '{:s}_rt_export'.format(network_instance_name),
                'ext_community_member'  : 'route-target:{:s}'.format(bgp_route_target),
        }),
        json_config_rule_delete(
            '/routing_policy/bgp_defined_set[{:s}_rt_export]'.format(network_instance_name), {
                'ext_community_set_name': '{:s}_rt_export'.format(network_instance_name),
            '/interface[{:s}]'.format(if_subif_name), {
                'name': if_subif_name,
        }),
        json_config_rule_delete(
            '/network_instance[{:s}]'.format(network_instance_name), {
+31 −11
Original line number Diff line number Diff line
@@ -31,6 +31,11 @@ from .Parameters import Parameters

LOGGER = logging.getLogger(__name__)

ROUTER_ID = {
    'R149': '5.5.5.5',
    'R155': '5.5.5.1',
}

class RequestGenerator:
    def __init__(self, parameters : Parameters) -> None:
        self._parameters = parameters
@@ -205,8 +210,10 @@ class RequestGenerator:
            ]
            vlan_id = num_request % 1000
            circuit_id = '{:03d}'.format(vlan_id)
            src_router_id = '10.0.0.{:d}'.format(int(src_device_uuid.replace('R', '')))
            dst_router_id = '10.0.0.{:d}'.format(int(src_device_uuid.replace('R', '')))
            src_router_id = ROUTER_ID.get(src_device_uuid)
            if src_router_id is None: src_router_id = '10.0.0.{:d}'.format(int(src_device_uuid.replace('R', '')))
            dst_router_id = ROUTER_ID.get(dst_device_uuid)
            if dst_router_id is None: dst_router_id = '10.0.0.{:d}'.format(int(dst_device_uuid.replace('R', '')))
            config_rules = [
                json_config_rule_set('/settings', {
                    'mtu': 1512
@@ -234,35 +241,48 @@ class RequestGenerator:
                json_constraint_custom('bandwidth[gbps]', '10.0'),
                json_constraint_custom('latency[ms]',     '20.0'),
            ]
            vlan_id = num_request % 1000
            bgp_as = 60000 + (num_request % 10000)
            
            bgp_as = 65000 + (num_request % 10000)

            
            vlan_id = num_request % 100 +100
            x= num_request % 255
            y= num_request % 25 *  num_request % 10
            bgp_route_target = '{:5d}:{:03d}'.format(bgp_as, 333)
            route_distinguisher = '{:5d}:{:03d}'.format(bgp_as, vlan_id)
            src_router_id = '10.0.0.{:d}'.format(int(src_device_uuid.replace('R', '')))
            dst_router_id = '10.0.0.{:d}'.format(int(src_device_uuid.replace('R', '')))
            src_address_ip = '.'.join([src_device_uuid.replace('R', ''), '0'] + src_endpoint_uuid.split('/'))
            dst_address_ip = '.'.join([dst_device_uuid.replace('R', ''), '0'] + dst_endpoint_uuid.split('/'))
            src_router_id = ROUTER_ID.get(src_device_uuid)
            if src_router_id is None: src_router_id = '10.0.0.{:d}'.format(int(src_device_uuid.replace('R', '')))
            dst_router_id = ROUTER_ID.get(dst_device_uuid)
            if dst_router_id is None: dst_router_id = '10.0.0.{:d}'.format(int(dst_device_uuid.replace('R', '')))
            src_address_ip = '10.{:d}.{:d}.{:d}'.format(x,y,int(src_device_uuid.replace('R', '')))
            dst_address_ip = '10.{:d}.{:d}.{:d}'.format(y,x,int(dst_device_uuid.replace('R', '')))
            policy_R1 = '7'
            policy_R2 = '2'
            
            config_rules = [
                json_config_rule_set('/settings', {
                    'mtu'             : 1512,
                    'bgp_as'          : bgp_as,
                    'bgp_route_target': bgp_route_target,
                }),
                json_config_rule_set('/device[{:s}]/endpoint[{:s}]/settings'.format(src_device_uuid, src_endpoint_uuid), {
                    'router_id'          : src_router_id,
                    'route_distinguisher': route_distinguisher,
                    'sub_interface_index': vlan_id,
                    'vlan_id'            : vlan_id,
                    'address_ip'         : src_address_ip,
                    'address_prefix'     : 16,
                    'policy_1'           : policy_R1,
                    'policy_2'           : policy_R2,

                }),
                json_config_rule_set('/device[{:s}]/endpoint[{:s}]/settings'.format(dst_device_uuid, dst_endpoint_uuid), {
                    'router_id'          : dst_router_id,
                    'route_distinguisher': route_distinguisher,
                    'sub_interface_index': vlan_id,
                    'vlan_id'            : vlan_id,
                    'address_ip'         : dst_address_ip,
                    'address_prefix'     : 16,
                    'policy_1'           : policy_R2,
                    'policy_2'           : policy_R1,

                }),
            ]
            return json_service_l3nm_planned(
+4 −4
Original line number Diff line number Diff line
@@ -24,13 +24,13 @@ LOGGER = logging.getLogger(__name__)
def main():
    LOGGER.info('Starting...')
    parameters = Parameters(
        num_requests = 100,
        num_requests = 1,
        request_types = [
            RequestType.SERVICE_L2NM,
            #RequestType.SERVICE_L2NM,
            RequestType.SERVICE_L3NM,
            #RequestType.SERVICE_TAPI,
            RequestType.SLICE_L2NM,
            RequestType.SLICE_L3NM,
            #RequestType.SLICE_L2NM,
            #RequestType.SLICE_L3NM,
        ],
        offered_load  = 50,
        holding_time  = 10,