Allowed values today are: "eth_src", "eth_dst", "ip_proto" (ECMP routes only), "ip_src", "ip_dst", "tp_src" and "tp_dst".
Unit and system tests suggest that ip_src and ip_dst supposed to work for both IPv4 and IPv6. But that is not the case, because they are just translated to flow fields, where ip_src/dst is an alias for nw_src/dst which is IPv4. So, if someone wants to load balance based on IPv6 addresses, they can not.
The system tests that cover hash fields for load balancing use a single network namespace as a source, so the source IP and MAC are always the same, as well as destination IP, which is a virtual IP of the load balancer. So, this case is not actually tested. The tests are using ip_* fields in the IPv6 tests as if they represented ipv6_* fields.
I think, this breaks support for IPv6 services with affinity timeout in ovn-kubernetes, as they are load balancing exclusively on ip_src and ip_dst, i.e. there will be no load balancing.