По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Перед тем как говорить о технологии 802.1ad (QinQ) нужно вспомнить о технологии 802.1q. Если коротко, то это технология тегирования трафика, то есть деление его на 2 уровне модели OSI (так как на L3 сеть мы делим уже по маске)
Чем же отличается трафик обычный от тегированного спросите вы? Практически ничем, кроме добавления добавление тега в заголовок фрейма.
Размер такого тега всего 4 байта (32 бита) и он состоит:
TPID (Tag Protocol Identifier): на него уходит половина размера тега и это значение равно 0x8100 для 802.1q (VLAN) , а для 802.1ad(QinQ) заголовок выглядит так: 0x88a8.
TCI (Tag Control Information): на это поле уходит оставшийся половина 16 бит тега.
В него входит:
PCP(Priority) - 3-битное поле, которое относится к классу обслуживания IEEE 802.1p и сопоставляется с уровнем приоритета кадра. (3 бита)
Drop eligible indicator (DEI) (ранее CFI - Canonical Format Indicator) - Может использоваться отдельно или вместе с PCP для обозначения фреймов, которые могут быть отброшены при наличии перегрузки. (1 бит )
VID (VLAN Identifier) - VLAN ID . размером он в 12 бит ,а это значит что в него можно заложить 2^12 = 4096 VLAN . Но на самом деле меньше ,так как 0 и 4095( 0x000 и 0xFFF) зарезервированы , в итоге 4094 получается. (12 бит)
Зачем же понадобилась технология двойного тегирования QinQ? Вот тут возникает как раз ограничение поля VID на количество VLAN (4094) и тут на помощь приходит стандарт 802.1ad, который позволяет уже увеличить количество VLAN. (4094*4094 = 16760836 - больше пока никому не потребовалось.)
Ниже укажу dump трафика вначале обычного 802.1q:
А потом 802.1ad наш QinQ о котором как раз и шла речь:
Как видно из вывода, тип трафика указывается в самом фрейме. (см картинки выше), а далее идёт тег и в случае QinQ ещё один тег.
Практика
А теперь давайте немного попрактикуемся.
Клиенты VPC1 и VPC2 будут находиться в одной подсети, это было сделано для удобства.
VPC1 : 172.16.20.1/24
VPC2 : 172.16.20.2/24
Теперь первый Mikrotik, который будет отвечать за access и trunk порты
/interface bridge
add name=bridge vlan-filtering=yes
/interface bridge port
add bridge=bridge interface=ether1 pvid=100
add bridge=bridge interface=ether2
/interface bridge vlan
add bridge=bridge tagged=ether2 vlan-ids=100
Mikrotik4 конфигурируется точно по такой же логике
/interface bridge
add name=bridge vlan-filtering=yes
/interface bridge port
add bridge=bridge interface=ether1 pvid=100
add bridge=bridge interface=ether2
/interface bridge vlan
add bridge=bridge tagged=ether2 vlan-ids=100
Теперь самое интересное: Mikrotik2
/interface bridge
add ether-type=0x88a8 name=bridge vlan-filtering=yes
/interface bridge port
add bridge=bridge interface=ether1 pvid=200 tag-stacking=yes
add bridge=bridge interface=ether2
/interface bridge vlan
add bridge=bridge tagged=ether1 vlan-ids=100
add bridge=bridge tagged=ether2 vlan-ids=200
Mikrotik3
/interface bridge
add ether-type=0x88a8 name=bridge vlan-filtering=yes
/interface bridge port
add bridge=bridge interface=ether1
add bridge=bridge interface=ether2 pvid=200 tag-stacking=yes
/interface bridge vlan
add bridge=bridge tagged=ether2 vlan-ids=100
add bridge=bridge tagged=ether1 vlan-ids=200
Я указал только простую настройку для понимания настройки его на оборудовании Mikrotik. Не стал копать глубоко и указывать что и зачем каждый заголовок значит, так как моей задачей было указать основную настройку оборудования и по какой логике работает Q-in-Q, и с этой задачей я справился. Удачи!
Настройка SNMP на коммутаторах и маршрутизаторах Cisco позволит вам мониторить состояние девайсов и сохранить свои нервы/время, в случаях, когда они начинают сбоить (игра на опережение). В целом, выглядит это так: сетевое устройство будет отправлять информацию о CPU, памяти, температуре, I/O и прочих на NMS (Network Management System) сервер. Изи – поехали.
Настройка
Подключаемся по SSH на наш сетевой узел и входим в режим конфигурации:
Кстати, о том, как настроить доступ по SSH к устройствам Cisco мы написали в статье.
en
conf t
Далее, необходимо создать группу (community), которая будет иметь права на чтение SNMP трапов (read – only). Назовем ее public:
SNMP – trap (трапы) – сообщения, которые отправит девайс, находящийся под мониторингом. Они нужны для того, чтобы информировать систему сбора трапов о наступлении различных событий.
snmp-server community public RO
Далее, аналогичным образом создаем частную группу (с правами на чтение и запись). Назовем ее private:
snmp-server community private RW
Сохраняем конфигурацию в NVRAM:
write memory
Важно! Проверьте сетевую связность между маршрутизатором и системой NMS, куда по плану роутер будет отправлять трапы.
Включаем трапы в Cisco IOS
Для передачи трапов в NMS, их необходимо включить. Сделать это не трудно – дайте в консоль девайса следующую команду (она включит все возможные виды трапов):
snmp-server enable traps
Если вам нужно конкретизировать, например, отправлять уведомления об окружении (температура, напряжение), или получать уведомление только о BGP, конкретизируйте это (полный список трапов можно найти на сайте вендора):
snmp-server enable traps envmon temperature
snmp-server enable traps bgp
Настройка NMS хоста
И напоследок, самое главное :) Укажем IP – адрес NMS – сервера, на который необходимо отправлять наши трапы. Опять же, если хотим отправлять все:
snmp-server host 192.168.0.2 public
Где, конечно, вместо 192.168.0.2 нужно указать адрес вашей NMS (это может быть Nagios, MRTG, Zabbix, Cacti и многие другие). Так же, вы можете указать конкретные события, которые нужно отправлять на этот NMS:
snmp-server host 192.168.0.2 public snmp bgp
Работаете с IP – АТС Asterisk? Тогда этот материал для вас. Говорить будем про отправку уведомлений в VK (Вконтакте) при входящем звонке. От слов к делу.
Получаем access_token
Первым делом, перейдите Developers раздел VK. В хедере (верхнем меню навигации) нажмите Мои приложения после чего нажмите Создать приложение:
Название - дайте имя для вашего аппликейшна. Например, Asterisk;
Платформа - выбираем Standalone-приложение;
Переходим в раздел настроек созданного приложения. Копируем ID приложения, как показано на рисунке ниже:
Отлично. Теперь скопируйте ссылку ниже:
https://oauth.vk.com/authorize?client_id=1234567&scope= offline,messages&redirect_uri=https://oauth.vk.com/blank.html&display=page&v=5.37&response_type=token
Предварительно замените client_id на ваше значение, полученное ранее (ID приложения). VK API спросит разрешения на доступ к некоторым данным:
Если все ОК, то VK вернет нам токен:
Если вы столкнулись с ошибкой вида «{"error":"invalid_request","error_description":"Security Error"}», то перелогиньтесь в вашей учетной записи в VK и повторите попытку
Сохраняем значение и переходим к настройке скрипта на стороне Asterisk.
Адаптация на Asterisk
Реализацию скрипта сделаем на .php. Создайте файл asteriskvk.php и наполните его следующим содержимым:
#!/usr/bin/php -q
<?php
require('phpagi.php');
$agi = new AGI();
$message = "Сейчас поступит звонок с номера: ";
$message .= $agi->request['agi_callerid'];
$id = "ID получателя сообщения";
$token = "Токен";
function send($id , $message, $token)
{
$url = 'https://api.vk.com/method/messages.send';
$params = array(
'user_id' => $id,
'message' => $message,
'access_token' => $token,
'v' => '5.37',
);
$result = file_get_contents($url, false, stream_context_create(array(
'http' => array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => http_build_query($params)
)
)));
}
send($id, $message, $token);
Скачать скрипт
В скрипте вам необходимо поменять следующие переменные:
$id - идентификатор пользователя, которому будет отправлено сообщение. Помимо user_id, это может быть ID группового чата;
$token - API - токен, который вы получили ранее;
Сохраняйте файл и загрузите в директорию /var/lib/asterisk/agi-bin/ после чего дайте следующие команды в консоли сервера:
chmod 755 /var/lib/asterisk/agi-bin/asteriskvk.php
chown asterisk:asterisk /var/lib/asterisk/agi-bin/asteriskvk.php
dos2unix /var/lib/asterisk/agi-bin/asteriskvk.php
Лезем в диалплан и на входящем маршруте адаптируем простенькую конструкцию:
exten => _.,n,AGI(asteriskvk.php)
Звоним и проверяем: