Internet Engineering Task Force (IETF) C. Hopps Request for Comments: 9179 LabN Consulting, L.L.C. Category: Standards Track February 2022 ISSN: 2070-1721
A YANG Grouping for Geographic Locations
Группировки YANG для географического положения
Аннотация
Этот документ определяет базовую группировку YANG для географического положения, предназначенную для использования в моделях данных YANG для указания места или ссылок на Землю или иной астрономический объект.
Статус документа
Документ относится к категории Internet Standards Track.
Документ является результатом работы IETF1 и представляет согласованный взгляд сообщества IETF. Документ прошёл открытое обсуждение и был одобрен для публикации IESG2. Дополнительную информацию о стандартах Internet можно найти в разделе 2 в RFC 7841.
Информация о текущем статусе документа, найденных ошибках и способах обратной связи доступна по ссылке https://www.rfc-editor.org/info/rfc9179.
Авторские права
Copyright (c) 2022. Авторские права принадлежат IETF Trust и лицам, указанным в качестве авторов документа. Все права защищены.
К документу применимы права и ограничения, указанные в BCP 78 и IETF Trust Legal Provisions и относящиеся к документам IETF (http://trustee.ietf.org/license-info), на момент публикации данного документа. Прочтите упомянутые документы внимательно. Фрагменты программного кода, включённые в этот документ, распространяются в соответствии с упрощённой лицензией BSD, как указано в параграфе 4.e документа IETF Trust Legal Provisions, без каких-либо гарантий (как указано в Simplified BSD License).
1. Введение
Во многих приложениях хотелось бы указать географическое положение чего-либо. Примерами могут служить места размещения центров обработки данных, стоек в точках обмена трафиком Internet, маршрутизаторов, межсетевых экранов, портов не неком устройстве, конечных точек волокна или даже точки отказа в волоконной линии.
Хотя обычно интересует местоположение относительно Земли, это не всегда так. Легко представить сетевой устройство, размещённое на Луне, Марсе, Энцеладе (спутник Сатурна) и даже на комете (например, 67p/churyumov-gerasimenko). Можно представить определение местоположения в разных системах отсчёта и даже альтернативных системах (например, в имитаторах или виртуальной реальности).
Этот документ определяет группировку YANG geo-location, которая позволяет фиксировать всё, указанное выше.
Эта спецификация соответствует [ISO.6709.2008].
Описанная здесь модель данных YANG соответствует модели хранилищ данных управления сетью (Network Management Datastore Architecture или NMDA), заданной в [RFC8342].
1.1. Уровни требований
Ключевые слова должно (MUST), недопустимо (MUST NOT), требуется (REQUIRED), нужно (SHALL), не следует (SHALL NOT), следует (SHOULD), не нужно (SHOULD NOT), рекомендуется (RECOMMENDED), не рекомендуется (NOT RECOMMENDED), возможно (MAY), необязательно (OPTIONAL) в данном документе интерпретируются в соответствии с BCP 14 [RFC2119] [RFC8174] тогда и только тогда, когда они выделены шрифтом, как показано здесь.
2. Объект геолокации
2.1. Система отсчёта
Система отсчёта (reference-frame) определяет, к чему привязаны данные местоположения и смысл этих данных. Точкой отсчёта может служить любое астрономическое тело — планета, такая как Земля или Марс, спутник планеты, такой как Энцелад, астероид (например, Церера) и даже комета (например, 1P/Halley). Значение задаётся в astronomical-body и определяется Международным астрономическим союзом (International Astronomical Union) <http://www.iau.org>. По умолчанию astronomical-body имеет значение earth (Земля).
В дополнение к указанию астрономического тела нужно также определить систему координат (например, долгота и широта), а также уровень для отсчёта высоты. Это задаётся значением geodetic-datum. По умолчнию в качестве geodetic-datum применяется система wgs-84 (Всемирная геодезическая система — World Geodetic System [WGS84]), которая используется в системе глобального позиционирования (Global Positioning System или GPS) и др. Документ задаёт реестр IANA для указания стандартный значений geodetic-datum.
В дополнение к geodetic-datum разрешено переопределение точности координат и высоты с использованием coord-accuracy и height-accuracy, соответственно. Когда эти значения заданы, они переопределяют принятые по умолчанию значения, подразумеваемые значением geodetic-datum.
Определена также дополнительная функция, позволяющая сменить систему, для которой определены указанные выше значения. Эта необязательная функция добавляет в систему отсчёта значение alternate-system в качестве новой системы отсчета. Обычно это значение не устанавливается, что означает естественную вселенную. Использование этого значения предусмотрено для создания виртуальной реальности или альтернативных координат. Определение таких систем выходит за рамки этого документа.
2.2. Местоположение
Это положение на астрономическом объекте или относительно него, задаваемое двумя или тремя координатами. Местоположение указываются широтой (latitude), долготой (longitude) и высотой (height, необязательно) или декартовыми координатами x, y, z. Для стандартного выбора местоположения широта и долгота задаются в угловых градусах, а высота — в метрах. Декартовы координаты указываются в метрах. В обоих случаях точный смысл всех значений определяется geodetic-datum (см. параграф 2.1).
2.3. Движение
Добавлена поддержка сравнительно стабильно движущихся объектов, для которых группировка определяет трехмерный вектор. Вектор задаётся направлениями скоростью в северном (v-north) и восточном (v-east) направлении, а также набором высоты (v-up), указываемые с м/сек. Значения v-north привязаны к истоинногму северу, заданному для астрономического тела, а v-up к направлению от центра масс, перпендикулярному v-north и v-east.
Для определения двумерного курса и скорости применяются приведённые ниже формулы.
,------------------------------ speed = V v_{north}^{2} + v_{east}^{2} heading = arctan(v_{east} / v_{north})
Для некоторых приложений, требующих высокой точности и обновляющих данные нечасто, этот вектор скорости позволяет отслеживать очень медленное движение, такое как дрейф континентов.
Отслеживание более сложных форм движения выходит за рамки этой работы. Назначением определённой здесь группировки является определение места расположения и обычно предполагается Земля (или иное астрономическое тело). Доступны по меньшей мере два варианта для моделей данных YANG, которые захотят применять эту группировку с объектами, часто меняющими своё местоположение непростыми путями. Модель данных может добавить напрямую данные о движении в модель или, если позволяет приложение, потребовать более частых запросов для получения фактических данных о текущем метоположении.
2.4. Вложенное местоположение
Когда местоположение является вложенным (например, в здании может быть место, гле расположены маршрутизаторы, для которых тоже нужно знать местоположение), модуль, применяющий эту группировку может задать свое определение наследования reference-frame от содержащего его объекта, чтобы reference-frame не нужно было повторять для каждого экземпляра данных местоположения.
2.5. Другие атрибуты
При разработке этого модуля возник вопрос о поддержке таких данных, как ориентация. Эти типы атрибутов выходят за рамки группировки, поскольку они не связаны с местоположением, а скорее дают какие-то дополнительные сведения об объекте, находящемся в этом месте. Разработчики модулей могут сами добавить такие атрибуты в группировку для местоположения.
2.6. Дерево
Ниже показано дерево YANG [RFC8340] для группировки geo-location.
module: ietf-geo-location grouping geo-location: +-- geo-location +-- reference-frame | +-- alternate-system? string {alternate-systems}? | +-- astronomical-body? string | +-- geodetic-system | +-- geodetic-datum? string | +-- coord-accuracy? decimal64 | +-- height-accuracy? decimal64 +-- (location)? | +--:(ellipsoid) | | +-- latitude? decimal64 | | +-- longitude? decimal64 | | +-- height? decimal64 | +--:(cartesian) | +-- x? decimal64 | +-- y? decimal64 | +-- z? decimal64 +-- velocity | +-- v-north? decimal64 | +-- v-east? decimal64 | +-- v-up? decimal64 +-- timestamp? yang:date-and-time +-- valid-until? yang:date-and-time
3. Модуль YANG
Эта модель импортирует Common YANG Data Types [RFC6991] и использует YANG версии 1.1 [RFC7950].
<CODE BEGINS> file "ietf-geo-location@2022-02-11.yang" module ietf-geo-location { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-geo-location"; prefix geo; import ietf-yang-types { prefix yang; reference "RFC 6991: Common YANG Data Types"; } organization "IETF NETMOD Working Group (NETMOD)"; contact "WG Web: <https://datatracker.ietf.org/wg/netmod/> WG List: <mailto:netmod@ietf.org> Editor: Christian Hopps <mailto:chopps@chopps.org>"; description "Этот модуль задаёт группировку объектов контейнера, указывающих местоположение на астрономическом теле (например, Земле) или относительно него. Ключевые слова ДОЛЖНО, НЕДОПУСТИМО, ТРЕБУЕТСЯ, НУЖНО, НЕ НУЖНО, СЛЕДУЕТ, НЕ СЛЕДУЕТ, РЕКОМЕНДУЕТСЯ, НЕ РЕКОМЕНДУЕТСЯ, МОЖНО, НЕОБЯЗАТЕЛЬНО в этом документе трактуются в соответствии с BCP 14 (RFC 2119) (RFC 8174) тогда и только тогда, когда они указаны заглавными буквами, как показано здесь. Авторские права (Copyright (c) 2022) принадлежат IETF Trust и лицам, указанным как авторы. Все права защищены. Распространение и применение модуля в исходной или двоичной форме с изменениями или без таковых разрешено в соответствии с лицензией Simplified BSD License, изложенной в параграфе 4.c IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info). Эта версия модуля YANG является частью RFC 9179, где правовые аспекты приведены более полно."; revision 2022-02-11 { description "Исходный выпуск"; reference "RFC 9179: A YANG Grouping for Geographic Locations"; } feature alternate-systems { description "Указывает поддержку альтернативных систем отсчёта."; } grouping geo-location { description "Группировка для указания местоположения на астрономическом объекте."; container geo-location { description "Место на астрономическом теле (например, Земля) где-то во Вселенной."; container reference-frame { description "Система отсчёта для значений местоположения."; leaf alternate-system { if-feature "alternate-systems"; type string; description "Система, в которой определено астрономическое тело и геодезические данные. Обычно это значение не указывается и системой отсчёта служит естественная Вселенная, однако с помощью этого значения можно задать альтернативные системы (например, виртуальную реальность). Это меняет определения (но не тип) значений системы отсчета"; } leaf astronomical-body { type string { pattern '[ -@\[-\^_-~]*'; } default "earth"; description "Имя астрономического тела, заданное Международным астрономическим моюзом (IAU), или другой системой, если она указана. Примеры включают sun (Солнце), earth (Земля), moon (Луна), enceladus (спутник Сатурна), ceres (астероид), 67p/churyumov-gerasimenko (комета). СЛЕДУЕТ использовать символы ASCII в нижнем регистре и не включать смволы управления (коды, 32-64 и 91-126). Артикль the НЕ СЛЕДУЕТ включать."; reference "https://www.iau.org/"; } container geodetic-system { description "Геодезическая система для данных о местоположении."; leaf geodetic-datum { type string { pattern '[ -@\[-\^_-~]*'; } description "Геодезические данные, указывающие широту, долготу и высоту. По умолчанию для Земли (earth) применяется система wgs-84, используемая в GPS. СЛЕДУЕТ использовать символы ASCII в нижнем регистре и не включать смволы управления (коды, 32-64 и 91-126). В реестре IANA дополнительно задана замена пробелов ( ) символами дефиса (-). Спецификация geodetic-datum определяет, сколь точно моделируется астрономическое тело как по горизонтали (широта - долгота), так и по вертикали (высота)."; reference "RFC 9179: A YANG Grouping for Geographic Locations, Section 6.1"; } leaf coord-accuracy { type decimal64 { fraction-digits 6; } description "Точность пары широта-долгота для эллипсоидных координат или X, Y, Z для декартовых. Заданное значение coord-accuracy указывает, насколько точно определены координаты в списке местоположений относительно системы координат geodetic-datum. Например, может возникнуть погрешность из-за ошибки измерения."; } leaf height-accuracy { type decimal64 { fraction-digits 6; } units "meters"; description "Точность указания высоты в эллипсоидных координатах (для декартовых координат этот лист не указывается). Заданное значение указывает, насколько точны высоты в списке местоположений относительно системы координат, указанной geodetic-datum. Например, может возникнуть погрешность из-за ошибки измерения."; } } } choice location { description "Широта и долгота или декартовы координаты местоположения"; case ellipsoid { leaf latitude { type decimal64 { fraction-digits 16; } units "decimal degrees"; description "Значение широты на астрономическом теле. Определение и точность этого значения зависят от reference-frame."; } leaf longitude { type decimal64 { fraction-digits 16; } units "decimal degrees"; description "Значение долготы на астрономическом теле. Определение и точность этого значения зависят от reference-frame."; } leaf height { type decimal64 { fraction-digits 6; } units "meters"; description "Высота от нулевого уровня, задаваемого reference-frame."; } } case cartesian { leaf x { type decimal64 { fraction-digits 6; } units "meters"; description "Значение X в системе отсчёта reference-frame."; } leaf y { type decimal64 { fraction-digits 6; } units "meters"; description "Значение Y в системе отсчёта reference-frame."; } leaf z { type decimal64 { fraction-digits 6; } units "meters"; description "Значение Z в системе отсчёта reference-frame."; } } } container velocity { description "Если объект движется, вектор скорости описывает это движение в момент, указанный временной меткой. Для преобразования этих значений в скорость и курс служит формула из RFC 9179."; reference "RFC 9179: A YANG Grouping for Geographic Locations"; leaf v-north { type decimal64 { fraction-digits 12; } units "meters per second"; description "Составляющая скорости в направлении истинного севера в системе координат geodetic-system."; } leaf v-east { type decimal64 { fraction-digits 12; } units "meters per second"; description "Составляющая скорости перпендикулярно к направлению на истинный север в системе координат geodetic-system."; } leaf v-up { type decimal64 { fraction-digits 12; } units "meters per second"; description "Составляющая скорости в направлении от центра масс астрономического тела."; } } leaf timestamp { type yang:date-and-time; description "Время записи скорости."; } leaf valid-until { type yang:date-and-time; description "Временная метка, с которой связано местоположение. При отсутствии метки местоположение не связано с временем."; } } } } <CODE ENDS>
4. Соответствие ISO 6709:2008
В приложении к [ISO.6709.2008] задан набор тестов на соответствие стандарту. Эти тесты и результаты их выполнения приведены в таблице 1 с объяснением причин неприменимости некоторых тестов.
Таблица 1. Результаты тестов на соответствие.
Тест |
Описание |
Пояснение |
---|---|---|
A.1.2.1 |
Элементы, требуемые для определения положения географической точки |
CRS3 указывается всегда |
A.1.2.2 |
Описание CRS из реестра |
Реестр CRS определён |
A.1.2.3 |
Определение CRS |
CRS не определяется |
A.1.2.4 |
Представление горизонтальной позиции |
Широта и долгота соответствуют |
A.1.2.5 |
Представление вертикальной позиции |
Высота соответствует |
A.1.2.6 |
Представление текстовых строк |
Строки не применяются |
Для теста A.1.2.1 объект YANG geo-location включает CRS (reference-frame) или имеет принятое по умолчанию значение [WGS84].
Теста A.1.2.3 не применим, поскольку своя CRS не определяется.
Тест A.1.2.6 не применим по причине отсутствия текстовых строк.
5. Применимость
Объект geo-location, определённый в этом документе, и модуль YANG разработаны для применения в широком наборе приложений. Это включает способность указывать местоположение на астрономических телах, отличных от Земли, и использовать совершенно разные системы отсчёта и «реальности».
5.1. Переносимость
Для проверки переносимости при разработке модуля рассматривались описанные ниже стандарты и API.
5.1.1. Значение IETF URI
В [RFC5870] задано стандартное значение URI для данных о географическом местоположении, включающее возможность указать geodetic-value (называется crs) с принятым по умолчанию значением wgs-84 [WGS84]. Для данных о местоположении поддерживаются 2 или 3 координаты, определяемые значением crs. Для точности задано единственное значение u, указывающее погрешность в долях метра, применяемую ко всем значениям местоположения. Поскольку URI является строкой, все значения указываются строками и могут поддерживать нужную точность.
Значения URI могут сопоставляться с группировкой YANG, но возможна некоторая потеря точности (в предельных случаях), поскольку группировка YANG использует значения decimal64, а не строки.
5.1.2. W3C
W3C задаёт API геолокации в [W3CGEO]. Ниже приведён фрагмент кода, задающий данные геолокации для этого API. Интерфейс применяется во многих приложениях (например, Google Maps API).
interface GeolocationPosition { readonly attribute GeolocationCoordinates coords; readonly attribute DOMTimeStamp timestamp; }; interface GeolocationCoordinates { readonly attribute double latitude; readonly attribute double longitude; readonly attribute double? altitude; readonly attribute double accuracy; readonly attribute double? altitudeAccuracy; readonly attribute double? heading; readonly attribute double? speed; };
Рисунок 1. Фрагмент кода с определением геолокации.
5.1.2.1. Сравнение с моделью данных YANG
Таблица 2.
Поле |
Тип |
YANG |
Тип |
---|---|---|---|
accuracy |
double |
coord-accuracy |
dec64 fr 6 |
altitude |
double |
height |
dec64 fr 6 |
altitudeAccuracy |
double |
height-accuracy |
dec64 fr 6 |
heading |
double |
v-north, v-east |
dec64 fr 12 |
latitude |
double |
latitude |
dec64 fr 16 |
longitude |
double |
longitude |
dec64 fr 16 |
speed |
double |
v-north, v-east |
dec64 fr 12 |
timestamp |
DOMTimeStamp |
timestamp |
string |
accuracy (double)
Точность значений latitude и longitude в метрах4.altitude (double)
Высота в метрах над уровнем эллипсоида [WGS84] (необязательно).altitudeAccuracy (double)
Точность значения altitude в метрах (необязательно).heading (double)
Направление (по часовой стрелке) в градусах относительно истинного севера (необязательно).latitude, longitude (double)
Стандартные значения широты и долготы в угловых градусах.speed (double)
Курсовая скорость в м/сек.timestamp (DOMTimeStamp)
Число миллисекунд с начала UNIX Epoch в виде 64-битового целого числа без знака. Модель данных YANG определяет временную метку с произвольно высокой точностью, используя строковое представление значений.Значения W3C API можно сопоставить с группировкой YANG, учитывая возможную потерю точности (в предельных случаях), связанную с применением в YANG формата чисел decimal64 вместо double в W3C API.
Со значениями W3C можно напрямую сопоставить лишь значения YANG для Земли, использующие принятое по умолчанию значение wgs-84 [WGS84] для geodetic-datum, поскольку W3C не поддерживает других систем отсчёта, доступных в группировке YANG.
5.1.3. GML
В ISO принят язык географической разметки (Geography Markup Language или GML), определённый в OGC 07-036 [OGC], как стандарт [ISO.19136.2007]. GML определяет наряду с другими тип позиции gml:pos в форме последовательности значений double, представляющей координаты в данной CRS. CRS наследуется от содержащихся элементов или задаётся напрямую атрибутом srsName и необязательным srsDimension в gml:pos.
GML задаёт тип Abstract CRS, из которого выводятся типы Concrete CRS, что позволяет задать множество определений типов CRS. Здесь рассматривается тип Geodetic CRS, который может использовать эллипсоидальные или декартовы координаты. Предполагается, что неземные и виртуальные CRS также следует представлять типами GML CRS.
Значения GML gml:pos можно напрямую сопоставить с группировкой YANG, учитывая возможную потерю точности (в предельных случаях), связанную с применением в YANG формата чисел decimal64 вместо double в GML.
Сопоставление значений группировки YANG с GML полностью поддерживается лишь для связанных с Землёй геодезических систем.
GML определяет значение наблюдения gml:Observation, включающее временную метку gml:validTime в дополнение к таким компонентам, как gml:using, gml:target, gml:resultOf. Сопоставление с группировкой YANG (и обратно) возможно лишь для метки времени. Значение gml:validTime может быть мгновенным измерением (gml:TimeInstant) или интервалом времени (gml:TimePeriod). Мгновенные значения gml:TimeInstant сопоставимы с YANG timestamp (и обратно), а значения gml:TimePeriod (вплоть до секунд) можно сопоставить с помощью узла valid-until в группировке YANG.
5.1.4. KML
Язык KML 2.2 [KML22] (ранее Keyhole Markup Language) был представлен Google в Open Geospatial Consortium (https://www.opengeospatial.org/) и принят им. Последней версией на момент написания этого документа была KML 2.3 [KML23]. Эта схема включает данные географического местоположения в некоторые из своих объектов (например, kml:Point или kml:Camera). Данные представляются в форме строк и соответствуют значениям, заданным в [W3CGEO]. Значение временной метки также представляется строкой (как и в группировке YANG).
В KML есть специальная обработка высоты, полезная для программ визуализации, kml:altitudeMode. Значения для kml:altitudeMode включают clampToGround, которое задаёт игнорирование высоты, relativeToGround, указывающее высоту относительно уровня земли в точке размещения, или absolute, задающее абсолютное значение высоты в геодезической системе. Группировка YANG может напрямую отображать абсолютные значения, но не поддерживает сопоставление с относительными.
В дополнение к kml:altitudeMode модель KML определяет два значения глубины морского дна, используя kml:seaFloorAltitudeMode. Одно значение (clampToSeaFloor) задаёт игнорирование глубины, другое (relativeToSeaFloor) — глубину от поверхности (уровня моря). Группировка YANG поддерживает игнорирование, но не поддерживает относительную глубину.
В значениях местоположения в KML используются геодезические данные, определённые в Приложении A к [ISO.19136.2007] с идентификатором LonLat84_5773. Значение высоты для режима абсолютной высоты в KML измеряется от уровня, заданного в [WGS84].
Таким образом, группировка YANG и значения KML сопоставимы в обоих направлениях (при использовании поддерживаемого режима высоты) с учётом некоторой потери точности в результате использования в группировке YANG типа decimal64 вместо строк. Для относительной высоты предполагается, что выполняющее преобразование приложение имеет данные для преобразования относительной высоты в абсолютную, которая затем может быть выражена с использованием группировки YANG.
6. Взаимодействие с IANA
6.1. Реестр значений Geodetic System
Агентство IANA создало реестр Geodetic System Values внутри реестра YANG Geographic Location Parameters. Этот реестр содержит имена стандартных геодезических систем. Значения зачастую содержат несколько имён, например, полные имена и сокращения. Реестр предназначен для указания стандартных имён каждой геодезической системы.
В значениях следует применять сокращения при их наличии, символы должны указываться в нижнем регистре, а пробелы должны заменяться символами дефиса (-).
Каждой записи должно быть достаточно для определения значений двух координат и высоты, если она требуется. Например, wgs-84 задан как WGS-84 с обновлением геоида для значений высоты как минимум до [EGM96]. Специальные записи [EGM96] и [EGM08] указаны для случаев, когда требуется более точное определение данных.
Следует отметить, что [RFC5870] также создал реестр для геодезических систем (‘geo’ URI ‘crs’ Parameter Values), однако для этого реестра заданы очень строгие правила внесения изменений. Авторы [RFC5870] поставили перед собой цель усложнить регистрацию CRS для предотвращения избыточного их числа. Поскольку этот модуль задаёт альтернативные системы и имеет более широкую область действия (не только Земля), указанный здесь реестр упрощает внесение изменений.
Значения добавляются в реестр по процедуре First Come First Served [RFC8126], поскольку целью является лишь предотвращение дубликатов.
Значение Reference должно указывать документ или контактное лицо, как указано в [RFC8126]. Поле Change Controller (т. е. владелец) также определено в [RFC8126].
Исходные значения реестра приведены в таблице 3 и включают систему отсчёта, связанную с Луной [MEAN-EARTH].
Таблица 3.
Имя |
Описание |
Документ |
Контролёр изменений |
---|---|---|---|
me |
Mean Earth/Polar Axis (Moon) |
RFC 9179 |
IETF |
wgs-84-96 |
World Geodetic System 1984 |
RFC 9179 |
IETF |
wgs-84-08 |
World Geodetic System 1984 |
RFC 9179 |
IETF |
wgs-84 |
World Geodetic System 1984 |
RFC 9179 |
IETF |
6.2. Обновление реестра IETF XML
Этот документ регистрирует URI в реестре IETF XML Registry [RFC3688] в соответствии с [RFC3688]
URI: urn:ietf:params:xml:ns:yang:ietf-geo-location Registrant Contact: The IESG. XML: N/A; запрошенный URI является пространством имён XML.
6.3. Обновление реестра YANG Module Names
Этот документ регистрирует модуль YANG в реестре YANG Module Names [RFC6020] в соответствии с [RFC6020]
Name: ietf-geo-location Maintained by IANA: N Namespace: urn:ietf:params:xml:ns:yang:ietf-geo-location Prefix: geo Reference: RFC 9179
7. Вопросы безопасности
Заданный этим документом модуль YANG определяет схему для данных, предназначенную для доступа через сеть с использованием протоколов управления, таких как NETCONF [RFC6241] или RESTCONF [RFC8040]. Нижним уровнем NETCONF служит защищённый транспорт с обязательной поддержкой SSH (Secure Shell) [RFC6242]. Нижним уровнем RESTCONF служит протокол HTTPS с обязательной поддержкой защиты на транспортном уровне (TLS) [RFC8446].
Модель контроля доступа NETCONF [RFC8341] обеспечивает возможность разрешить доступ лишь определённых пользователей NETCONF или RESTCONF к заранее заданному подмножеству операций NETCONF или RESTCONF и содержимого.
Поскольку заданный этим документом модуль определяет лишь группировку, соображения безопасности адресованы в первую очередь разработчикам модулей, использующих эту группировку.
Все узлы данных в этом модуле YANG доступны для записи, создания и удаления (принятое по умолчанию значение config true). Ни один из доступных для записи, создания или удаления узлов данных из определённого в документе модуля YANG сам по себе не считается боле чувствительным или уязвимым, нежели стандартная конфигурация.
Некоторые из доступных для чтения узлов в этом модуле YANG могут быть конфиденциальны или уязвимы в той или иной сетевой среде. Важно контролировать доступ к таким объектам (например, get, get-config, notification).
Поскольку определённая здесь группировка включает местоположения, использующим группировку авторам следует учитывать вопросы приватности данных, доступных для чтения (например, расположение клиентских устройств).
8. Нормативные документы
[EGM08] Pavlis, N., Holmes, S., Kenyon, S., and J. Factor, «An Earth Gravitational Model to Degree 2160: EGM08.», Presented at the 2008 General Assembly of the European Geosciences Union, Vienna, April 2008.
[EGM96] Lemoine, F., Kenyon, S., Factor, J., Trimmer, R., Pavlis, N., Chinn, D., Cox, C., Klosko, S., Luthcke, S., Torrence, M., Wang, Y., Williamson, R., Pavlis, E., Rapp, R., and T. Olson, «The Development of the Joint NASA GSFC and the National Imagery and Mapping Agency (NIMA) Geopotential Model EGM96.», NASA/TP-1998-206861, July 1998.
[ISO.6709.2008] International Organization for Standardization, «Standard representation of geographic point location by coordinates», ISO 6709:2008, 2008.
[MEAN-EARTH] NASA, «A Standardized Lunar Coordinate System for the Lunar Reconnaissance Orbiter», Version 4, Goddard Space Flight Center, May 2008.
[RFC2119] Bradner, S., «Key words for use in RFCs to Indicate Requirement Levels», BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>.
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., and A. Bierman, Ed., «Network Configuration Protocol (NETCONF)», RFC 6241, DOI 10.17487/RFC6241, June 2011, <https://www.rfc-editor.org/info/rfc6241>.
[RFC6242] Wasserman, M., «Using the NETCONF Protocol over Secure Shell (SSH)», RFC 6242, DOI 10.17487/RFC6242, June 2011, <https://www.rfc-editor.org/info/rfc6242>.
[RFC6991] Schoenwaelder, J., Ed., «Common YANG Data Types», RFC 6991, DOI 10.17487/RFC6991, July 2013, <https://www.rfc-editor.org/info/rfc6991>.
[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, «RESTCONF Protocol», RFC 8040, DOI 10.17487/RFC8040, January 2017, <https://www.rfc-editor.org/info/rfc8040>.
[RFC8126] Cotton, M., Leiba, B., and T. Narten, «Guidelines for Writing an IANA Considerations Section in RFCs», BCP 26, RFC 8126, DOI 10.17487/RFC8126, June 2017, <https://www.rfc-editor.org/info/rfc8126>.
[RFC8174] Leiba, B., «Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words», BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8341] Bierman, A. and M. Bjorklund, «Network Configuration Access Control Model», STD 91, RFC 8341, DOI 10.17487/RFC8341, March 2018, <https://www.rfc-editor.org/info/rfc8341>.
[RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., and R. Wilton, «Network Management Datastore Architecture (NMDA)», RFC 8342, DOI 10.17487/RFC8342, March 2018, <https://www.rfc-editor.org/info/rfc8342>.
[RFC8446] Rescorla, E., «The Transport Layer Security (TLS) Protocol Version 1.3», RFC 8446, DOI 10.17487/RFC8446, August 2018, <https://www.rfc-editor.org/info/rfc8446>.
[WGS84] National Imagery and Mapping Agency, «Department of Defense World Geodetic System 1984», NIMA TR8350.2, Third Edition, January 2000.
9. Дополнительная литература
[ISO.19136.2007] International Organization for Standardization, «Geographic information — Geography Markup Language (GML)», ISO 19136:2007.
[KML22] Wilson, T., Ed., «OGC KML», Version 2.2, April 2008, <https://portal.opengeospatial.org/files/?artifact_id=27810>.
[KML23] Burggraf, D., Ed., «OGC KML», Version 2.3, August 2015, <https://docs.opengeospatial.org/is/12-007r2/12-007r2.html>.
[OGC] OpenGIS, «OpenGIS Geography Markup Language (GML) Encoding Standard», Version: 3.2.1, OGC 07-036, August 2007, <https://portal.ogc.org/files/?artifact_id=20509>.
[RFC3688] Mealling, M., «The IETF XML Registry», BCP 81, RFC 3688, DOI 10.17487/RFC3688, January 2004, <https://www.rfc-editor.org/info/rfc3688>.
[RFC5870] Mayrhofer, A. and C. Spanring, «A Uniform Resource Identifier for Geographic Locations (‘geo’ URI)», RFC 5870, DOI 10.17487/RFC5870, June 2010, <https://www.rfc-editor.org/info/rfc5870>.
[RFC6020] Bjorklund, M., Ed., «YANG — A Data Modeling Language for the Network Configuration Protocol (NETCONF)», RFC 6020, DOI 10.17487/RFC6020, October 2010, <https://www.rfc-editor.org/info/rfc6020>.
[RFC7950] Bjorklund, M., Ed., «The YANG 1.1 Data Modeling Language», RFC 7950, DOI 10.17487/RFC7950, August 2016, <https://www.rfc-editor.org/info/rfc7950>.
[RFC8340] Bjorklund, M. and L. Berger, Ed., «YANG Tree Diagrams», BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, <https://www.rfc-editor.org/info/rfc8340>.
[W3CGEO] Popescu, A., «Geolocation API Specification», 2nd Edition, November 2016, <https://www.w3.org/TR/2016/REC-geolocation-API-20161108/>.
Приложение A. Примеры
Ниже показан вымышленный модуль, использующий группировку geo-location.
module example-uses-geo-location { namespace "urn:example:example-uses-geo-location"; prefix ugeo; import ietf-geo-location { prefix geo; } organization "Организация"; contact "Example Author <eauthor@example.com>"; description "Пример использования geo-location"; revision 2022-02-11 { reference "None"; } container locatable-items { description "Контейнер с элементами геолокации."; list locatable-item { key name; description "Элемент геолокации"; leaf name { type string; description "Имя элемента геолокации"; } uses geo:geo-location; } } }
Рисунок 2. Пример модуля YANG, использующего геолокацию.
Ниже показано дерево YANG для вымышленного модуля, использующего группировку geo-location.
module: example-uses-geo-location +--rw locatable-items +--rw locatable-item* [name] +--rw name string +--rw geo-location +--rw reference-frame | +--rw alternate-system? string | | {alternate-systems}? | +--rw astronomical-body? string | +--rw geodetic-system | +--rw geodetic-datum? string | +--rw coord-accuracy? decimal64 | +--rw height-accuracy? decimal64 +--rw (location)? | +--:(ellipsoid) | | +--rw latitude? decimal64 | | +--rw longitude? decimal64 | | +--rw height? decimal64 | +--:(cartesian) | +--rw x? decimal64 | +--rw y? decimal64 | +--rw z? decimal64 +--rw velocity | +--rw v-north? decimal64 | +--rw v-east? decimal64 | +--rw v-up? decimal64 +--rw timestamp? yang:date-and-time +--rw valid-until? yang:date-and-time
Рисунок 3. Пример дерева YANG, использующего геолокацию.
Ниже приведён пример данных YANG XML для вымышленного модуля, использующего группировку geo-location.
<locatable-items xmlns="urn:example:example-uses-geo-location"> <locatable-item> <name>Gaetana's</name> <geo-location> <latitude>40.73297</latitude> <longitude>-74.007696</longitude> </geo-location> </locatable-item> <locatable-item> <name>Pont des Arts</name> <geo-location> <timestamp>2012-03-31T16:00:00Z</timestamp> <latitude>48.8583424</latitude> <longitude>2.3375084</longitude> <height>35</height> </geo-location> </locatable-item> <locatable-item> <name>Saint Louis Cathedral</name> <geo-location> <timestamp>2013-10-12T15:00:00-06:00</timestamp> <latitude>29.9579735</latitude> <longitude>-90.0637281</longitude> </geo-location> </locatable-item> <locatable-item> <name>Apollo 11 Landing Site</name> <geo-location> <timestamp>1969-07-21T02:56:15Z</timestamp> <reference-frame> <astronomical-body>moon</astronomical-body> <geodetic-system> <geodetic-datum>me</geodetic-datum> </geodetic-system> </reference-frame> <latitude>0.67409</latitude> <longitude>23.47298</longitude> </geo-location> </locatable-item> <locatable-item> <name>Reference Frame Only</name> <geo-location> <reference-frame> <astronomical-body>moon</astronomical-body> <geodetic-system> <geodetic-datum>me</geodetic-datum> </geodetic-system> </reference-frame> </geo-location> </locatable-item> </locatable-items>
Рисунок 4. Пример данных XML с геолокацией.
Благодарности
Автор благодарит Jim Biard и Ben Koziol за рецензии и предложенные улучшения. Спасибо Peter Lothberg за мотивацию и помощь с полезным определением географического местоположения объекта, а также Acee Lindem и Qin Wu за их работу над объектом географического местоположения, которая привела к созданию этого документа. Спасибо куратору (Document Shepherd) Kent Watsen.
Адрес автора
Christian Hopps LabN Consulting, L.L.C. Email: chopps@chopps.orgПеревод на русский язык
Николай Малых
1Internet Engineering Task Force — комиссия по решению инженерных задач Internet.
2Internet Engineering Steering Group — комиссия по инженерным разработкам Internet.
3Coordinate Reference System — система отсчёта координат.
4Представляется странным указание точности угловых величин в метрах, однако в спецификации [W3CGEO] указано именно так. Прим. перев