Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding support for fully managed name resolution APIs or as app-level toggle #42185

Open
mjsabby opened this issue Sep 13, 2020 · 5 comments
Open
Labels
api-suggestion Early API idea and discussion, it is NOT ready for implementation area-System.Net
Milestone

Comments

@mjsabby
Copy link
Contributor

mjsabby commented Sep 13, 2020

DNS resolution is something that is different between different distros and platforms that NET supports.

While most Linux distributions use /etc/resolv.conf, not all do (Android). And even when they do use /etc/resolv.conf they seem to have different capabilities. For example, this Kubernetes issue talks about a workaround that can be done in in glibc-based distributions but not on Alpine which is musl-libc based because of a missing feature in musl-libc.

As I alluded to earlier, Android is its own thing, and does things differently. It queries the data over UDS (/dev/socket/dnsproxyd). This is actually a good thing for the user, so whenever we port to Android it makes sense to have the default be OS provided capability.

Having a built-in capability (that is perhaps not the default) to have portability across platforms and distros will be very valuable.

In fact, the Go language ecosystem has already done this and were able to effectively mitigate the aforementioned Kubernetes bug by making a change in their resolver code. golang/go@dbc1703

Furthermore, with the recent ConnectCallback feature in SocketsHttpHandler, a new API to do DNS resolutions (or a config switch) will work nicely.

I haven't yet made up my mind on whether this as an app-level config/setting is more valuable than just a new API or capability. It could be argued that the app-level config/setting is more valuable because it will just work with existing code. Something to discuss ...

@Dotnet-GitSync-Bot
Copy link
Collaborator

I couldn't figure out the best area label to add to this issue. If you have write-permissions please help me learn by adding exactly one area label.

@Dotnet-GitSync-Bot Dotnet-GitSync-Bot added the untriaged New issue has not been triaged by the area owner label Sep 13, 2020
@ghost
Copy link

ghost commented Sep 14, 2020

Tagging subscribers to this area: @dotnet/ncl
See info in area-owners.md if you want to be subscribed.

@karelz karelz added the api-suggestion Early API idea and discussion, it is NOT ready for implementation label Sep 15, 2020
@scalablecory scalablecory added this to the Future milestone Sep 17, 2020
@scalablecory scalablecory removed the untriaged New issue has not been triaged by the area owner label Sep 17, 2020
@scalablecory
Copy link
Contributor

It's worth exploring, but needs a good bit of prototyping.

Keep in mind that name resolution is more than just DNS -- the Dns class (or rather, getaddrinfo that it calls) can query over a variety of different locations.

@wfurt
Copy link
Member

wfurt commented Sep 17, 2020

It may not be easy to cover al the platform differences. This was discussed before as some of the API do not offer all the details - like record TTL.

@geoffkizer
Copy link
Contributor

This seems like a good candidate for developing something standalone and then considering adding it in-box at some point.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api-suggestion Early API idea and discussion, it is NOT ready for implementation area-System.Net
Projects
None yet
Development

No branches or pull requests

7 participants