Let's explore the following scenario. There is an asymmetrical feature F, with a clear client side and provider side. The client side of the protocol is activated by feature X. The provider side of the protocol is activated by feature Y.
Some nodes want to be a client, but not a provider, and want to connect only to nodes that are providers of this feature. They obviously turn on feature X. Since they are only clients of the feature, they cannot turn on feature Y, so how do they require their peers to support feature Y?
We can't rely on setting X mandatory, because that would only work if providers activate X. But providers may want to only be providers of the feature, and not clients of it.
AFAICT, this is not possible to express today with feature bits.
Feature 60/61: option_needs_service_f
("client side feature")
That technically meets your needs. If a node sets bit 60, then a peer who doesn't understand it, or support it, will close the connection after init.
Now, that doesn't help our peer find servers, short of trying to connect to everyone and see who doesn't hang up! It also means, if it sets bit 61, it won't know whether it will get service_f or not.
So we can add another bit, ootion_provides_service_f 62/63.
Note why this works: the spec is asymmetric, because it only specifies the receiving side: