GSLB IPv6 Support


A GSLB service is the representation of a global application. A GSLB service comprises multiple GSLB pools. A GSLB service can switch load across multiple GSLB pools based on the various parameters configured. The services that comprise a GSLB pool are called GSLB pool members. Members can be specified by the followings:

  • The virtual service name
  • An IP address, to specify standalone servers or VIPs defined by third-party load balancers, and/or
  • A DNS name

Prior to Avi Vantage release 20.1.1, only IPv4 address was supported for various components for GSLB. Starting with Avi Vantage release 20.1.1, GSLB supports IPv6 address in addition to IPv4 address. Presently, IPv6 options are available only through Avi CLI and Avi REST API. Avi UI support for IPv6 is not supported yet.

GSLB IPv6 Support

The following are the GSLB components for which IPv6 address support is available:

  • GSLB Pool Member A GSLB service on Avi Vantage is configured with GSLB pool members. Starting with Avi Vantage 20.1.1, you can add IPv6 GSLB pool members. The pool members can be Avi virtual services (with IPv6 addresses) or any IPv6 address, or an FQDN that should be resolved to IPv6 address.

      [​admin:controller]: > configure gslbservice Ipv6demo
      ​[admin: controller]: gslbservice> groups index 1
      ​[admin: controller]: gslbservice:groups> members
      ​[admin: controller]: gslbservice:groups:members> cluster_uuid cluster-dbb9c0ab-425f-48ec-add1-f55b18820e96 vs_uuid virtualservice-cd287a4b-235f-458d-b52b-346be6809a62 ip ::fd00:0:077:40
      ​[admin: controller]: gslbservice:groups:members> ip fd00:0:0:88::5d
      [admin: controller]: gslbservice:groups:members> save
      [admin: controller]: gslbservice:groups> save
      [admin: controller]: gslbservice> save
    • Public IP and Private IP address:
      • A public IP address is an alternative IP address for the pool member. In usual deployments, the VIP in the virtual service is a private IP address; it gets configured in the IP field of the GSLB service.
      • A GSLB pool member can be configured with an IPv6 address or with an IPv4 address. A combination of IPv4 AND IPv6 addresses is not supported.
      • If a member of a pool is configured with a public IP address, then other pool members should also be configured with public IP addresses.

      Login to Avi CLI and use gslbservice mode to configure an IP address for the GSLB pool member, as shown below.

      [admin:controller]: gslbservice:groups:members>
      [admin:controller]: gslbservice:groups:members>
      [admin:controller]: gslbservice:groups:members> ip
      IPv4/IPv6 Address format <x.x.x.x>/<x:x::x>    IP address of the pool member.

    Use the following to configure GSLB pool members with a public IP address .

    [admin:controller]: gslbservice:groups:members> public_ip ip
    IPv4/IPv6 Address format <x.x.x.x>/<x:x::x>   Public IP address of the pool member.
    [admin:controller]: gslbservice:groups:members> public_ip ip 
    • CNAME Changes: The external GSLB pool member is configured with a fully qualified domain name, which is resolved to an IP address by the Avi Controller. The DNS virtual service monitors the resolved address while returning the FQDN(CNAME).

    Starting with Avi Vantage release 20.1.1, CNAME can be resolved to IPv6 address too. Only one IP address type (IPv4 address or IPv6 address) is allowed per CNAME.
    Use the resolve_fqdn_V6 flag from Avi CLI to resolve a CNAME to an IPv6 address. To use the same CNAME with one IPv4 and one IPv6 address, create two pool members with the same CNAME and enable resolve_fqdn_v6 flag for one member.

     [admin:ctrl]: gslbservice:groups> members resolve_fqdn_to_v6
     New object being created

The following CLI output shows the GSLB member configuration with IPv6 options:

  • member IP address: fd00:0:0:78::1
  • Public IP address: deed:0:0:76::1
  • resolve_fqdn_to_v6: Set as true

 [admin:controller]: > show gslbservice gs-1
    | Field                            | Value                                            |
    | uuid                             | gslbservice-4210850f-0a1c-4d83-8ea7-1dff1fd1ce09 |
    | name                             | gs-1                                             |
    | domain_names[1]                  |                                   |
    | domain_names[2]                  |                                   |
    | groups[1]                        |                                                  |
    |   name                           | ny                                               |
    |   priority                       | 10                                               |
    |   algorithm                      | GSLB_ALGORITHM_ROUND_ROBIN                       |
    |   members[1]                     |                                                  |
    |     ip                           | fd00:0:0:78::1                                   |
    |     ratio                        | 1                                                |
    |     enabled                      | True                                             |
    |     resolve_fqdn_to_v6           | True                                          |
    |   enabled                        | True                                             |
    | groups[2]                        |                                                  |
    |   name                           | sf                                               |
    |   priority                       | 12                                               |
    |   algorithm                      | GSLB_ALGORITHM_GEO                               |
    |   members[1]                     |                                                  |
    |     ip                           | fd00:0:0:78::2                                   |
    |     ratio                        | 1                                                |
    |     enabled                      | True                                             |
    |     public_ip                    |                                                  |
    |       ip                         | deed:0:0:76::1                                   |
    |     resolve_fqdn_to_v6           | True                                            |
    |   enabled                        | True                                             |
    | num_dns_ip                       | 1                                                |
    | controller_health_status_enabled | True                                             |
    | health_monitor_scope             | GSLB_SERVICE_HEALTH_MONITOR_ALL_MEMBERS          |
    | enabled                          | True                                             |
    | use_edns_client_subnet           | True                                             |
    | wildcard_match                   | False                                            |
    | site_persistence_enabled         | False                                            |
    | pool_algorithm                   | GSLB_SERVICE_ALGORITHM_PRIORITY                  |
    | min_members                      | 0                                                |
    | resolve_cname                    | False                                            |
    | is_federated                     | True                                             |
    | tenant_ref                       | admin                                            |
 [admin:controller]: >
  • Avi DNS Policy – IPv6 address is supported for DNS policy. IPv6 address is supported for clients in addition to IPv4 addresses.
  • Consistent Hash Load Balancing Algorithm – New connections are distributed across the servers using a hash that is based on a key specified in the field. In the consistent hash load balancing method, traffic is distributed based on the client’s source IP address (a DNS resolver address), unless EDNS processing is ON. In case EDNS processing is enabled, the source IP address is found in the ECS option. Consistent hash IPv6 value is supported now. Use the consistent_hash_v6 field from Avi CLI for using IPv6 values for consistent hash key values.

     [admin:controller]: gslbservice> groups index 1
     [admin:-controler]: gslbservice:groups> algorithm gslb_algorithm_consistent_hash
     consistent_hash_mask     Mask to be applied on client IP for consistent hash algorithm.
     consistent_hash_mask6    Mask to be applied on client IPV6 address for consistent hash algorithm.
     description              User provided information that records member details such as application owner name, contact, etc.
     enabled                  Enable or disable a GSLB service pool.
     fallback_algorithm       The fallback load balancing algorithm used to pick a member when the pool algorithm fails to find a valid member. For instance wh...
     min_health_monitors_up   Minimum number of health monitors in UP state to mark the member UP.
     name                     Name of the GSLB service pool.
     priority                 Priority of this pool of Members. The higher the number, the higher is the priority of 
  • Fallback IP Address – Whenever GSLB fails to lookup for an IPv4 pool member, fallback_ip is returned. Irrespective of whether all IPv6 members are available or not, only if all IPv4 pool members are unavailable, fallback_ip is returned. A new field fallback_ipv6 is introduced to configure a fallback IPv6 address. The fallback IP address can be of type - v4 or v6. The response is based on the query type. The v4 address is configured in fallback_ip and v6 in fallback_ip6 fields.

    The fallback IP address can be of type - v4 or v6. The response is based on the query type. The v4 address is configured in fallback_ip and v6 in fallback_ip6 fields.

  • Geolocation Database Geolocation database is used to load balance GSLB requests based on geolocation. The database files now support both v4 and v6 entries. This helps in extracting v6 entries from the database. This entries are used for the geolocation lookup. IPv6 location format is different from the IPv4 location format. For a custom IPv6 geolocation database, use the location format for the database entry as shown below: ipv6_prefix,mask,latitude,longitude,country/region/city,tag

    The following combination of the database is supported now:

    • IPv4 database only
    • IPv6 database only
    • A combination of V4 and V6 database

For more information, refer to Geolocation-based Load Balancing Algorithm.

  • EDNS Support – EDNS option for a DNS profile is now supported for IPv6 address too.