В протоколе управления CMWP (CPE WAN Management Protocol) используется механизм удаленного вызова процедур (Remote Procedure Call, сокращенно RPC) для двунаправленного обмена между устройством CPE и сервером автоматической конфигурации (Auto-configuration Server, ACS). В этом приложении к описанию стандарта TR-069 (перевод раздела "Appendix A. RPC Methods" документа [1]) описывается версия 1 специфических вызовов процедур (методов) протокола CMWP. Это включает как процедуры, инициируемые ACS и отправляемые к CPE, так и методы, инициируемые CPE и отправляемые в ACS.
Примечание: расшифровку незнакомых терминов и аббревиатур см. в разделе "1.6. Терминология" статьи [16], там также приведен перевод общего описания протокола CWMP/TR-069 из документации [1].
Эта спецификация не зависит от синтаксиса, используемого для кодирования определенных методов RPC. Конкретный синтаксис кодирования, который будет использоваться в контексте протокола управления CPE WAN, определен в секции "3.5. Использование SOAP" общего описания протокола CWMP (см. [1], или перевод этого описания [16]).
Подразумевается, что низшие уровни транспорта сообщений RPC обеспечивают большинство аспектов безопасности, включая взаимную аутентификацию между CPE и ACS, конфиденциальность и целостность данных.
[A.2. Использование метода RPC]
A.2.1. Типы данных. Методы RPC, определенные в этой спецификации, используют ограниченное подмножество типов данных SOAP по умолчанию [8]. В таблице 6 перечислен полный набор типов, используемых в этой спецификации, а также обозначения, используемые для представления этих типов.
Таблица 6. Типы данных.
Тип |
Описание |
string |
Для строк, перечисленных в этой спецификации, максимальная разрешенная длина может быть перечислена в форме string(N), где N это максимальная длина строки в символах.
Для всех строк максимальная длина либо явно показывается, либо подразумевается по размеру элементов, составляющих строку. Для строк, у которых содержимое это перечисление, самое длинное значение перечисления определяет максимальную длину. Если строка не имеет явно показанной максимальной длины, или она не перечисление, то максимальное значение по умолчанию составляет 16 символов. Аргументы действия (Action), содержащие строки, длиннее указанного максимума, МОГУТ привести к "Invalid arguments" error response. |
int |
Целое число в диапазоне –2147483648 .. +2147483647, включительно.
Для некоторых перечисленных типов int диапазон указывается в форме int[Min:Max], где Min и Max задают предельные значения, включительно. Если пропущен Min или Max, то это означает отсутствие соответствующего лимита. |
unsignedInt |
Целое число без знака в диапазоне 0 .. 4294967295, включительно.
Для некоторых перечисленных типов unsignedInt диапазон значений указывается с помощью формы unsignedInt[Min:Max], где Min и Max задают предельные значения, включительно. Если пропущен Min или Max, то это означает отсутствие соответствующего лимита. |
boolean |
Двоичное значение, где 1 == true, и 0 == false. |
dateTime |
Подмножество формата даты и времени ISO 8601, определенное SOAP-типом dateTime.
Все времена выражаются в формате UTC (Universal Coordinated Time), если явно не указано нечто иное.
Если для CPE недоступно абсолютное время, то оно ДОЛЖНО вместо этого показываться относительно момента загрузки (boot). Например, 2 дня, 3 часа, 4 минуты и 5 секунд выражается как 0000-00-02T03:04:05. |
base64 |
Двоичное значение, закодированное как Base64.
Максимальная разрешенная длина может быть перечислена в форме base64(N), где N это максимальная длина в символах после кодирования Base64. |
any |
Элемент, содержащий любой из типов, перечисленных в этой таблице.
В соответствии со спецификацией SOAP [8], элементы, указанные как элементы этого типа ДОЛЖНЫ включать атрибут типа, чтобы показать реальный тип элемента. Пример:
< Parameter>
< Name>InternetGatewayDevice.ProvisioningCode< /Name>
< Value xsi:type="xsd:string">code12345< /Value> < /Parameter>
Выше используются пространства имен (namespaces) xsi и xsd, как определено в [8]. |
Методы, используемые в этой спецификации, также используют структуры и массивы (в некоторых случаях содержащие смешанные типы). Элементы массива показываются квадратными скобками, указанными после типа данных. Если это указано, то максимальная длина массива задается в скобках. Если максимальная длина не указана, если не указано иное, то нет фиксированных требований к количеству элементов, которые должен разместить получатель. Запрос с массивом, слишком большим для того, чтобы получатель мог его обработать, должен привести к появлению кода ошибки "Resources exceeded".
A.2.2. Другие требования. Все методы должны вызываться с использованием точного числа аргументов, указанных в этом документе. Методы, вызываемые с отсутствующими или дополнительными аргументами, генерируют ответ с сообщением об ошибке (error response). Порядок следования аргументов должен соответствовать указанному в этом документе.
Будущие версии этой спецификации не должны переопределять методы RPC, определенные в этом Приложении A. Любые изменения, необходимые в будущей версии, должны приводить только к определению новых методов RPC с отличающимися именами.
[A.3. Базовые сообщения RPC]
В этом разделе описаны базовые (baseline) методы сторон обмена.
A.3.1. Generic-методы. Методы, перечисленные в этой секции, требуется поддерживать как со стороны управляемых устройств (CPE), так и со стороны серверов (ACE). Эти методы могут вызываться либо CPE, либо сервером.
A.3.1.1. GetRPCMethods. Этот метод может использоваться CPE или сервером, чтобы распознать набор методов, поддерживаемых противоположной стороной обмена. Этот список может включать в себя как стандартные методы (которые определены в этой спецификации или в её более новой версии), так и специфические для вендора методы. Получатель ответа ДОЛЖЕН игнорировать любые нераспознанные методы.
Специфические для вендора методы ДОЛЖНЫ быть в форме X_< VENDOR>_MethodName, где < VENDOR> это уникальный идентификатор вендора (производителя), который может быть OUI, или доменным именем. OUI это уникальный организационный идентификатор (Organizationally Unique Identifier), как это определено в [9], который ДОЛЖЕН быть форматирован как 6 шестнадцатеричных цифр OUI, где все символы указаны в верхнем регистре. Доменное имя ДОЛЖНО быть указано символами верхнего регистра, где каждая точка (".") заменена на дефис или символ подчеркивания. Примеры: X_00D09E_MyMethod, X_ACME_COM_MyMethod.
Аргументы вызова этого метода определены в таблице 7. Аргументы ответа определены в таблице 8.
Таблица 7. Аргументы GetRPCMethods.
Аргумент |
Тип |
Описание |
- |
void |
У этого метода нет аргументов вызова. |
Таблица 8. Аргументы GetRPCMethodsResponse.
Аргумент |
Тип |
Описание |
MethodList |
string(64)[]
|
Массив строк, содержащий имена каждого метода RPC, который поддерживает получатель. Например, если CPE реализует только baseline-методы, определенные в этой спецификации, то он мог бы вернуть серверу ACE следующий список:
"GetRPCMethods" "SetParameterValues" "GetParameterValues" "GetParameterNames" "SetParameterAttributes" "GetParameterAttributes" "AddObject" "DeleteObject" "Reboot" "Download" |
Следующие fault codes (коды ошибки) определены для этого метода, которые могут быть в ответе от CPE: 9001, 9002.
Следующие fault codes (коды ошибки) определены для этого метода, которые могут быть в ответе от ACS: 8001, 8002, 8005.
A.3.2. Методы CPE. Перечисленные в этой секции методы поддерживаются со стороны устройства CPE. Эти методы может вызвать только сервер (ACE).
A.3.2.1. SetParameterValues. Этот метод может использоваться сервером для модификации значения одного или большего количества параметров CPE. Аргументы вызова для этого метода определены в таблице 9. Аргументы ответа определены в таблице 10.
Таблица 9. Аргументы SetParameterValues.
Аргумент |
Тип |
Описание |
ParameterList |
ParameterValueStruct[] |
Массив пар name-value (имя-значение), как это указано в таблице 11. Для каждой такой пары устройство CPE инструктируется установить параметр, заданный именем name, в соответствующее значение value. |
ParameterKey |
string(32) |
Значение для установки параметра ParameterKey. Это МОЖЕТ использоваться сервером для идентификации обновлений параметра, ли МОЖЕТ быть оставлено сервером пустым. |
Таблица 10. Аргументы SetParameterValuesResponse.
Аргумент |
Тип |
Описание |
Status |
int[0:1] |
Успешный ответ на этот метод возвратит значение из целочисленного перечисления, определенное следующим образом:
0 = изменение параметра проверено и применено. 1 = изменение параметра проверено и учтено, но пока не применено (например, если требуется перезагрузка перед применением новых значений). |
При успешном приеме SetParameterValues RPC устройство CPE ДОЛЖНО немедленно и атомарно применить изменение каждого указанного параметра. Порядок следования параметров в ParameterList не имеет значения - применение изменения значений для CPE ДОЛЖНО быть независимым от порядка, в котором они перечислены. Успешный ответ на этот RPC ДОЛЖЕН произойти после того, как новые значения параметров были успешно применены. Если CPE требует перезагрузки (reboot) перед применением значений параметров, то CPE ДОЛЖЕН ответить перед такой перезагрузкой, и таким образом перед вступлением в действие значений параметров. В этом случае ответ ДОЛЖЕН поступить только после выполнения всех проверок запроса, и сохранения надлежащим образом принятых новых значений параметров, так чтобы они определенно применились после последующей перезагрузки.
Структура ParameterValueStruct определена в таблице 11.
Таблица 11. Структура ParameterValueStruct.
Имя |
Тип |
Описание |
Name |
string(256) |
Это имя параметра. |
Value |
any |
Это устанавливаемое значение параметра. |
Если произошел сбой из за ошибки в одном параметре или нескольких параметрах, то сообщение отказа (fault response) для этого метода ДОЛЖНО включать в себя элемент SetParameterValuesFault для каждого ошибочного параметра. В это случае предусмотрен общий код отказа (primary fault code), который ДОЛЖЕН быть Invalid Arguments (9003).
Следующие fault codes определены для этого метода: 9001, 9002, 9003, 9004, 9005, 9006, 9007, 9008.
A.3.2.2. GetParameterValues. Этот метод используется сервером ACE для получения значения одного или нескольких параметров CPE. Аргументы вызова для этого метода определены в таблице 12. Аргументы ответа определены в таблице 13.
Таблица 12. Аргументы GetParameterValues.
Аргумент |
Тип |
Описание |
ParameterNames |
string(256)[] |
Массив строк, где каждая представляет имя запрашиваемого параметра. |
Если аргумент имени параметра указан как частичное имя (partial path name), то запрос интерпретируется как требование возвратить все параметры в ветке иерархии именования, имеющих общий префикс, указанный в аргументе. Частичное имя ДОЛЖНО заканчиваться на точку (".") после завершающего сегмента имени в иерархии. Пустая строка обозначает вершину иерархии имен.
Пример полного имени параметра:
InternetGatewayDevice.DeviceInfo.SerialNumber
Пример частичного имени параметра:
InternetGatewayDevice.DeviceInfo.
Таблица 13. Аргументы GetParameterValuesResponse.
Аргумент |
Тип |
Описание |
ParameterList |
ParameterValueStruct[] |
Массив пар name-value, как указано в таблице 11, содержащих имя и значение для каждого запрошенного параметра. |
Для этого метода определены следующие fault codes: 9001, 9002, 9003, 9004, 9005. Если к отказу привело неправильное имя параметра, то ДОЛЖЕН использоваться код отказа Invalid Parameter Name (9005) вместо общего кода отказа Invalid Arguments (9003).
A.3.2.3. GetParameterNames. Этот метод может использоваться сервером ACE, чтобы узнать параметры, доступные на определенном CPE. Аргументы вызова для этого метода определены в таблице 14. Аргументы ответа определены в таблице 15.
Таблица 14. Аргументы GetParameterNames.
Аргумент |
Тип |
Описание |
ParameterPath |
string(256) |
Строка, содержащая либо полное, либо частичное имя параметра (см. описание ParameterNames в таблице 12). |
NextLevel |
boolean |
Если false, то в ответе перечисляется полное имя пути для всех параметров, имя которых начинается со строки, заданной аргументом ParameterPath.
Если true, то в ответе перечисляются только частичные имена параметра на один уровень ниже, чем указано ParameterPath. Например, если ParameterPath "InternetGatewayDevice.LANDevice.", то в ответе могут быть перечислены "InternetGatewayDevice.LANDevice.1." и "InternetGatewayDevice.LANDevice.2." без списка параметров ниже этого уровня. |
Таблица 15. Аргументы GetParameterNamesResponse.
Аргумент |
Тип |
Описание |
ParameterList |
ParameterInfoStruct[] |
Массив структур, каждая из которых содержит имя и другую информацию о параметре, как определено в таблице 16. Когда NextLevel false, этот метод возвратит информацию о параметрах для всех доступных параметров, имена которых начинаются на строку, указанную в аргументе ParameterPath. Если аргумент ParameterPath пустая строка, то возвращаются имена всех доступных параметров определенного CPE. Когда NextLevel true, этот список содержит частичные имена на один уровень ниже, чем указано в ParameterPath. |
Таблица 16. Структура ParameterInfoStruct.
Имя |
Тип |
Описание |
Name |
string(256) |
Полное или частичное имя параметра. |
Writable |
boolean |
Может ли этот параметр быть перезаписан методом SetParameterValues. |
Если Name это частичное имя, потому что NextLevel был true, то это показывает, могут ли использоваться методы DeleteObject и AddObject на этом уровне, чтобы удалить этот экземпляр или добавить другие экземпляры.
Для этого метода определены следующие fault codes: 9001, 9002, 9003, 9005. Если к отказу привело неправильное имя параметра, то ДОЛЖЕН использоваться код отказа Invalid Parameter Name (9005) вместо общего кода отказа Invalid Arguments (9003).
A.3.2.4. SetParameterAttributes. Этот метод может использоваться сервером ACE для модификации атрибутов, связанных с одним или большим количеством параметров CPE. Аргументы вызова для этого метода определены в таблице 17. Аргументы ответа определены в таблице 18.
Таблица 17. Аргументы SetParameterAttributes.
Аргумент |
Тип |
Описание |
ParameterList |
SetParameterAttributesStruct[] |
Список изменений, которые должны быть сделаны в атрибутах для набора параметров. Каждый элемент этого массива представляет собой структуру SetParameterAttributesStruct, как определено в таблице 19. |
Таблица 18. Аргументы SetParameterAttributesResponse.
Аргумент |
Тип |
Описание |
- |
void |
У этого ответа на метод нет аргументов. |
Таблица 19. Определение SetParameterAttributesStruct.
Имя |
Тип |
Описание |
Name |
string(256) |
Это имя параметра, к которому применяются новые атрибуты. Альтернативно, это может быть частичное имя, показывающее, что новые атрибуты применяются ко всем параметрам, которые в иерархии имен находятся ниже. Частичный путь ДОЛЖЕН заканчиваться на точку (".") после последнего имени узла в иерархии. Пустая строка обозначает верхний уровень иерархии. Примеры частичного и полного имени параметра см. в таблице 12. |
NotificationChange |
boolean |
Если true, то значение Notification заменит текущую настройку оповещения для этого параметра или группы параметров. Если false, то для настройка оповещения no не меняется. |
Notification |
int[0:2] |
Показывает, должен ли CPE включать измененные значения указанного параметра (параметров) в сообщение Inform, и должен ли CPE инициировать сессию к ACS, когда указанный параметр (параметры) меняют значение. Определены следующие значения:
0 = Оповещение отключено. CPE не нужно информировать ACS об изменении указанного параметра (параметров). 1 = Пассивное оповещение. Каждый раз, когда меняется значение указанного параметра, CPE ДОЛЖЕН включить новое значение в ParameterList сообщения Inform, которое будет отправлено в следующем сеансе установки сессии к ACS. 2 = Активное оповещение. Всякий раз, когда меняется значение указанного параметра, CPE ДОЛЖЕН инициировать сессию к ACS, и включить новое значение в ParameterList сообщения Inform сессии.
Всякий раз, когда изменение параметра отправляется в сообщении Inform из-за ненулевой установки Notification, в список событий (Events) ДОЛЖЕН быть включен Event-код "4 VALUE CHANGE".
CPE может возвратить ошибку "notification request rejected", если была сделана попытка включить оповещение на параметре, который считается неприемлемым (например, постоянно меняющаяся статистика). |
AccessListChange |
boolean |
Если true, то значение AccessList заменит текущий список доступа для этого параметра или группы параметров. Если false, то в списке доступа не делается никаких изменений. |
AccessList |
string(64)[] |
Массив из 0 или большего количества элементов, которым разрешен доступ записи для указанного параметра (параметров). Если здесь нет элементов, то доступ разрешен только из ACS. В настоящее время определен только один тип объекта, который может быть включен в этот список:
"Subscriber" показывает доступ на запись с помощью устройства, управляемого абонентом (subscriber) в LAN, как например через протокол на стороне LAN DSL CPE Configuration, или через UPnP.
По умолчанию перед любыми изменениями для списка доступа с помощью ACS, доступ ДОЛЖЕН быть предоставлен всем организациям, указанным выше. |
Для этого метода определены следующие fault codes: 9001, 9002, 9003, 9004, 9005, 9009. Если fault был вызван неправильным именем параметра, то ДОЛЖЕН использоваться fault-код Invalid Parameter Name (9005) MUST вместо более общего fault-кода Invalid Arguments (9003).
A.3.2.5. GetParameterAttributes. Этот метод может использоваться сервером ACS для чтения атрибутов, связанных с одним или большим количеством параметров CPE. Аргументы вызова для этого метода определены в таблице 20. Аргументы ответа определены в таблице 21.
Таблица 20. Аргументы GetParameterAttributes.
Аргумент |
Тип |
Описание |
ParameterNames |
string(256)[] |
Массив строк, каждая из которых представляет имя запрашиваемого параметра. Если имя параметра частичное, то это интерпретируется как запрос возврата всех параметров ветви иерархии имен, у которых одинаковый префикс, указанный в аргументе. Частичное имя ДОЛЖНО заканчиваться на точку (".") после последней части имени в иерархии. Пустая строка показывает вершину иерархии имен. Примеры полного и частичного имени см. в таблице 12. |
Таблица 21. Аргументы GetParameterAttributesResponse.
Аргумент |
Тип |
Описание |
ParameterList |
ParameterAttributeStruct[] |
Список информации управления доступом для указанного набора параметров. Каждый элемент в этом массиве представлен структурой ParameterAccessStruct, как определено в таблице 22. |
Таблица 22. Определение ParameterAttributesStruct.
Имя |
Тип |
Описание |
Name |
string(256) |
Это имя параметра, для которого предоставлены атрибуты. |
Notification |
int[0:2] |
Показывает, должен ли CPE включать измененные значения указанного параметра (параметров) в сообщение Inform, и должен ли CPE инициировать сессию к ACS, когда указанный параметр (параметры) меняют значение. Определены следующие значения:
0 = Оповещение отключено. CPE не нужно информировать ACS об изменении указанного параметра (параметров).
1 = Пассивное оповещение. Каждый раз, когда меняется значение указанного параметра, CPE ДОЛЖЕН включить новое значение в ParameterList сообщения Inform, которое будет отправлено в следующем сеансе установки сессии к ACS. 2 = Активное оповещение. Всякий раз, когда меняется значение указанного параметра, CPE ДОЛЖЕН инициировать сессию к ACS, и включить новое значение в ParameterList сообщения Inform сессии. |
AccessList |
string(64)[] |
Массив из 0 или большего количества элементов, которым разрешен доступ записи для указанного параметра (параметров). Если здесь нет элементов, то доступ разрешен только из ACS. В настоящее время определен только один тип объекта, который может быть включен в этот список:
"Subscriber" показывает доступ на запись с помощью устройства, управляемого абонентом (subscriber) в LAN, как например через протокол на стороне LAN DSL CPE Configuration, или через UPnP. |
Для этого метода определены следующие fault-коды: 9001, 9002, 9003, 9004, 9005. Если fault был вызван неправильным именем параметра, то ДОЛЖЕН использоваться fault-код Invalid Parameter Name (9005) MUST вместо более общего fault-кода Invalid Arguments (9003).
A.3.2.6. AddObject. Этот метод может использоваться сервером ACS для создания нового объекта из нескольких экземпляров - коллекции параметров и/или других объектов, для которых определено несколько экземпляров. Вызов этого метода принимает в качестве аргумента иерархическое имя (path name) коллекции объектов, для которой создается новый экземпляр. Пример:
Top.Group.Object.
Это path name не включает номер экземпляра для создаваемого объекта. Этот номер экземпляра назначается CPE и возвращается в ответе. Номер экземпляра, будучи назначенным, не может быть изменен, пока объект не будет удален с помощью метода DeleteObject. После создания к параметрам или субобъектам объекта обращаются через path name, дополненным номером экземпляра. Например, если метод AddObject возвратил номер экземпляра 2, то на параметр с этим экземпляром будут ссылаться через путь:
Top.Group.Object.2.Parameter
При создании объекта с использованием этого метода параметры, содержащиеся в объекте, будут установлены в свои значения по умолчанию, и связанные с параметром атрибуты установятся следующим образом:
• Notification установится в 0 (оповещения выключены). • AccessList включает все определенные организации.
Для маршрутизатора (Internet Gateway Device) может использоваться специфичный набор объектов для этого метода, перечисленный в Приложении B. Аргументы вызова для этого метода перечислены в таблице 23. Аргументы ответа определены в таблице 24.
Таблица 23. Аргументы AddObject.
Аргумент |
Тип |
Описание |
ObjectName |
string(256) |
Иерархическое имя (path name) коллекции объектов, для которых создается новый экземпляр. Это path name ДОЛЖНО заканчиваться на точку (".") после последнего узла иерархического имени объекта. |
ParameterKey |
string(32) |
Значение для установки параметра ParameterKey. Значение этого аргумента оставлено на усмотрение сервера ACS, и может быть оставлено пустым. |
Таблица 24. Аргументы AddObjectResponse.
Аргумент |
Тип |
Описание |
InstanceNumber |
unsignedInt[1:] |
Номер экземпляра нового созданного объекта. Будучи созданным, параметр или субобъект внутри этого объекта может быть впоследствии доступен с использованием этого номера экземпляра, указанного в path name. Номер экземпляра назначается устройством CPE произвольным образом, и номера экземпляров, назначаемые последовательными вызовами AddObject, не обязательно должны быть смежными.
CPE НЕ ДОЛЖЕН назначать номер экземпляра, который использовался для удаленного ранее экземпляра объекта. CPE ДОЛЖЕН полностью исчерпать диапазон целочисленных значений для имеющегося объекта перед тем, как начать повторно использовать номера экземпляров. |
Status |
int[0:1] |
Успешный ответ для этого метода возвратит целочисленное перечисление, определенное следующим образом:
0 = объект был создан. 1 = создание объекта было проверено и подтверждено, но пока не было применено (например, если требуется перезагрузка перед применением нового объекта). |
Для этого метода определены следующие fault-коды: 9001, 9002, 9003, 9004, 9005.
A.3.2.7. DeleteObject. Этот метод используется для удаления определенного экземпляра объекта. В качестве аргумента он принимает иерархическое имя (path name) экземпляра объекта, включающего номер экземпляра. Пример:
Top.Group.Object.2.
Если вызов этого метода был успешный, то указанный экземпляр этого объекта впоследствии становится недоступным, и CPE может сбросить состояние, которое было связано с любым параметром или субобъектом, содержащимся в этом экземпляре.
Когда экземпляр объекта удален, номера экземпляров, связанные с любыми другими экземплярами той же коллекции объектов могут остаться не измененными. Таким образом, номера экземпляров объектов в коллекции необязательно могут быть последовательными.
Для маршрутизатора (Internet Gateway Device) может использоваться специфичный набор объектов для этого метода, перечисленный в Приложении B. Аргументы вызова для этого метода перечислены в таблице 25. Аргументы ответа определены в таблице 26.
Таблица 25. Аргументы DeleteObject.
Аргумент |
Тип |
Описание |
ObjectName |
string(256) |
Иерархическое имя (path name) удаляемого экземпляра объекта. Это имя ДОЛЖНО заканчиваться на точку (".") после номера экземпляра объекта. |
ParameterKey |
string(32) |
Значение для установки параметра ParameterKey. Значение этого аргумента оставлено на усмотрение сервера ACS, и может быть оставлено пустым. |
Таблица 26. Аргументы DeleteObjectResponse.
Аргумент |
Тип |
Описание |
Status |
int[0:1] |
Успешный ответ для этого метода возвратит целочисленное перечисление, определенное следующим образом:
0 = объект был удален. 1 = удаление объекта было проверено и подтверждено, но пока не было применено (например, если требуется перезагрузка перед тем, как объект может быть удален). |
Для этого метода определены следующие fault-коды: 9001, 9002, 9003, 9005.
A.3.2.8. Download. Этот метод может использоваться сервером ACS, чтобы CPE загрузил указанный файл из указанного источника. Аргументы вызова для этого метода определены в таблице 27. Аргументы ответа определены в таблице 28.
Таблица 27. Аргументы Download.
Аргумент |
Тип |
Описание |
CommandKey |
string(32) |
Строка, которую CPE использует для ссылки на определенную загрузку. Этот аргумент задействован в методах TransferComplete и GetQueuedTransfers. |
FileType |
string(64) |
Integer, за которым идет пробел, после чего идет описание типа файла. В настоящий момент определены только следующие варианты для аргумента FileType:
"1 Firmware Upgrade Image" "2 Web Content" "3 Vendor Configuration File"
Определен также следующий формат для уникальных специфических для вендора типов файлов:
"X < OUI> < Vendor-specific identifier>"
< OUI> здесь заменяется 6 шестнадцатеричными цифрами OUI (Organizationally Unique Identifier, см. ссылку [9]), где все символы цифр в верхнем регистре, и значение дополнено начальными нулями. |
URL |
string(256) |
URL, указывающий источник для закачки файла. ДОЛЖЕН поддерживаться транспорт HTTP. МОГУТ поддерживаться и другие опциональные транспорты, как указано в секции 2.3.2 документации протокола CWMP [1] (см. также перевод этой документации [16]). |
Username |
string(256) |
Имя пользователя, используемое CPE для аутентификации на файловом сервере. Эта строка устанавливается в пустую строку, если аутентификация не требуется. |
Password |
string(256) |
Пароль, используемый CPE для аутентификации на файловом сервере. Эта строка устанавливается в пустую строку, если аутентификация не требуется. |
FileSize |
unsignedInt |
Размер загружаемого файла в байтах. CPE может использовать это значение, чтобы определить, есть ли у него достаточное место в памяти, чтобы принять файл, или чтобы освободить дополнительное место для размещения указанного файла. |
TargetFileName |
string(256) |
Целевое имя файла, используемое на целевой файловой системе как место назначения. Этот аргумент может быть оставлен пустым, если целевое имя файла может быть извлечено из самого загружаемого файла, или из аргумента URL, или если целевое имя файла не требуется. Если этот аргумент указан, но целевое имя файла также указано другим источником (например, если оно извлечено из самого загруженного файла), то этот аргумент ДОЛЖЕН игнорироваться. Если целевое имя файла используется, то загруженный файл заменит (перезапишет) существующий файл с таким же целевым именем (архивирует ли старый файл CPE, или нет, является местным вопросом). |
DelaySeconds |
unsignedInt |
Количество секунд с момента вызова этого метода до момента запроса CPE на инициацию загрузки. Если указано ненулевое значение, то загрузка НЕ ДОЛЖНА происходить в той же сессии транзакции, в которой произошел запрос на загрузку. |
SuccessURL |
string(256) |
Когда применимо, этот аргумент должен содержать URL, на который CPE должен перенаправить браузер пользователя, если загрузка прошла успешно. Этот URL может включать аргументы CGI, необходимые серверу ACS (например, для сохранения состояния сессии).
Это применяется только если загрузка была инициирована через интерфейс взаимодействия с пользователем на основе браузера, и CPE поддерживает возможность селективного перенаправления на основе результатов загрузки.
Когда в таком URL нет необходимости, то этот аргумент должен быть оставлен пустым. |
FailureURL |
string(256) |
Когда применимо, этот аргумент должен содержать URL, на который CPE должен перенаправить браузер пользователя, если загрузка не была успешной. Этот URL может включать аргументы CGI, необходимые серверу ACS (например, для сохранения состояния сессии).
Это применяется только если загрузка была инициирована через интерфейс взаимодействия с пользователем на основе браузера, и CPE поддерживает возможность селективного перенаправления на основе результатов загрузки.
Когда в таком URL нет необходимости, то этот аргумент должен быть оставлен пустым. |
Таблица 28. Аргументы DownloadResponse.
Аргумент |
Тип |
Описание |
Status |
int[0:1] |
Успешный ответ на этот метод возвратит целочисленное перечисление, определенное следующим образом:
0 = Загрузка была завершена и применена. 1 = Загрузка еще не завершена (например, если CPE нуждается в перезагрузке перед тем, как он сможет выполнить загрузку файла).
Если значение этого аргумента ненулевое, то CPE затем ДОЛЖЕН вызвать метод TransferComplete, чтобы показать статус завершения этой загрузки (либо успешный, либо неудачный), либо позже в той же сессии, либо в последующей сессии. |
StartTime |
dateTime |
Дата и время начала загрузки, в формате UTC. Это нужно заполнить только если загрузка была завершена. |
CompleteTime |
dateTime |
Дата и время момента, когда загрузка была полностью завершена, в формате UTC. Это нужно заполнить только если загрузка была завершена. |
Для этого метода определены следующие fault-коды: 9000, 9001, 9002, 9003, 9010, 9012, 9013.
A.3.2.9. Reboot. Этот метод приведет к перезагрузке CPE. CPE ДОЛЖЕН отправить ответ перед перезагрузкой. Это следует использовать с максимальной осторожностью. Аргументы вызова этого метода определены в таблице 29. Аргументы ответа определены в таблице 30.
Замечание: метод Reboot используется главным образом для диагностики. Он не предназначен для использования стороной ACS, чтобы инициировать перезагрузку после установки параметров CPE, или для инициации загрузки. Если CPE требует перезагрузку в таких случаях, то он сам отвечает за перезагрузку после завершения сессии. Поскольку некоторые CPE могут не нуждаться в перезагрузке при определенных условиях, ACS не должен вызывать в таких случаях Reboot, что привело бы к нежелательной перезагрузке.
Таблица 29. Аргументы Reboot.
Аргумент |
Тип |
Описание |
CommandKey |
string(32) |
Строка, возвращаемая в элементе CommandKey структуры InformStruct, когда CPE перезагрузился и вызвал метод Inform. |
Таблица 30. Аргументы RebootResponse.
Аргумент |
Тип |
Описание |
- |
void |
У этого ответа на метод нет аргументов. |
Для этого метода определены следующие fault-коды: 9001, 9002, 9003.
A.3.3. Методы сервера. Методы, перечисленные в этой секции, определены для поддержки на стороне сервера ACS. Их может вызывать только CPE.
A.3.3.1. Inform. CPE ДОЛЖЕН вызвать метод Inform на инициированной последовательности транзакции всякий раз, когда устанавливается соединение с ACS. Аргументы вызова для этого метода определены в таблице 31. Аргументы ответа определены в таблице 32.
Таблица 31. Аргументы Inform.
Аргумент |
Тип |
Описание |
DeviceId |
DeviceIdStruct |
Структура, которая уникально идентифицирует CPE, определенная в таблице 34. |
Event |
EventStruct[16] |
Массив структур, как это определено в таблице 35, показывающий одно или несколько событий, которые привели к установке транзакции сессии. Если существует один или несколько таких случаев, то CPE ДОЛЖЕН их все перечислить. |
MaxEnvelopes |
unsignedInt |
Максимальное количество SOAP-конвертов в одном HTTP response, которое CPE примет от ACS. Значение 0 показывает, что не существует определенного лимита на количество конвертов. |
CurrentTime |
dateTime |
Текущие дата и время, известные для CPE, в формате UTC. |
RetryCount |
unsignedInt |
Количество предыдущих попыток, которые были сделаны для вызова Inform перед тем, как он завершился успешно. В частности, это значение инкрементируется для каждой неудачной попытки либо установить соединение с ACS с целью отправить сообщение Inform message, и для каждого неудачного использования сообщения Inform, в котором был получен error response, либо когда не был принят ответ. Это значение сбрасывается в 0 после того, как сообщение Inform было отправлено с успешным ответом на него. |
ParameterList |
ParameterValueStruct[] |
Массив пар имя-значение (name-value), как это указано в таблице 11. Запрос Inform содержит список информационных параметров, специфичных для определенного типа CPE. Эти параметры, которые ДОЛЖНЫ быть включены в случае устройства типа маршрутизатор (Internet Gateway Device), перечислены в таблице 33. CPE МОЖЕТ также отправить дополнительные параметры. |
Таблица 32. Аргументы InformResponse.
Аргумент |
Тип |
Описание |
MaxEnvelopes |
unsignedInt |
Максимальное количество конвертов SOAP в одном HTTP post, которое ACS примет от CPE. Значение 0 показывает, что нет определенного ограничения на количество конвертов. |
В таблице 33 перечислены параметры, которые должны присутствовать в Inform от CPE-устройства маршрутизатора (Internet Gateway Device). CPE также МОЖЕТ включить дополнительные параметры в Inform.
Если вызов Inform произошел из-за изменения одного или нескольких значений параметров (из-за причины, не относящейся к установке со стороны самого ACS), которые ACS пометил для оповещения (активного или пассивного) с помощью SetParameterAttributes, то все измененные параметры должны также быть включены в ParameterList. Если параметр был изменен больше одного раза с момента последней такой модификации, то должно быть предоставлено только последнее измененное значение параметра.
Для элементов, помеченных в столбце "Inform при изменении" таблицы 33, любое изменение значения такого параметра ДОЛЖНО привести к тому, что CPE инициирует соединение с ACS для выдачи вызова метода Inform, независимо от того, пометил ли ACS эти параметры для оповещения, или нет.
Вызов Inform, который произошел из-за изменения параметра, помеченного в таблице 33 как "Inform при изменении", или изменения параметра, который пометил ACS для оповещения (активного или пассивного), ДОЛЖЕН включать событие Event "4 VALUE CHANGE" в списке событий.
Таблица 33. Список необходимых Inform параметров для Internet Gateway Device (шлюз Интернет, маршрутизатор).
Параметр |
Inform при изменении |
InternetGatewayDevice.DeviceInfo.SpecVersion |
|
InternetGatewayDevice.DeviceInfo.HardwareVersion |
|
InternetGatewayDevice.DeviceInfo.SoftwareVersion |
X |
InternetGatewayDevice.DeviceInfo.ProvisioningCode |
X |
InternetGatewayDevice.ManagementServer.ConnectionRequestURL |
X |
InternetGatewayDevice.ManagementServer.ParameterKey |
|
InternetGatewayDevice.WANDevice.{i}.WANConnectionDevice.{j}.WAN{***}Connection.{k}.ExternalIPAddress(8) |
X(9) |
Примечания:
(8) Здесь {i}, {j} и {k} относятся к WAN-соединению по умолчанию, и {***} это либо "IP", либо "PPP", в зависимости от типа соединения. (9) CPE должен инициировать Inform всякий раз, когда значение этого параметра меняется, или WAN-соединение по умолчанию происходит через другое подключение.
Таблица 34. Определение DeviceIdStruct.
Имя |
Тип |
Описание |
Manufacturer |
string(64) |
Производитель устройства CPE (только для отображения). |
OUI |
string(6) |
Организационно уникальный идентификатор производителя устройства. Представлен как значение из 6 шестнадцатеричных цифр в верхнем регистре символов, включающее начальные нули. Это значение ДОЛЖНО быть допустимым OUI, как определено в [9]. |
ProductClass |
string(64) |
Идентификатор класса продукта, для которого применим серийный номер. Т. е. для определенного производителя этот параметр используется для идентификации продукта или класса продукта, для которого параметр SerialNumber является уникальным. |
SerialNumber |
string(64) |
Идентификатор определенного устройства, который уникален для показанного класса продукта и производителя. |
Таблица 35. Определение EventStruct.
Имя |
Тип |
Описание |
EventCode |
string(64) |
Каждое значение состоит из идентификационного символа, за которым идет текстовое описание. Ниже перечислены значения специфических случаев, а также синтаксис для указания случаев, специфичных для производителя (vendor-specific).
"0 BOOTSTRAP" Показывает, что сессия была установлена из-за первоначальной инсталляции CPE, или из-за изменения ACS URL.
"1 BOOT" Показывает, что сессия была установлена из-за того, что у CPE было включено питание или произошел сброс. Это включает как начальную загрузку системы, так и перезагрузку по любой причине, включая использование метода Reboot.
"2 PERIODIC" Показывает, что сессия была установлена на периодическом интервале Inform.
"3 SCHEDULED" Показывает, что сессия была установлена из-за вызова метода ScheduleInform.
"4 VALUE CHANGE" Показывает, что сессия была установлена по причине изменения значения одного из параметров, включенных в метод Inform. Например, произошло выделение нового IP-адреса для CPE.
"5 KICKED" Показывает, что сессия была установлена с целью управления web identity (см. Приложение D), и в течение этой сессии будет вызван метод Kicked (см. секцию A.4.2.1).
"6 CONNECTION REQUEST" Показывает, что сессия была установлена из-за оповещения Connection Request от сервера ACS, как это описано в секции 3.2 [16].
"7 TRANSFER COMPLETE" Показывает, что сессия была установлена для индикации завершения ранее запрошенной загрузки или выгрузки (успешной или неудачной), и что метод TransferComplete будет вызван один или несколько раз в течение этой сессии.
"8 DIAGNOSTICS COMPLETE" Используется, когда заново устанавливается соединение с ACS после завершения диагностического теста, инициированного ACS. Например, DSL loop diagnostic (см. Приложение B).
"M "< имя метода> Если это результат из другого метода, то за значением "M" идет пробел и имя этого метода. Пример: "M Reboot".
"X "< OUI> < event> Событие, специфичное для производителя (vendor-specific event). OUI после "X" и пробела это организационно уникальный идентификатор, представленный как значение из 6 шестнадцатеричных цифр с символами в верхнем регистре и начальными нулями. Значение ДОЛЖНО быть допустимым OUI, как определено в [9]. Значение и интерпретация < event> относится к специфике производителя. Пример: "X 00D09E MyEvent". |
CommandKey |
string(32) |
Если структура Inform сгенерирована в ответ на случай, в котором указан CommandKey, то этот элемент ДОЛЖЕН содержать значение этого CommandKey. Во всех других случаях этот элемент пустая строка. В данной версии спецификации следующие причины приводят к тому, что для этого аргумента устанавливается значение аргумента CommandKey в вызове метода источника:
• Метод ScheduledInform. • Метод Reboot. • Метод Download. • Метод Upload. |
Для этого метода определены следующие fault-коды: 8001, 8002, 8003, 8004, 8005.
A.3.3.2. TransferComplete. Этот метод информирует сервер ACS о завершении (успешном или неудачном) передачи файла, инициированной методом Download или Upload. Метод TransferComplete ДОЛЖЕН вызываться только когда связанный ответ на Download или Upload показывает, что передача в настоящий момент еще не завершена (что показывается ненулевым значением аргумента Status в ответе). В таких случаях TransferComplete может быть вызван либо позже в той же сессии, в которой была инициирована передача, либо в любой последующей сессии. При своем использовании этот метод должен быть вызван только после завершения передачи (или при неудаче). Критерий, используемый CPE, чтобы определить, когда передача считается завершенной, относится к специфике реализации CPE. Аргументы вызова этого метода определены в таблице 36. Аргументы ответа определены в таблице 37.
Таблица 36. Аргументы TransferComplete.
Имя |
Тип |
Описание |
CommandKey |
string(32) |
Устанавливается в значение аргумента CommandKey, переданного в CPE вызовом метода Download или Upload, инициировавшего эту передачу. |
FaultStruct |
FaultStruct |
Структура отказа, как определено таблицей 38. Если передача была успешной, то FaultCode устанавливается в 0. Иначе устанавливается ненулевой FaultCode вместе с FaultString, индицирующей причину неудачи. |
StartTime |
dateTime |
Дата и время, когда началась передача, в формате UTC. |
CompleteTime |
dateTime |
Дата и время, когда передача закончилась, в формате UTC. |
Таблица 37. Аргументы TransferCompleteResponse.
Аргумент |
Тип |
Описание |
- |
void |
У этого ответа на метод нет аргументов. |
Таблица 38. Определение FaultStruct.
Имя |
Тип |
Описание |
FaultCode |
unsignedInt |
Цифровой код отказа, как определено в секции A.5.1. В случае отказа допускаются значения 9001, 9002, 9010, 9011, 9012. Значение 0 (ноль) показывает отсутствие ошибки. |
FaultString |
string(256) |
Понятное для человека текстовое описание отказа. Это поле ДОЛЖНО быть пустым, если FaultCode равен 0 (ноль). |
Для этого метода определены следующе fault-коды: 8000, 8001, 8002, 8003, 8004, 8005.
[A.4. Опциональные сообщения RPC]
A.4.1. Методы CPE. Методы, перечисленные в этой секции, необязательно могут поддерживаться устройством CPE. Только сервер ACS может вызвать эти методы.
A.4.1.1. GetQueuedTransfers. Этот метод может использоваться сервером, чтобы определить статус ранее запущенных загрузок или выгрузок. Аргументы вызова для этого метода определены в таблице 39. Аргументы ответа определены в таблице 40.
Таблица 39. Аргументы GetQueuedTransfers.
Аргумент |
Тип |
Описание |
- |
void |
У этого метода нет аргументов вызова. |
Таблица 40. Аргументы GetQueuedTransfersResponse.
Имя |
Тип |
Описание |
TransferList |
QueuedTransferStruct[16] |
Массив структур, определенных в таблице 41, каждая из них описывает состояние одной из передач, для которой CPE был ранее проинструктирован для выполнения, но которая еще не была полностью завершена. |
Таблица 41. Определение QueuedTransferStruct.
Имя |
Тип |
Описание |
CommandKey |
string(32) |
Устанавливается в значение аргумента CommandKey, переданного CPE в вызове метода Download или Upload, инициировавшего передачу. |
State |
int[1:3] |
Текущее состояние передачи. Определены значения:
1 = Пока не запущено. 2 = В процессе. 3 = Завершено, завершающая очистка.
Все другие значения зарезервированы. |
Для этого метода определены следующие fault-коды: 9000, 9001, 9002.
A.4.1.2. ScheduleInform. Этот метод может использоваться сервером ACS для запроса CPE запланировать одноразового вызова метода Inform (отдельно от периодических вызовов метода Inform) в будущем. Аргументы вызова для этого метода определены в таблице 42. Аргументы в ответе определены в таблице 43.
Таблица 42. Аргументы ScheduleInform.
Аргумент |
Тип |
Описание |
DelaySeconds |
unsignedInt |
Количество секунд от момента вызова этого метода до момента времени, на которое CPE должен однократно вызвать метод Inform. CPE пошлет ответ, и затем через DelaySeconds вызовет метод Inform. Этот аргумент должен быть больше 0. |
CommandKey |
string(32) |
Строка, которая должна быть возвращена в элементе CommandKey структуры InformStruct, когда CPE вызовет метод Inform. |
Таблица 43. Аргументы ScheduleInformResponse.
Аргумент |
Тип |
Описание |
- |
void |
У этого ответа на метод нет аргументов. |
Для этого метода определены следующие fault-коды: 9000, 9001, 9002, 9003.
A.4.1.3. SetVouchers. Этот метод используется сервером ACS для установки одной или нескольких опций ваучеров (Voucher) в CPE. Аргументы вызова для этого метода определены в таблице 44. Аргументы ответа определены в таблице 45.
Таблица 44. Аргументы SetVouchers.
Аргумент |
Тип |
Описание |
VoucherList |
base64[] |
Массив ваучеров, где каждый Voucher представлен строкой октетов в кодировке Base64. Подробная структура Voucher определена в Приложении C. |
Таблица 45. Аргументы SetVouchersResponse.
Аргумент |
Тип |
Описание |
- |
void |
У этого ответа на метод нет аргументов. |
Для этого метода определены следующие fault-коды: 9000, 9001, 9002, 9003, 9004.
A.4.1.4. GetOptions. Этот метод может использоваться сервером ACS для получения списка опций, установленных в настоящий момент в CPE, и их связанной информацией состояния. Аргументы вызова для этого метода определены в таблице 46. Аргументы ответа определены в таблице 47.
Таблица 46. Аргументы GetOptions.
Аргумент |
Тип |
Описание |
OptionName |
string(64) |
Строка, предоставляющая либо имя определенной опции, либо пустая строка, показывающая, что метод должен возвратить состояние всех опций, поддерживаемых CPE (независимо от того, включены они в данный момент или нет). |
Таблица 47. Аргументы GetOptionsResponse.
Аргумент |
Тип |
Описание |
OptionList |
OptionStruct[] |
Массив OptionStructs (структура описана в таблице 48), содержащий либо одну OptionStruct, если была запрошена информация отдельной опции, или список OptionStruct, в каждой по одной опции, поддерживаемой CPE. |
Таблица 48. Определение OptionStruct.
Имя |
Тип |
Описание |
OptionName |
string(64) |
Идентифицирует имя определенной опции. |
VoucherSN |
unsignedInt |
Идентифицирует номер определенной опции. |
State |
unsignedInt |
Число, сформированное из 2 бит, определенных следующим образом:
Bit 0 (LSB): 0 = опция в настоящий момент запрещена. 1 = опция в настоящий момент разрешена.
Bit 1: 0 = опция не настроена. 1 = опция настроена.
Интерпретация состояния настройки опции зависит от её назначения, но в целом это следует интерпретировать как указание на то, активно ли конечный пользователь выполнял какие-либо действия, необходимые для обеспечения полной работоспособности опции. |
Mode |
int[0:2] |
Этот элемент указывает, включена или отключена обозначенная опция; и если включена, указано ли окончание срока действия. Определены значения:
0 = Опция запрещена. 1 = Опция разрешена бессрочно. 2 = Опция разрешена с заданным сроком действия. |
StartDate |
dateTime |
Указана начальная дата для опции в формате UTC. Если это будущее время, то это дата разрешения опции. Если прошлое, то это дата, когда опция была разрешена. |
ExpirationDate |
dateTime |
Указана дата истечения срока действия опции в формате UTC, если это необходимо. |
IsTransferable |
boolean |
Указывает, обозначена ли опция как передаваемая (см. Приложение C). Определены значения:
0 = Опция не передаваемая. 1 = Опция передаваемая. |
Для этого метода определены следующие fault-коды: 9000, 9001, 9002, 9003.
A.4.1.5. Upload. Этот метод может использоваться сервером ACS, чтобы заставить CPE выгрузить указанный файл в обозначенное место. Аргументы вызова для этого метода определены в таблице 49. Аргументы ответа определены в таблице 50.
Таблица 49. Аргументы Upload.
Аргумент |
Тип |
Описание |
CommandKey |
string(32) |
Строка, которую CPE использует для определенной выгрузки. Этот аргумент используется методами TransferComplete и GetQueuedTransfers. |
FileType |
string(64) |
Целое число, за которым идет пробел и описание типа файла. Для аргумента FileType в настоящий момент определены только следующие значения:
"1 Vendor Configuration File" "2 Vendor Log File"
Для типов файла, специфичных для производителя, определен следующий формат:
"X < OUI> < Vendor-specific identifier>"
< OUI> заменяется 6 шестнадцатеричными цифрами OUI (Organizationally Unique Identifier), как это определено в [9], со всеми символами в верхнем регистре и добавленными начальными нулями. |
URL |
string(256) |
URL, указывающий место назначения файла. ДОЛЖЕН поддерживаться транспорт HTTP. МОГУТ поддерживаться другие опциональные транспорты, как указано в секции 2.3.2 [16]. |
Username |
string(256) |
Имя пользователя, используемое CPE для аутентификации на файловом сервере. Эта строка устанавливается в пустую строку, если аутентификация не требуется. |
Password |
string(256) |
Пароль, используемый CPE для аутентификации на файловом сервере. Эта строка устанавливается в пустую строку, если аутентификация не требуется. |
DelaySeconds |
unsignedInt |
Количество секунд от момента, когда этот метод был вызван, до момента времени, когда CPE настроен на инициирование загрузки. Нулевое значение показывает, что задержка не нужна. Если указано ненулевое значение, то выгрузка НЕ ДОЛЖНА произойти в той же транзакции, в которой был сделан запрос Upload. |
Таблица 50. Аргументы UploadResponse.
Аргумент |
Тип |
Описание |
Status |
int[0:1] |
Успешное значение ответа на этот метод возвратит integer-перечисление, определенное следующим образом:
0 = Выгрузка была завершена. 1 = Выгрузка пока не была завершена (например, выгрузка должна ожидать завершения сессии).
Если значение этого аргумента ненулевое, то CPE ДОЛЖЕН впоследствии вызвать метод TransferComplete, чтобы показать статус завершения этой выгрузки (успешный или неудачный) либо позже в той же сессии, либо в последующей сессии. |
StartTime |
dateTime |
Дата и время, когда была запущена выгрузка, в формате UTC. Это должно быть заполнено, только если выгрузка была завершена. |
CompleteTime |
dateTime |
Дата и время, когда выгрузка была полностью завершена и применена, в формате UTC. Это должно быть заполнено, только если выгрузка была завершена. |
Для этого метода определены следующие fault-коды: 9000, 9001, 9002, 9003, 9011, 9012, 9013.
A.4.1.6. FactoryReset. Этот метод сбросит CPE в свое заводское состояние по умолчанию. Следует использовать этот метод с предельной осторожностью. Аргументы вызова для этого метода определены в таблице 51. Аргументы ответа определены в таблице 52.
Таблица 51. Аргументы FactoryReset.
Аргумент |
Тип |
Описание |
- |
void |
У этого метода нет аргументов вызова. |
Таблица 52. FactoryResetResponse arguments.
Аргумент |
Тип |
Описание |
- |
void |
У этого ответа на метод нет аргументов. |
Для этого метода определены следующие fault-коды: 9000, 9001, 9002, 9003.
A.4.2. Методы сервера. Методы, перечисленные в этой секции, могут опционально поддерживаться сервером ACS. Только CPE может вызвать эти методы.
A.4.2.1. Kicked. CPE вызывает этот метод всякий раз, когда CPE "пинается", как описано в Приложении D. Аргументы вызова для этого метода определены в таблице 53. Аргументы ответа определены в таблице 54.
Таблица 53. Аргументы Kicked.
Аргумент |
Тип |
Описание |
Command |
string(32) |
Generic-аргумент, который может использоваться сервером ACS для идентификации или других целей. |
Referer |
string(64) |
Содержимое HTTP-заголовка "Referer", отправленного в CPE, когда он получил "пинок". |
Arg |
string(256) |
Generic-аргумент, который может использоваться сервером ACS для идентификации или других целей. |
Next |
string(1024) |
URL-адрес, который сервер ACS должен вернуть в ответе на метод при нормальных условиях. |
Таблица 54. Аргументы KickedResponse.
Аргумент |
Тип |
Описание |
NextURL |
string(1024) |
Следующий URL, на который должен быть перенаправлен браузер пользователя. Этот URL может включать аргументы CGI, необходимые серверу ACS (например, чтобы поддерживать состояние сессии).
Если сервер хочет направить браузер пользователя на страницу в самом устройстве CPE, то в результате возвращается только часть пути от URL (например "/security/index.html", без доменного имени или IP). Это позволит CPE использовать свое каноническое имя хоста в HTTP 302 response. Обратите внимание, что это потребовало бы, чтобы ACS имел предварительное знание доступных URL-адресов на устройстве CPE через некоторый механизм, выходящий за рамки этой спецификации. |
Если этот метод возвратил fault, то CPE ДОЛЖЕН перенаправить браузер на страницу ошибки, находящуюся на самом устройстве CPE.
Для этого метода определены следующие fault-коды: 8000, 8001, 8002, 8003, 8005.
A.4.2.2. RequestDownload. Этот метод позволяет CPE запросить загрузку файла с сервера ACS. На приеме этого запроса сервер МОЖЕТ вызвать метод Download, чтобы инициировать загрузку. Аргументы вызова для этого метода определены в таблице 55. Аргументы ответа определены в таблице 56.
Таблица 55. Аргументы RequestDownload.
Аргумент |
Тип |
Описание |
FileType |
string(64) |
Это запрашиваемый тип файла FileType (см. таблицу 27, где приведены разрешенные типы файла). |
FileTypeArg |
ArgStruct[16] |
Массив из 0 или большего количества дополнительных аргументов, где каждый аргумент это структура из пар имя-значение (name-value), как это определено в таблице 57. Использование дополнительных аргументов зависит от указанного типа FileType.***Определены следующие аргументы для каждого из определенных в настоящий момент типов файла.
FileType |
FileTypeArg |
Описание |
1 |
Firmware Upgrade |
(none) |
2 |
Web Content |
"Version" |
3 |
Vendor Configuration File |
(none) |
Если сервер ACS принял аргументы, которые он не понимает, то он ДОЛЖЕН игнорировать неизвестные аргументы, но обрабатывать запрос, используя понятые аргументы. |
Таблица 56. Аргументы RequestDownloadResponse.
Аргумент |
Тип |
Описание |
- |
void |
У этого ответа на метод нет аргументов. |
Таблица 57. Определение ArgStruct.
Имя |
Тип |
Описание |
Name |
string(64) |
Имя аргумента. |
Value |
string(256) |
Значение аргумента. |
Для этого метода определены следующие fault-коды: 8000, 8001, 8002, 8003, 8005.
[A.5. Fault Handling]
A.5.1. CPE Fault Codes. В таблице 58 перечислены коды отказа (fault codes), которые может возвратить CPE. Обратите внимание, что fault-коды показаны в десятичном представлении.
Таблица 58. Fault codes CPE.
Fault code |
Описание |
9000 |
Method not supported (метод не поддерживается). |
9001 |
Request denied (запрос отклонен без указания причины). |
9002 |
Internal error (внутренняя ошибка). |
9003 |
Invalid arguments (недопустимые аргументы). |
9004 |
Resources exceeded (исчерпание ресурсов; когда это используется в связи с методом SetParameterValues, это НЕ ДОЛЖНО использоваться для индикации для указания параметров с ошибками). |
9005 |
Invalid parameter name (недопустимое имя параметра; связано с методами SetParameterValues, GetParameterValues, GetParameterNames, SetParameterAttributes, GetParameterAttributes). |
9006 |
Invalid parameter type (недопустимый тип параметра; связано с методом SetParameterValues). |
9007 |
Invalid parameter value (недопустимое значение параметра; связано с методом SetParameterValues). |
9008 |
Attempt to set a non-writable parameter (попытка установить не записываемый параметр; связано с методом SetParameterValues). |
9009 |
Notification request rejected (запрос оповещения отклонен; связано с методом SetParameterAttributes). |
9010 |
Download failure (неудачная загрузка; связано с методами Download или TransferComplete). |
9011 |
Upload failure (неудачная выгрузка; связан с методами Upload или TransferComplete). |
9012 |
File transfer server authentication failure (неудачная аутентификация на файловом сервере; связано с методами Upload, Download или TransferComplete). |
9013 |
Unsupported protocol for file transfer (неподдерживаемый протокол передачи файла; связано с методами Upload и Download). |
9800 .. 9899 |
Vendor defined fault codes (коды ошибок, определяемые производителем). |
A.5.2. Server Fault Codes. Таблица 59 перечисляет fault-коды, которые могут быть возвращены сервером ACS. Обратите внимание, что fault-коды показаны в десятичном представлении.
Таблица 59. Fault codes сервера ACS.
Fault code |
Описание |
8000 |
Method not supported (метод не поддерживается). |
8001 |
Request denied (запрос отклонен без указания причины). |
8002 |
Internal error (внутренняя ошибка). |
8003 |
Invalid arguments (недопустимые аргументы). |
8004 |
Resources exceeded (исчерпание ресурсов). |
8005 |
Retry request (запрос повторной попытки). |
8800 .. 8899 |
Vendor defined fault codes (коды ошибок, определяемые производителем). |
A.5.3. Поведение сервера для повторной попытке метода. CPE ДОЛЖЕН повторить попытку выполнить каждый метод сервера ACS, если его вызов был неудачен. При повторной попытке неудачного вызова метода CPE должен использовать экспоненциальный алгоритм отката (back-off) при определении интервала повторной попытки.
CPE ДОЛЖЕН немедленно повторно вызвать метод, если получил "Retry request" (fault code 8005) в ответе сервера ACS.
[Ссылки]
1. TR-069: CPE WAN Management Protocol https://www.broadband-forum.org/pdfs/tr-069-1-1-0.pdf. 2. TR-046: Auto-Configuration Architecture & Framework https://www.broadband-forum.org/pdfs/tr-046-1-0-0.pdf. 3. TR-062: Auto-Config for the Connection Between the DSL Broadband Network Termination (B-NT) and the Network using ATM (TR-037 update) https://www.broadband-forum.org/pdfs/tr-062-1-0-0.pdf. 4. TR-044: Auto-Configuration for Basic Internet (IP-based) Services https://www.broadband-forum.org/pdfs/tr-044-1-0-0.pdf. 5. RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1 http://www.ietf.org/rfc/rfc2616.txt. 6. RFC 2617, HTTP Authentication: Basic and Digest Access Authentication http://www.ietf.org/rfc/rfc2617.txt. 7. RFC 2965, HTTP State Management Mechanism http://www.ietf.org/rfc/rfc2965.txt. 8. Simple Object Access Protocol (SOAP) 1.1 http://www.w3.org/TR/2000/NOTE-SOAP-20000508. 9. Organizationally Unique Identifiers (OUIs) http://standards.ieee.org/faqs/OUI.html. 10. The SSL Protocol, Version 3.0 http://www.netscape.com/eng/ssl3/draft302.txt. 11. RFC 2246, The TLS Protocol, Version 1.0 http://www.ietf.org/rfc/rfc2246.txt. 12. RFC 2132, DHCP Options and BOOTP Vendor Extensions http://www.ietf.org/rfc/rfc2132.txt. 13. XML-Signature Syntax and Processing, http://www.w3.org/2000/09/xmldsig. 14. PKCS #7, Cryptographic Message Syntax Standard http://www.rsasecurity.com/rsalabs/pkcs/pkcs-7/index.html, или http://www.ietf.org/rfc/rfc2315.txt. 15. TR-069 cwmp client implementation: open sources comparison site:stackoverflow.com. 16. TR-069: протокол CWMP для управления сетевыми устройствами. |