На внешнем ACS сервере есть возможность добавить онт сторонних производителей для дальнейшего управления по протоколу TR-069. Обычно устройства сторонних вендоров выносятся в отдельные классы, различные устройства определенного вендора можно отнести к одному классу. При ручном создании класса по умолчанию датамодель пустая, поэтому в некоторых случаях могут возникать проблемы с передачей параметров на CPE. На запросы SPV CPE может возвращать ошибку 9003. В таком случае необходимо сформировать датамодель, в которой будут указаны типы параметров.
Для начала необходимо включить типизацию для определенного класса в конфигурационном файле ACS сервера. В конфигурационном файле '/etc/acsd.conf' в конец строки 'dm_types_hwclasses = ' необходимо добавить класс, для которого нужно включить типизацию. Например, при включении типизации для класса TEST, строка должна иметь такой вид:
dm_types_hwclasses = UNKNOWN; TC; TEST
После внесения изменений в конфигурационный файл требуется перезапуск сервера:
$ service acsd restart
Далее необходимо сформировать или импортировать датамодель через acs-cli. Переходим в раздел acs-cli advanced / class TEST / datamodel:
tester@tester-acs:~$ acs-cli ******************************************** * ELTEX ACS CLI * * * * WARNING: Authorized Access Only * ******************************************** User 'admin' is logged in. Welcome, it is Пн апр 12 09:52:38 +07 2021 (acs)advanced (acs-advanced)class TEST (acs-advanced-class-'TEST')datamodel (acs-advanced-datamodel-'TEST') |
Здесь доступны несколько методов импорта датамодели.
copy — копирование с удалением старой датамодели;
append — добавление отсутствующих параметров;
merge — копирование поверх старой датамодели с перезаписью параметров в случае совпадения имён.
Далее, выбрав нужный метод, нужно определить откуда будет импортирована датамодель.
(acs-advanced-datamodel-'TEST')copy file Copy datamodel from CSV file model Copy datamodel from other hardware class result Copy datamodel from GPN command result |
При копировании из другого класса достаточно указать название класса, из которого будет взята датамодель:
(acs-advanced-datamodel-'TEST')copy model NTP (acs-advanced-datamodel-'TEST')commit |
Остановимся подробнее на копировании из результата GPN-запроса и на копировании из файла.
Обратите внимание, что после внесения изменений в датамодель и их применения, потребуется перезапуск ACS сервера.$ service acsd restart |
При использовании данного метода, необходимо предварительно выполнить GPN запрос к корневому объекту InternetGatewayDevice, либо к определенной ветке.
# acs-cli (acs)class test TEST(acs)cpe 454C54586C001A94 TEST(acs-cpe-'454C54586C001A94')direct get parameter names InternetGatewayDevice. false nocheck |
В конце запроса после запрошенного списка будет показан ID запроса:
Result ID: 7 |
Далее необходимо выполнить:
TEST(acs-cpe-'454C54586C001A94')top (acs)advanced (acs-advanced)class TEST (acs-advanced-class-'TEST')datamodel (acs-advanced-datamodel-'TEST')copy result 7 (acs-advanced-datamodel-'TEST')commit |
Посмотреть сформированную модель можно командой
(acs-advanced-datamodel-'TEST')show model all |
При использовании импорта из GPN-запроса все объекты будут занесены в датамодель с типом 'object'. При необходимости в дальнейшем возможно вручную отредактировать добавленные параметры, например:
(acs-advanced-datamodel-'TEST')show model all ## Name Type R/W Flags 1: InternetGatewayDevice.LANDevice.{i}.WLANConfiguration.{i}.SSID object R (acs-advanced-datamodel-'TEST')set parameter type InternetGatewayDevice.LANDevice.{i}.WLANConfiguration.{i}.SSID string(64) writable Ok (acs-advanced-datamodel-'TEST')commit (acs-advanced-datamodel-'TEST')show model all ## Name Type R/W Flags 1: InternetGatewayDevice.LANDevice.{i}.WLANConfiguration.{i}.SSID string(64) W |
Импортировать датамодель можно из файлов формата .xml и .csv, имеющих определенную структуру. Импортируемый файл берется из директории '/var/acsd/config/TEST', где TEST - название класса. Перед импортом, необходимо поместить сформированный файл в эту директорию.
CSV файл формируется в любом редакторе таблиц, например, MS Excel. Формат таблицы должен соответствовать формату таблицы, приведенному в TR. Например, рассмотрим добавление фрагмента датамодели https://cwmp-data-models.broadband-forum.org/tr-098-1-8-0.html
При просмотре сохраненный файл должен выглядеть так:
Для формирования таблицы необходимо:
1) Скопировать таблицу с датамоделью со страницы https://cwmp-data-models.broadband-forum.org/tr-098-1-8-0.html
2) Создать новый документ в MS Excel и установить для всех ячеек текстовый формат;
3) Вставить в документ скопированную таблицу. Вставленная таблица должна автоматически превратиться в таблицу excel (режим вставки "Использовать форматы конечных ячеек");
4) Удалить столбец Description и строку с заголовками столбцов (если эта строка была вставлена);
5) Этот документ сохраняется в формате CSV. Если редактор при сохранении файла предложит выбрать символ-разделитель, нужно выбрать ';'
Сформированная таблица должна иметь такой вид:
При просмотре сохраненный файл должен выглядеть так:
# cat csv_test.csv InternetGatewayDevice.;object;-;-;1.0 DeviceSummary;string(1024);-;-;1.0 LANDeviceNumberOfEntries;unsignedInt;-;-;1.0 WANDeviceNumberOfEntries;unsignedInt;-;-;1.0 UserNumberOfEntries;unsignedInt;-;-;1.0 SmartCardReaderNumberOfEntries;unsignedInt;-;-;1.0 InternetGatewayDevice.Services.;object;-;-;1.0 InternetGatewayDevice.Capabilities.;object;-;-;1.0 InternetGatewayDevice.Capabilities.PerformanceDiagnostic.;object;-;-;1.0 DownloadTransports;string;-;-;1.0 UploadTransports;string;-;-;1.0 SerialNumber;string(64);-;-;1.0 |
Полученный файл нужно поместить в директорию /var/acsd/config/TEST, имя файла может быть любым.
Далее переходим в acs-cli и даем команду на загрузку файла.
# acs-cli (acs)advanced (acs-advanced)class TEST (acs-advanced-class-'TEST')datamodel (acs-advanced-datamodel-'TEST')copy file csv csv_test.csv |
В случае успешного импорта должно появиться подобное сообщение:
13 added, 0 updated, 13 total. Ok |
Далее для применения модели нужно выполнить 'commit' и перезапустить сервер через 'service acsd restart'.
Порядок загрузки файла аналогичен импорту из csv файла.
# acs-cli (acs)advanced (acs-advanced)class TEST (acs-advanced-class-'TEST')datamodel (acs-advanced-datamodel-'TEST')copy file xml filename.xml |
Пример структуры xml-файла во вложении datamodel_example.xml