####################################################################### # IX Member List Schema # # Elisa Jasinska # Nick Hilliard # Bijal Sanghani # Barry O'Donovan # Arnold Nipper # # version 1.0 - 2019-07-18 # # # revision history: # # v 0.1 * initial release # v 0.2 * included feedback from Steven Bakker (AMS-IX) # v 0.3 * included feedback from Nick Hilliard (INEX) # v 0.4 * included feedback from Kay Rechthien (ECIX), Martin Levy # (CloudFlare) and added Grizz's p: # + ixp_info -> ixp_list, added ixp_id referenced in # member_list.connection_list entries # + re-named former ixp_id to ixf_id and refined its type # + added emgergency contact fields: emgergency_email, # emgergency_phone, emgergency_contact_hours # + added billing contact hours field: billing_contact_hours # + added member_type field in member_list entries # + fixed typo in peering_policy_url # + added mac_address field in vlan_list entries # + added stats_api field in ixp_list entries # + changed version to dotted format # + spelin fixxups and apostrophe's # v 0.5 * included feedback from Arnold Nipper (DE-CIX): # + pdb_facility_id added to switch # v 0.6 * included feedback from Arnold Nipper (DE-CIX): # + allow multiple MACs per address family and list macs # by address family as some IXPs allow different L3 interfaces # for v4/v6 # v 0.7 * added new fields following ix-f/euro-ix meeting in London, UK # on Jan 10th. Fields include: # + add: ixf_id: (integer, required) (closes #21) # + add: peeringdb_id: (integer, not required) # + add: switch manufacturer and model (strings, not required) # + add: looking_glass_urls (array of strings, not required) to vlan ipv4/6 # + add: service_type (array of strings, not required) to member connection # - remove: types probono and routeserver from member_list.member_type # v 1.0 * added new fields following euro-ix requirements # + add: software to switches: (string, not required) # + refactor service_type to an array of objects called 'services' # and add: os: (string, not required), os_version: (string, not required), # daemon: (string, not required), and daemon_version: (string, not required) ####################################################################### # basic example { "version": "1.0", "timestamp": "2019-07-18T00:00:00Z", "ixp_list": [ { "ixp_id": 42, "shortname": "AMS-IX", "ixf_id": 2 } ], "member_list": [ { "asnum": 8560, "connection_list": [ { "ixp_id": 42 } ] }, { "asnum": 197219, "connection_list": [ { "ixp_id": 42 } ] }, { "asnum": 51088, "connection_list": [ { "ixp_id": 42 } ] }, { "asnum": 47836, "connection_list": [ { "ixp_id": 42 } ] } # ... more members ] } ####################################################################### # more complex example { "version": "1.0", "timestamp": "2019-07-18T00:00:00Z", "ixp_list": [ { "shortname": "AMS-IX", "name": "Amsterdam Internet Exchange", "ixp_id": 42, "ixf_id": 2, "peeringdb_id": 26, "country": "NL", "url": "http://www.ams-ix.net/", "stats_api": "https://my.ams-ix.net/api/v1/stats.json", "support_email": "noc@ams-ix.net", "support_phone": "+31 20 514 1717", "support_contact_hours": "8/5", "emergency_email": "noc@ams-ix.net", "emergency_phone": "+31 20 514 1717", "emergency_contact_hours": "24/7", "billing_email": "info@ams-ix.net", "billing_phone": "+31 20 305 89 99", "billing_contact_hours": "8/5", "peering_policy_list": [ "open", "selective", "closed", "case-by-case", "custom" ], "switch": [ { "id": 0, "name": "PXC-TC5-144", "colo": "Telecity 5", "pdb_facility_id": 1236, "city": "Amsterdam", "country": "NL", "manufacturer": "Acme Switch Co.", "model": "Big Switch", "software": "SwitchOS" }, { "id": 1, "name": "PXC-GLO-146", "colo": "Global Switch", "pdb_facility_id": 63, "city": "Amsterdam", "country": "NL" } ], "vlan": [ { "id": 0, "name": "ISP", "ipv4": { "prefix": "80.249.208.0", "mask_length": 21 }, "ipv6": { "prefix": "2001:7f8:1::", "mask_length": 64 } }, { "id": 1, "name": "GRX", "ipv4": { "prefix": "193.105.101.0", "mask_length": 23 } } ] } ], "member_list": [ { "asnum": 65505, "member_type": "peering", "name": "Netflix", "url": "http://netflix.com/", "contact_email": [ "peering@example.com", "mrpeering@example.com" ], "contact_phone": [ "+1 1234 5678" ], "contact_hours": "8/5", "peering_policy": "open", "peering_policy_url": "https://www.netflix.com/openconnect/", "member_since": "2009-02-04T00:00:00Z", "connection_list": [ { "ixp_id": 42, "connected_since": "2009-02-04T00:00:00Z", "state": "active", "if_list": [ { "switch_id": 0, "if_speed": 10000, "if_type": "LR4" } ], "vlan_list": [ { "vlan_id": 0, "ipv4": { "address": "192.0.2.250", "routeserver": true, "max_prefix": 42, "as_macro": "AS-NFLX-V4", "mac_addresses" : [ "00:11:22:33:44:16" ] }, "ipv6": { "address": "2001:db8::250", "routeserver": true, "max_prefix": 42, "as_macro": "AS-NFLX-V6", "mac_addresses" : [ "00:11:22:33:44:16" ] } } ] }, { "ixp_id": 42, "connected_since": "2009-02-04T00:00:00Z", "state": "active", "if_list": [ { "switch_id": 1, "if_speed": 10000, "if_type": "LR4" } ], "vlan_list": [ { "vlan_id": 0, "ipv4": { "address": "192.0.2.100", "routeserver": true, "max_prefix": 42, "as_macro": "AS-NFLX-V4", "mac_addresses" : [ "00:11:22:33:44:17" ] }, "ipv6": { "address": "2001:db8::100", "routeserver": true, "max_prefix": 42, "as_macro": "AS-NFLX-V6", "mac_addresses" : [ "00:11:22:33:44:17" ] } } ] } ] }, { "asnum": 65500, "member_type": "ixp", "name": "Example IXP", "url": "http://ixp.example.com/", "peering_policy": "mandatory", "member_since": "2000-02-04T00:00:00Z", "connection_list": [ { "ixp_id": 42, "state": "active", "if_list": [ { "switch_id": 0, "if_speed": 10000, } ], "vlan_list": [ { "vlan_id": 2, "ipv4": { "address": "192.0.2.254", "routeserver": false, "max_prefix": 100000, "as_macro": "AS-EXAMPLE-IX-RS", "services": [ { "type": "ixrouteserver", "os": "Ubuntu Linux", "os_version": "18.04", "daemon": "bird", "daemon_version": "1.6.2", } ] }, "ipv6": { "address": "2001:db8::254", "routeserver": false, "max_prefix": 10000, "as_macro": "AS-EXAMPLE-IX-RS-V6", "services": [ { "type": "ixrouteserver", "os": "Ubuntu Linux", "os_version": "18.04", "daemon": "bird", "daemon_version": "1.6.2", } ] } } ] } ] } ] }