fabric-testbed / fabfed

FABRIC Tool-based Federation Kit for a Testbed of Testbeds
MIT License
2 stars 0 forks source link

Handle aws to gcp stitching via fabric #143

Open abessiari opened 3 weeks ago

abessiari commented 3 weeks ago

Note: Requires fablib extenstions 1.7.3

abessiari commented 3 weeks ago

Initial support has been checked in Requires fablib extenstions 1.7.3 More testing in progress is needed to make sure other examples work.

abessiari commented 3 weeks ago

On fabric side a single l3vpn is created with both the gcp and aws facility ports.

'sliver': {'Labels': '{"local_name": "aes-native-aws-gcp-XXXXXXXXXX"}',
            'Layer': 'L3',
            'Name': 'aes-native-aws-gcp-fabric_network-0',
            'StitchNode': 'false',
            'Technology': 'AL2S',
            'Type': 'L3VPN',
            'interfaces': [{'Capacities': '{"bw": 50, "mtu": 1460}',
                            'Labels': '{"device_name": "agg4.ashb", '
                                      '"ipv4_subnet": "192.168.1.1/30", '
                                      '"local_name": "Bundle-Ether5"}',
                            'Name': 'Cloud-Facility-GCP-Cloud-Facility-GCP-int',
                            'NodeMap': '["Facility", "GCP,Cloud-Facility-GCP"]',
                            'PeerLabels': '{"account_id": '
                                          '"ee15249e-XXXXXXXXXXXXXX/us-east4/any", '
                                          '"asn": "16550", "bgp_key": '
                                          '"YYYYYYYYYYYYYYY", '
                                          '"ipv4_subnet": "192.168.1.2/30", '
                                          '"local_name": "Google Cloud '
                                          'Platform"}',
                            'StitchNode': 'false',
                            'Type': 'ServicePort'},
                           {'Capacities': '{"bw": 50, "mtu": 9001}',
                            'Labels': '{"device_name": "agg3.ashb", '
                                      '"ipv4_subnet": "192.168.1.1/30", '
                                      '"local_name": "TenGigE0/0/0/11/3"}',
                            'Name': 'Cloud-Facility-AWS-Cloud-Facility-AWS-int',
                            'NodeMap': '["Facility", "AWS,Cloud-Facility-AWS"]',
                            'PeerLabels': '{"account_id": "XXXXXXXXXX", '
                                          '"asn": "64512", "bgp_key": '
                                          '"YYYYYYYYYYYYYYYYYYY", '
                                          '"ipv4_subnet": "192.168.1.2/30", '
                                          '"local_name": "AWS", "region": '
                                          '"us-east-1"}',
                            'StitchNode': 'false',
                            'Type': 'ServicePort'}]},
 'sliver_id': '2d8ba2e7-d115-4969-a19a-6524c64e75cb',
 'sliver_type': 'NetworkServiceSliver',
abessiari commented 3 weeks ago

The config file is under examples/demos

resource:
  - network:
      - gcp_net:
          provider: '{{ gcp.gcp_provider }}'
          name: gcp-net
          layer3: "{{ layer3.gcp_layer }}"
          peering: "{{ peering.gcp_peering }}"

      - fabric_network:
          provider: '{{ fabric.fabric_provider }}'
          peering: [ "{{ peering.gcp_peering }}", "{{ peering.aws_peering }}" ]
          count: 1
          stitch_with:
          - network: '{{ network.gcp_net }}'
            stitch_option:
                group_name: GCP
          - network: '{{ network.aws_net }}'
            stitch_option:
                device_name: agg3.ashb

      - aws_net:
          provider: '{{ aws.aws_provider }}'
          layer3: "{{ layer3.aws_layer }}"
          peering: "{{ peering.aws_peering }}"
abessiari commented 1 week ago

Seeing issues with fablib 1.7.3 dx connection is named using the gcp pairing key. 1.6.4 is fine. Looks like we need some changes in Fabric Control Framework (sliver.localname) and possibly in AM handler ...

abessiari commented 1 week ago

Tested after Komal's change in CF sliver.localname=slicename