Doc says to first enable internal DNS support by enabling dns(-integration) or dns_domain_ports extensions, but devstack enables subnet-dns-publish-fixed-ip instead, which depends on dns-domain-ports, which depends on dns-integration. They're an inheritance chain with subnet-dns-publish-fixed-ip instead of separate extensions.
dns-integration appears to be an implementation agnostic api spec, with an accompanying implementation for ml2. DNS domain ports adds port-domain associations to the api, and subnet-dns-publish-fixed-ip