Git Product home page Git Product logo

device-identification-standard's Introduction

Device Identification Standard

An open and standardized way to name and identify your devices like network equipment, network tools, hypervisors, looking glasses and PTRs.

Introduction

Always struggling with naming your routers, switches and looking glasses? Standardize them now using this easy-to-use naming convention. The goal of this standard is to be a go-to set of rules that can be applied for your network deployment, allowing you not to worry about ending up inconsistent. It also offers all people involved, including customers to have some useful hostnames for example. Remember that everything is optional and you are free to fork it and customize it to your liking. We recommend you to not use . in hostnames, as they are trimmed when you log in into a server/switch like: [root@edge1 ~]#.

Changelog

Version Changes
DIS-1 Initial release.

Syntax

Devices

The general syntax for equipment like routers, switches and servers is as follows:

{NAME}-[FACILITY]-{CITY}-{COUNTRY}
Tag Required Description
[FACILITY] Optional Short name for facility. Could be useful for networks with several point-of-presences in a metro to have a distinction between facilities.
{NAME} Name for the devices, like router, switch, edge, but it may also be a name for a specific device. Usually includes a number as well.
{CITY} Code based on UN/LOCODE, more about this below.
{COUNTRY} Code based on the well-known ISO 3166-1-alpha-2 standard, this is also a part of the UN/LOCODE.

Examples: edge1-ams-nl, core2-doi-nl, colosseum-rom-it, reactor-che-ua or with the optional facility tag: edge2-imdc-haa-nl

Hostnames

Of course, most of these devices must have a hostname as well, which may be shown in traceroutes as hops. It's based on the Devices syntax, but with an additional hostname and optionally an interface tag:

[CIRCUIT].[INTERFACE].{NAME}-[FACILITY]-{CITY}-{COUNTRY}.{DOMAIN}.{TLD}
Tag Required Description
[CIRCUIT] Optional Freeform circuit identification.
[INTERFACE] Optional Interface name as addition with identifier.
{DOMAIN} Domain name related to your business.
{TLD} TLD is usually a .NET domain, but you're free to use whatever you want.

Interface Syntax

Type Description
et# Ethernet interfaces.
lo# Loopback interfaces.
ae# Juniper aggregated ethernet.
lag# Vendor agnostic lag/port channel.
vlan# VLAN interfaces.

Example: edge1-ams-nl.as123123.net, or with interface vlan1337.edge1-ams-nl.as123123.net, or with the whole shebang cust9.vlan1337.edge1-ams-nl.as123123.net

TXT

For network operators with a lot of point-of-presences, it may be useful to offer TXT responses on hostnames showing the location more extensively including geo-location data. We have a little scheme for this as well:

[FACILITY-ID]|{CITY}|{COUNTRY}|{LATITUDE,LONGITUDE}
Tag Required Description
[FACILITY-ID] 🟧 Facility ID from PeeringDB, or 0 if you do not want to use it.
{CITY} City name written in full.
{COUNTRY} Country name written in full.
{LATITUDE,LONGITUDE} Consists of the latitude and longitude of the location.

Example: Let's take the popular facility Nikhef in Amsterdam as example: nikhef-ams-nl-core9.as123123.net. A TXT query towards this hostname should respond with 29179|Amsterdam|Netherlands|52.356268940475466,4.951248897980831 like shown here:

; <<>> DiG 9.10.6 <<>> txt nikhef-ams-nl-core9.as123123.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25287
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;nikhef-ams-nl-core9.as123123.net.			IN	TXT

;; ANSWER SECTION:
nikhef-ams-nl-core9.as123123.net.		300	IN	TXT	"29179|Amsterdam|Netherlands|52.356268940475466,4.951248897980831"

;; Query time: 33 msec
;; SERVER: 2001:4860:4860::8888#53(2001:4860:4860::8888)
;; WHEN: Mon Feb 12 21:56:49 CET 2024
;; MSG SIZE  rcvd: 243

Looking Glasses

In our experience (maintaining a popular Looking Glass project) we see many different deployments of looking glasses, which may be confusing. The syntax for this is:

LG-{CITY}-{COUNTRY}.{DOMAIN}.{TLD}

Example: Assume a looking glass for a network in Amsterdam, this would end up like: lg-nl-ams.as123123.net.

Please note that this hostname must point towards an IP within your network, do not put a looking glass behind a reverse proxy like Cloudflare (yes this happens!).

Hypervisors

To make this standard more complete, we've also a scheme for hypervisor nodes. This is a rather simple syntax with optional city or country tag, depending on your business/marketing. For those who have different categories we have the custom tag, as used in the last example below.

NODE#-[CUSTOM]-[CITY]-[COUNTRY].{DOMAIN}.{TLD}

Examples: node1-ams-nl.cloud123.net or node2-ams.cloud123.net or node3-premium-nl.cloud123.net

Codes

City codes are based on United Nations Code for Trade and Transport Locations, also known as UN/LOCODE. Country codes are based on the well-known ISO 3166-1-alpha-2 standard, which is actually a part of the UN/LOCODE as well.

A list of UN/LOCODE codes can be found on the UNECE website here. For those who want to play with more raw data, you may check Core Data repository here.

DNS

To do this naming properly, it is expected to properly set up DNS, meaning that a hostname must end up with A or AAAA records to the IP of the device. Vice versa it is recommended to maintain a reverse PTR record from IP address to the hostname.

Contribute

Feedback is welcome. The standard is not expected to change as it's quite basic, but we are always open for discussions.

License

Mozilla Public License Version 2.0

device-identification-standard's People

Contributors

dqos avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.