0693ce0a38b6b96f0ae2026e81cdbf68a1d94556
howto/GeoFeed.md
| ... | ... | @@ -1,52 +1,46 @@ |
| 1 | -A *GeoFeed* is a standardized mechanism for publishing geographic location information about IP address prefixes. It helps network operators associate IP address blocks with real-world locations, enabling better visualization, monitoring, and geolocation accuracy. |
|
| 1 | +# GeoFeed |
|
| 2 | 2 | |
| 3 | -A GeoFeed is especially useful in distributed networks like DN42, where many nodes exist in different physical locations. It can assist in mapping latency, debugging routing, and documenting physical network topology. |
|
| 3 | +A **GeoFeed** is a standardized mechanism for publishing geographic location information about IP address prefixes, helping associate IP blocks with real-world locations for better geolocation accuracy, latency mapping, and network topology documentation. |
|
| 4 | 4 | |
| 5 | -## Standards & Protocol References |
|
| 5 | +## Standards |
|
| 6 | 6 | |
| 7 | -**[RFC 8805](https://www.rfc-editor.org/rfc/rfc8805) - _Format for Self-Published IP Geolocation Feeds_** |
|
| 8 | -- Defines the **format** for GeoFeed files (CSV); |
|
| 9 | -- Geographic mappings associate prefixes with location attributes. |
|
| 10 | -- A GeoFeed file consists of comma-separated values in UTF-8 format. |
|
| 7 | +| RFC | Description | |
|
| 8 | +|-----|-------------| |
|
| 9 | +| [RFC 8805](https://www.rfc-editor.org/rfc/rfc8805) | Defines the CSV-based GeoFeed file format | |
|
| 10 | +| [RFC 9632](https://www.rfc-editor.org/rfc/rfc9632) | Specifies referencing GeoFeeds from RPSL objects via `geofeed:` attribute | |
|
| 11 | +| [RFC 9877](https://www.rfc-editor.org/rfc/rfc9877) | RDAP extension for automated GeoFeed discovery | |
|
| 11 | 12 | |
| 12 | -**[RFC 9632](https://www.rfc-editor.org/rfc/rfc9632) - _Finding and Using GeoFeed Data_** |
|
| 13 | -- Specifies how to reference GeoFeed files from routing databases such as RPSL objects (`inetnum`, `inet6num`); |
|
| 14 | -- Defines how to augment existing routing registry objects with attributes pointing to GeoFeed URLs (e.g., using a `geofeed:` attribute); |
|
| 15 | -- Replaces earlier RFC 9092, improving schema and specification details. |
|
| 13 | +## File Format |
|
| 16 | 14 | |
| 17 | -**[RFC 9877](https://www.rfc-editor.org/rfc/rfc9877) - _RDAP GeoFeed Extension_** |
|
| 18 | -- Defines an extension to RDAP (Registration Data Access Protocol) that allows RDAP servers to disclose GeoFeed URLs for IP address resources; |
|
| 19 | -- Useful for automated discovery of GeoFeed data through registry queries. |
|
| 15 | +A UTF-8 CSV file with the following fields: |
|
| 20 | 16 | |
| 21 | -### Operational Example (RIPE 82) |
|
| 22 | -A concrete operational example of GeoFeed publication and integration within the RIPE Database was presented at RIPE 82 (see presentation below): |
|
| 23 | -https://ripe82.ripe.net/presentations/84-RIPE82_geofeed.pdf |
|
| 24 | - |
|
| 25 | -## GeoFeed file format |
|
| 26 | - |
|
| 27 | -**CSV Example**: |
|
| 28 | 17 | ```csv |
| 29 | 18 | # prefix,country_code,region_code,city,postal |
| 30 | -172.20.0.0/24,FR,FR-ARA,LYON,69123 |
|
| 19 | +172.20.0.0/24,FR,FR-ARA,Lyon,69123 |
|
| 31 | 20 | fd42:1234::/48,FR,,, |
| 32 | -... |
|
| 33 | 21 | ``` |
| 34 | 22 | |
| 35 | -## How to publish a GeoFeed on DN42 ? |
|
| 23 | +Fields follow [ISO 3166](https://en.wikipedia.org/wiki/ISO_3166) conventions. Unused fields may be left empty. |
|
| 24 | + |
|
| 25 | +## Publishing on DN42 |
|
| 36 | 26 | |
| 37 | -1. **Host your GeoFeed file** |
|
| 38 | - The file must be accessible via HTTP or HTTPS (IPv4 and/or IPv6), either on DN42 or on clearnet. |
|
| 39 | -2. **Reference in the Registry** |
|
| 40 | - Add a `geofeed: <url>` attribute in your `inet(6)num` object to point to your hosted GeoFeed. |
|
| 41 | - Example DN42 WHOIS snippet: |
|
| 42 | - ```rpsl |
|
| 43 | - inetnum: 0.0.0.0/0 |
|
| 44 | - geofeed: http://example.dn42/geofeed.csv |
|
| 45 | - ``` |
|
| 27 | +1. **Host the file** — Serve your GeoFeed over HTTP/HTTPS. **Hosting within DN42 is strongly recommended** so that the file remains accessible to all DN42 participants regardless of public internet connectivity, and to keep DN42 infrastructure self-contained. |
|
| 28 | +2. **Reference in the registry** — Add a `geofeed:` attribute to your `inetnum` or `inet6num` object: |
|
| 29 | + |
|
| 30 | +```rpsl |
|
| 31 | +inetnum: 172.20.0.0/24 |
|
| 32 | +geofeed: http://example.dn42/geofeed.csv |
|
| 33 | +``` |
|
| 34 | + |
|
| 35 | +> ⚠️ Hosting your GeoFeed on the public internet means it may be unreachable to peers who access DN42 exclusively through the internal network. Always prefer a DN42-reachable URL. |
|
| 46 | 36 | |
| 47 | 37 | ## Best Practices |
| 48 | -- **Version control**: Store your GeoFeed in Git to track changes and manage updates. |
|
| 49 | -- **Accuracy**: Keep node locations precise enough for mapping, but avoid exposing sensitive private addresses or exact locations. |
|
| 50 | -- **Accessibility**: Ensure your GeoFeed URL is always reachable; update registry references if the file moves. |
|
| 51 | -- **Integration**: Combine GeoFeed with monitoring dashboards, RIPE Atlas probes (clearnet), or Looking Glass tools to visualize node availability over time. |
|
| 52 | -- **Naming Conventions**: Maintain consistent node names and clear comments for easier automation and identification. |
|
| ... | ... | \ No newline at end of file |
| 0 | + |
|
| 1 | +- Ensure the URL remains reachable and update the registry if it changes |
|
| 2 | +- Maintain consistent node names and clear comments for easier automation and identification |
|
| 3 | +- Keep locations accurate |
|
| 4 | +- Store your GeoFeed in version control (e.g., Git) for easier management |
|
| 5 | + |
|
| 6 | +## Further Reading |
|
| 7 | + |
|
| 8 | +- [RIPE 82 GeoFeed presentation](https://ripe82.ripe.net/presentations/84-RIPE82_geofeed.pdf) |
|
| ... | ... | \ No newline at end of file |