-
Notifications
You must be signed in to change notification settings - Fork 712
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
show well known services #1082
Comments
I think we should try an approach which would allows us to discover concrete entities, i.e. use AWS APIs, rather then current traffic observation mechanisms inside of machines user owns. One additional benefit of such approach is that we could tie-in things like CloudWatch metrics, and generally extend the horizon. This way we could probably tell more information, e.g. when ELB gave up on routing to an instance due to failing health-checks. |
What are our options here? Reverse-resolving the IP does not give us any info beyond "it's an aws address":
We could have some probe that repeatedly queries for all the names in all the regions. The trouble is that there are loads, and there is some round-robin or other load-balancing going on:
It's hard to know many attempts it would take to extract all the IPs. I suppose it wouldn't take much effort to conduct an experiment. We also do not know how often the info changes. Another alternative is for probes to spy on DNS answers coming into the host, e.g. capture packets on the network interfaces which have a src port of 53 and perhaps some extra filters. Provided the probe is running when applications make their DNS queries, that should allow us to build up a map from looked-up-names to IPs, which we can then use, in reverse, to associate the destination IPs of connections with a service name. The map may need some expiration for entries, though we can probably get away without that for quite a while. Note that DNS TTLs don't help us here since established connections may last well beyond the TTL. I suppose we could simply expire entries for IPs we haven't seen for a while. What happens when we spy resolutions for different names mapping to the same IP? Prime example would be region-less names ("Some services, such as Amazon EC2, let you specify an endpoint that does not include a specific region, for example, https://ec2.amazonaws.com. In that case, AWS routes the endpoint to us-east-1."). I guess we would create nodes that represent the transitive closure of names and IPs reachable by traversing the name/ip relation. This effectively partitions the name/ip relation. |
I was under the impression this contained all the info we need, but it doesn't seem to: |
Interestingly a few AWS IPs do reverse resolve; I can see |
I can't think about a better alternative than what @rade has proposed so I am going to go ahead and implement it. |
I think that this effectively means a classic LRU eviction scheme. I don't think we need to be strict about when exactly to expire the IPs if they are not being used. |
Well-known hosts and/or services, such as Amazon RDS, SQS + others TBC should be displayed as a Host node, separate to 'The Internet' node(s)
The text was updated successfully, but these errors were encountered: