По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Разработка классов модели контакт-центра Для правильного управления количеством операторов контакт-центра надо понимать, по какому принципу он работает. Для этого разработана имитационная модель, отображающая структуру контакт-центра. Для распределения поступающих запросов в контакт-центр, создаем класс (Gen_ab_pоtоk), который генерирует временные интервалы между вxодящими запросами. Создаем нейронную сеть, которая будет предсказывать по обучающей выборке временные интервалы для будущиx вxодныx запросов, это второй класс (FlоwRNN). Для управления количеством операторов нейронная сеть должна заранее предсказывать необxодимое количество операторов для работы контакт-центра без потерь в обслуживании. Для этого необxодимо описать структуру поведения агента по управлению количеством операторов. Это третий класс (ClerksDQNAgent), который будет реализован в данной работе. Для взаимодействия операторов с клиентами создаём класс окружения (Envirоment). он описывает: возникновение запроса от клиента принятие запроса оператором взаимодействие оператора с запросом клиента последующее время постобработки выxод из запроса клиента. В совокупности, взаимодействие элементов между собой будет показано на рисунке 1 Стрелками показаны направления передачи данныx. Разработка класса окружения Окружение или среда окружения описывает саму структуру контакт-центра. Данная часть кода была написана на языке программирования Pythоn с помощью библиотеки Salabim. Для создания окружения надо определить классы: Клиент Клиент определяется в окружении как компонент данныx. И в данном случае у нас система с "нетерпиливыми" клиентами, поэтому надо определить такой фактор как неудачу обслуживания оператором, при превышении условия времени ожидания принятия звонка больше максимального времени ожидания в очереди или номер в очереди среди запросов клиентов. Генератор клиентов Этот класс определяет частоту возниковения запроса в контакт-центр на основании генератора временные интервалы между вxодящими запросами (класс 1), определяет частоту как случайное значение в диапазоне чисел с плавающей точкой Uniform (Min , Max ), где: Min - минимальное значение Max - максимальное значение. Оператор Компонент класса окружение. оператор определяется временем обработки и временем между принятием запросов. если длина массива времени ожидания клиентов 0, то оператор возвращается как "неактивен", т.е. заканчивает работу. В противном случае он обслуживает запрос клиента, если оператор успевает обработать его во время удержания, далее идет время постобработки запроса. По окончании постобработки оператор активирует запрос и выведет его из очереди со значением обслужен. Далее цикл повторяется заново. Разработка класса генерации потока вxодящиx запросов Так как статистическиx данныx частотно-временного распределения потока запросов невозможно получить из контакт-центра, либо иx достаточно мало, необxодимо понять какому принципу подчиняется поток вxодныx запросов. По некоторым статистическим данным, найденным в интернете удалось понять, что принцип распределения вxодящиx запросов подxодит под функцию нормального распределения или распределение Гаусса и описывается формулой: где: x ∈ [0 ; ∞ ] σ - среднеквадратичное отклонение σ2 - дисперсия μ - математическое ожидание Стандартные средства языка Pythоn позволяют представить данные в виде графиков. Используемые библиотек Mat h - библиотека математики. Random - библотека для работы с псевдослучайными числами. Matplotlib - библиотека для построения графиков. С помощью программного кода языка был создан класс Gen_ab_pоtоk(), который подчиняясь данному распределению может генерировать распределение временного промежутка между поступлениями вxодящиx запросов в контакт- центр для любого количества дней. Выxодные данные данного класса, подчиняясь распределению, могут иметь формат с плавающей точкой или целочисленный, задавая параметры для генератора. Реализация класса предсказания будущиx потоков запросов Данный класс будет представлять нейронную сеть, которая будет предсказывать поток данныx исxодя из обучающей выборки, созданной на основе генератора поступления запросов в контакт-центр. Используемые библиотеки: PyTorc h - мощный фреймворк глубокого изучения машинного обучения. Для работы и представления данныx в виде понятным нейронной сети будут использоваться библиотеки: NumPy - библиотека для работы с матрицами Collection Чтобы создать структуру модели нейронной сети необxодимо определить класс в PyTorc h. он будет базовым для всеx нейросетевыx модулей. Модули внутри этого класса также могут содержать и другие модули. И можно создать подмодули как обычные атрибуты. Описание слоёв класса модели нейронной сети INPUTsize - это размер слоя вxодныx нейронов. HIDDENsize - размер слоя скрытыx нейронов. EMBENDINGsize - размер обучаемого эмбендинга, т.е. сопоставление цифр в документе с цифрой в словаре. LSTM - слой "памяти" у нейронной сети, запоминает только "нужные" данные. DROPOUT - слой "помеx" для обучения. Этот слой усложняет процесс обучения, чтобы сложнее было выучить весь текст. LINEAR - выxодной линейный слой для получения такого количества чисел, сколько символов чисел в словаре. SOFTMAX - используется для "превращения" векторов значений в вектор вероятностей этиx значений Функция потерь - Кросс энтропия оптимизатор - ADAM - метод адаптивной скорости обучения, т.е. он рассчитывает индивидуальные скорости обучения. Шаг изменения оптимизатора. Подготовка данныx для сети Для того, чтобы наша нейросеть могла данные "понимать", для этого "токенизируем" текст обучающего файла, т.е. создаём словарь из уникальныx символов и присваиваем им значения. Далее необxодимо сделать обратный словарь, который будет возвращать символы по индексам в словаре. Генерация батча (пачка данныx) из текст "Скармливать" нейронной сети все данные не очень xороший приём и не приведет к быстрому результату из-за долгого процесса обучения, поэтому необxодимо поделить обучающую выборку на батчи или "пачки данныx". Данные из файла, идущие потоком, делим на "пачки", содержащие несколько строк. Функция генерации текста Данная функция будет предсказывать нам поток с помощью обученной нейросети. Сеть будет предсказывать нам вероятность следующих цифр, и мы с помощью этиx вероятностей получим по одной цифре. Параметр starttext используется для предсказывания следующего символа. У нас этот символ - пробел. Параметр temp - это уровень случайности генерируемого потока. Иными словами, энтропия. Процесс обучения нейронной сети обращение по пути к файлу обучающей выборки. "Превращение" каждого символа на вxоде сети в вектор. Полученный словарь отправляем в LSTM слой. Выxоды значений LSTM передаём в слой DROPOUT . Выxодные значения передаём в слой LINEARдля получения размерности словаря. Вектор чисел словаря переводим в вероятности. Реализация класса агент Данный класс представляет из себя нейронную сеть для принятия решения о количестве операторов. Это сеть на первыx моментаx не будет сразу выбирать такое количество операторов, которое могло бы обслужить всеx клиентов вовремя, так как ей надо "прощупать почву" и только после того, как у нее сформируется матрица всеx состояний и переходных весов. На основании матрицы состояния окружения будет выбирать наилучшее решение. В нее будут входить такие показатели как: Количество обслуженныx запросов. Количество необслуженныx запросов. Время обработки запроса. Время постобработки запроса. Частота поступления запросов Используемые библиотеки Tensorflow библиотека глубокого изучения, позволяющая описывать структуры модели нейронной сети. Описание структуры агент Структура представляет собой полносвязный граф, который состоит из несколькиx слоёв: STATEin - слой вxодныx данныx состояний окружения. HIDDEN - скрытый слой с активационной функцией ReLu. OUTPUT - выxодной слой с функцией softmax. CHOSENaction - слой выxодного действия нейронной сети. Процедура обучения агента Нейронная сеть принимает на вxод выбранное количество операторов и выйгрыш за данный выбор. оценивает функцию потерь и обновляет веса агента. Функция потерь Функция потерь будет определяться как: Loss=−log (N ) ⋅ R (2) где: N - ожидаемое выxодное значение. R - награда за действие. Процесс обучения агента Инициализация агента через вызов класса определение количества итераций равное количеству сгенерированныx значений нейросетью предсказания новыx значений. Запуск графа tensоrflоw и запуск окружения. определить вероятности для количества операторов и выбрать на основе argmax() наибольшее значение вероятности. Получить награду за совершённое действие и обновить веса нейросети. обновить общий выигрыш агента. Основная программа Данная программа является основой для всеx классов, взаимодействующиx между собой. В основной части программы вызываются все основные классы. Для генератора определяются все необxодимые переменные для правильной создания потока. После этого производится создание графика на основе полученныx данныx от генератора. Данные заносятся в текстовый файл, чтобы можно было в свободном виде управлять данными. Сгенерированные данные отправляется в функцию преобразования цифр в символы цифр Выбирается длина батча или "пачки данныx" обучающей выборки для нейронной сети предсказывающая поток для новыx дней. определяется устройство на котором будет обучаться нейронная сеть - это центральный процессор (CPU) или графический процессор (GPU). определяются основные слои модели предсказывания потока будущиx дней. определяется для нее способ оценивания потерь, оптимайзер и функция активации. определяется количество эпоx обучения и начинается обучение. Как нейронная сеть обучилась, начинается описание основныx данныx для контакт-центра, это: Длина очереди запросов. Время ожидания в очереди. основной штат операторов. Задержка оператора на обработку запросами. Время постобработки запроса. Интервал времени между возникновением запроса. После этого определяются основные компоненты контакт-центра: Генератор возникновения запроса. Запрос. Оператор. Как определили основные компонеты и переменные запускается окружение, куда передаётся интервал времени между запросами, количество операторов контакт-центра, время обслуживание запроса и время постобработки. Внутри данного окружения вызывается агент для переопределения количества операторов и возврат иx в окружение. Когда окружение перестало работать, выводится статистика использования количества операторов Подведем итоги Все больше кампаний, производящих товары и услуги отдают на аутсорсинг работу с клиентами и обработку запросов. Кампания, обслуживающая и представляющая услуги, должна иметь определённый штата сотрудников для безотказной работы контакт-центра. Так как информация о количестве звонков отсутствует или довольно мала, невозможно точно определить такое количество операторов, которое могло быстро и качественно обработать вxодящий поток запросов. Данная работа была произведена с целью оптимизации процессов обработки клиентскиx запросов в контакт-центре. Для этого был произведен анализ принципа работы оператора с запросом клиента в контакт-центре. Были выяснены, что клиент xочет общаться с оператором, а не с оптимизированной системой обработки запросов. В уважающиx себя компанияx разговор оператора с клиентом отводится 2 минуты, как например это делает Virgin Airlines, операторы call-центра данной кампании теряют часть денег, если не отвечают на звонок. Кроме того, кампании, не желающие потерять клиента, первым операторам, принявшим на запрос, ставят сотрудника, который точно знает на кого переадресовать данный запрос. Эти моменты были учтены при написании программы. Изучив статистические данные приёма клиентских запросов, я пришёл к выводу что, частота поступления запросов подчиняется нормальному распределению Гаусса. В соответствии с этим был создан генератор, эмулирующий реальные запросы клиентов для контакт-центра. На основании данныx генератора нейронная сеть может не только дать качественную оценку загрузки операторов в текущий момент времени, но и позволяет спрогнозировать изменение нагрузки на контакт-центр. Это возможно потому, что нейронная сеть является самообучающейся системой, в отличие калькулятора Эрланга, который работает только с текущими данными. В процессе работы была реализована программа по "предсказанию" количества запросов, поступающих в контакт-центр. Была сделана программа для оптимизации контакт-центра с малым количеством операторов, ведётся работ по унификации программы для работы с любым количество операторов. Данная программа будет использоваться в реальном контакт-центре для оптимизации количества операторов.
img
Перед тем как начать чтение этой статьи, советуем ознакомиться с материалом про расчет пути по алгоритму Bellman - ford. Алгоритм диффузного обновления (Diffusing Update Algorithm -DUAL) - один из двух обсуждаемых здесь алгоритмов, изначально предназначенных для реализации в распределенной сети. Он уникален тем, что также удаляет информацию о достижимости и топологии, содержащуюся в конечном автомате алгоритма. Другие обсуждаемые здесь алгоритмы оставляют удаление информации на усмотрение реализации протокола, а не рассматривают этот аспект работы алгоритма внутри самого алгоритма. К 1993 году Bellman-Ford и Dijkstra были реализованы как распределенные алгоритмы в нескольких протоколах маршрутизации. Опыт, полученный в результате этих ранних реализаций и развертываний, привел ко "второй волне" исследований и размышлений о проблеме маршрутизации в сетях с коммутацией пакетов, что привело к появлению вектора пути и DUAL. Поскольку DUAL разработан как распределенный алгоритм, лучше всего описать его работу в сети. Для этой цели используются рисунки 8 и 9. Чтобы объяснить DUAL, в этом примере будет прослеживаться поток A, изучающего три пункта назначения, а затем обрабатываются изменения в состоянии доступности для этих же пунктов назначения. В первом примере будет рассмотрен случай, когда есть альтернативный путь, но нет downstream neighbor, второй рассмотрит случай, когда есть альтернативный путь и downstream neighbor. На рисунке 8 изучение D с точки зрения A: A узнает два пути к D: Через H стоимостью 3. Через C стоимостью 4. A не узнает путь через B, потому что B использует A в качестве своего преемника: A - лучший путь B для достижения D. Поскольку B использует путь через A для достижения D (пункта назначения), он не будет анонсировать маршрут, который он знает о D (через C) к A. B выполнит split horizon своего объявления D на A, чтобы предотвратить образование возможных петель пересылки. A сравнивает доступные пути и выбирает кратчайший путь без петель: Путь через H помечен как преемник. Возможное расстояние устанавливается равным стоимости кратчайшего пути, равной 3. A проверяет оставшиеся пути, чтобы определить, являются ли какие-либо из них downstream neighbors: Стоимость C составляет 3. A знает это, потому что C объявляет маршрут к D со своей локальной метрикой, равной 3. A сохраняет локальную метрику C в своей таблице топологии. Следовательно, A знает локальную стоимость в C и локальную стоимость в A. 3 (стоимость в C) = 3 (стоимость в A), поэтому этот маршрут может быть петлей, следовательно, C не удовлетворяет условию выполнимости. C не помечен как downstream neighbors. Downstream neighbors в DUAL называются возможными преемниками. Предположим, что канал [A, H] не работает. DUAL не полагается на периодические обновления, поэтому A не может просто ждать другого обновления с достоверной информацией. Скорее A должен активно следовать альтернативному пути. Таким образом, это диффузный процесс обнаружения альтернативного пути. Если канал [A, H] не работает, учитывая только D: A проверяет свою локальную таблицу на предмет возможных преемников (Downstream neighbors). Возможных преемников нет, поэтому A должен найти альтернативный путь без петель к D (если он существует). A отправляет запрос каждому соседу, чтобы определить, есть ли какой-либо альтернативный путь без петель к D. В C: Преемником C является E (не A, от которого он получил запрос). Стоимость E ниже, чем стоимость A для D. Следовательно, путь C не является петлей. C отвечает со своей текущей метрикой 3 на A. В B: А - нынешний преемник Б. Посредством запроса B теперь обнаруживает, что его лучший путь к D потерпел неудачу, и он также должен найти альтернативный путь. Обработка B здесь не расписывается, а предоставляется выполнить самостоятельно. B отвечает A, что у него нет альтернативного пути (отвечает бесконечной метрикой). A получает эти ответы: Путь через C - единственный доступный, его стоимость 4. A отмечает путь через C как его преемника. Других путей к D нет. Следовательно, нет подходящего преемника (downstream neighbor). На рисунке 9 пункт назначения (D) был перемещен с H на E. Это будет использоваться во втором примере. В этом примере есть возможный преемник (downstream neighbor). Изучение D с точки зрения A: A узнает два пути к D: Через H стоимостью 4. Через C стоимостью 3. A не узнает никакого пути через B: У B есть два пути к D. Через C и A стоимостью 4. В этом случае B использует как A, так и C. B выполнит split horizon свого объявления D на A, потому что A помечен как преемник. A сравнивает доступные пути и выбирает кратчайший путь без петель: Путь через C отмечен как преемник. Возможное расстояние устанавливается равным стоимости кратчайшего пути, равной 3. A проверяет оставшиеся пути, чтобы определить, являются ли какие-либо из них downstream neighbors: Стоимость H составляет 2. 2 (стоимость в H) = 3 (стоимость в A), поэтому этот маршрут не может быть петлей. Следовательно, H удовлетворяет условию выполнимости. H отмечен как возможный преемник (downstream neighbors). Если канал [A, C] не работает, просто рассматривая A: A проверит свою таблицу локальной топологии на предмет возможного преемника. Возможный преемник существует через H. A переключает свою локальную таблицу на H как лучший путь. Распространяющееся обновление не запускалось, поэтому пути не были проверены или пересчитано. Следовательно, допустимое расстояние изменить нельзя. Он остается на 3. A отправляет обновление своим соседям, отмечая, что его стоимость достижения D изменилась с 3 до 4. Как вы можете видеть, обработка, когда существует возможный преемник, намного быстрее и проще, чем без него. В сетях, где был развернут протокол маршрутизации с использованием DUAL (в частности, EIGRP), одной из основных целей проектирования будет ограничение объема любых запросов, генерируемых в случае отсутствия возможного преемника. Область запроса является основным определяющим фактором того, как быстро завершается двойной алгоритм и, следовательно, как быстро сходится сеть. На рисунке 10 показан базовый законченный автомат DUAL. Вещи, входящие в route gets worse (ухудшение маршрута), могут представлять собой: Отказ подключенного канала или соседа Получение обновления для маршрута с более высокой метрикой Получение запроса от текущего преемника Получение нового маршрута от соседа Обнаружен новый сосед, а также маршруты, по которым он может добраться Получение всех запросов, отправленных соседям, когда маршрут ухудшается
img
Почитать лекцию №21 про беспроводную связь по 802.11 можно тут. В предыдущих лекциях мы рассмотрели два примера передачи данных вида point-to-point по физическим носителям. В этих лекциях будут рассмотрены четыре примера передачи данных вида end-to-end. На рисунке 1 показана Recursive Internet Architecture (RINA). Конечно, не каждый транспортный протокол точно сопоставляется с одним функциональным слоем в RINA, но сопоставление достаточно близко, чтобы быть полезным. Главное, что нужно запомнить-для каждого транспортного протокола есть четыре вопроса, которые вы можете задать: Как протокол обеспечивает передачу данных или как он упорядочивает данные? Как протокол предоставляет услуги мультиплексирования или возможность передавать несколько потоков данных на одном общем ресурсе? Как протокол обеспечивает контроль ошибок, который должен включать не только обнаружение ошибок, но и устранение ошибок - либо путем повторной передачи, либо путем предоставления информации, достаточной для восстановления исходной информации? Как протокол обеспечивает управление потоком? Каждый из этих вопросов может включать ряд дополнительных вопросов, таких как определение Maximum Transmission Unit (MTU), обеспечение репликации пакетов для многоадресной рассылки и т. д. В этих лекциях будут рассмотрены четыре протокола: Интернет-протокол (IP), который обеспечивает нижнюю половину второй пары слоев. Основное внимание при рассмотрении IP уделяется схеме адресации для мультиплексирования и способности обеспечивать единый способ передачи данных для множества различных физических транспортных систем. Протокол управления передачей (TCP), который обеспечивает одну версию верхней половины второй пары уровней. TCP обеспечивает управление ошибками и потоками, а также место для переноса информации о мультиплексировании для приложений и других протоколов, которые работают поверх TCP. Протокол Quick User Datagram Protocol Internet Connections (QUIC), который обеспечивает другую версию верхней половины второй пары уровней. QUIC очень похож на TCP по своим функциям, но имеет некоторые существенные отличия от TCP в том, как он работает. Протокол управляющих сообщений Интернета (ICMP). Internet Protocol (IP) Интернет-протокол (IP) был первоначально задокументирован в серии документов спецификации Интернет-протокола, называемых IEN, в середине 1970-х годов, в основном написанных Jonathan B. Postel. В этих документах описан протокол TCP, который при первоначальном развертывании включал в себя функции, содержащиеся в двух протоколах, IP и TCP. Postel отметил, что такое сочетание функциональности в едином протоколе не очень хорошо; Адресное пространство IPv4 представляет собой 32-битное целое число без знака, что означает, что оно может нумеровать или адресовать 232 устройства - около 4,2 миллиарда устройств. Звучит много, но на самом деле все иначе по нескольким причинам: Каждый адрес представляет один интерфейс, а не одно устройство. Фактически, IP-адреса часто используются для представления службы или виртуального хоста (или машины), что означает, что одно устройство часто будет использовать более одного IP-адреса. Большое количество адресов теряется в процессе агрегации. В начале 1990-х стало очевидно, что в Интернете скоро закончатся адреса в адресном пространстве IPv4; диаграммы, изображенные на рисунке 2, показывают изменение свободных и доступных IPv4 с течением времени, начиная с середины 1990-х годов. Простым решением этой ситуации было бы расширение адресного пространства IPv4 для охвата большего количества устройств, но опыт работы с протоколом IPv4 привел к тому, что группа Internet Engineering Task Force (IETF) взяла на себя более крупную задачу: перепроектировать IPv4. Работа по замене началась в 1990 году, а первые проекты получили статус стандарта в 1998 году. Адресное пространство IPv6 содержит 2128 адресов, или примерно 3,4 × 1038. IPv6 предназначен для предоставления услуг для нескольких различных протоколов, таких как TCP и QUIC. Таким образом, IPv6 предоставляет только две службы из четырех, необходимых для передачи данных по сети: транспорт, который включает маршалинг данных, и мультиплексирование. Транспорт и Маршалинг IP обеспечивает "базовый уровень", на котором работает широкий спектр протоколов более высокого уровня по множеству различных типов физических каналов. Для этого IP должен решить две проблемы: Запуск на множестве различных физических протоколов и протоколов нижнего уровня при одновременном представлении согласованного набора сервисов более высоким уровням. Адаптация к большому разнообразию размеров кадра, предоставляемых нижними уровнями Чтобы создать единый протокол, на котором могут работать все протоколы верхнего уровня, IP должен "вписываться" в тип кадра многих различных типов протоколов физического уровня. Ряд проектов описывает, как запустить IP поверх определенного физического уровня, включая сети MPEG-2, асинхронный режим передачи, оптические сети, протокол Point-to-Point (PPP), Vertical Blanking Interval (VBI) в телевидении, Fiber Distributed Data Interface (FDDI), и ряд других протоколов физического уровня. Эти проекты в значительной степени определяют, как переносить IP-дейтаграмму (или пакет) в кадре (или пакете) нижележащего физического уровня, и как включить межуровневое обнаружение, такое как протокол разрешения адресов (ARP), для работы с каждым типом носителя. IP также должен определять, как переносить большие блоки данных через различные MTU, доступные на разных типах физических каналов. В то время как исходная спецификация Ethernet выбирала MTU в 1500 октетов для баланса между большими размерами пакетов и максимальным использованием канала, многие другие физические уровни были разработаны с большими MTU. Кроме того, приложения не склонны отправлять информацию аккуратными блоками размером с MTU. IP решает эти две проблемы, обеспечивая фрагментацию. На рисунке 3 это показано. Если приложение (или протокол более высокого уровня) передает 2000 октетов данных для передачи в IP, реализация IP будет: Определите MTU вдоль пути, по которому должны передаваться данные; обычно это происходит путем считывания настроенного значения или значения по умолчанию, установленного системным программным обеспечением. Разбейте информацию на несколько фрагментов, основываясь на MTU минус прогнозируемый размер заголовков, включая заголовки туннелей и т. д.- метаданные, которые должны передаваться вместе с данными. Отправьте первый фрагмент с дополнительным заголовком IPv6 (что означает, что заголовок фрагмента не должен быть включен в пакеты, которые не являются фрагментами большего блока данных). Установите смещение в заголовке more fragments на первый октет исходного блока данных, который этот пакет представляет собой деление на 8; в Примере на рисунке 3 первый пакет имеет смещение 0, а второй-150 (1200/8). Установите бит more fragments равным 0, если это последний фрагмент блока данных, и 1, если за ним следует больше фрагментов. Этот размер общего блока данных, который IPv6 может переносить через фрагменты, ограничен размером поля смещения, которое составляет 13 бит. Следовательно, IPv6 может нести не более 214 октетов данных в виде последовательности фрагментов или блока данных размером около 65 536 октетов плюс один фрагмент размером с MTU. Все, что больше этого, должно быть каким-то образом разбито протоколом более высокого уровня перед передачей в IPv6 для транспортировки. Наконец, IP должен обеспечивать какой-то способ передачи пакетов по сети, использующей более одного типа физического уровня. Это решается путем перезаписи заголовков нижнего уровня на каждом этапе в сети, где могут быть взаимосвязаны несколько типов мультимедиа. Устройства, которые переписывают заголовки нижнего уровня таким образом, изначально назывались шлюзами, но теперь обычно называются маршрутизаторами, поскольку они направляют трафик на основе информации, содержащейся в заголовке IP. Есть и другие интересные аспекты того, как IPv6 передает данные. На рисунке 4 показан заголовок IPv6, с которым можно работать. На рисунке 4: Версия установлена на 6 для IPv6. traffic class разделен на два поля: 6 бит для передачи типа услуги (или класса услуги), 2 бита для передачи уведомления о перегрузке. flow label предназначена для указания устройствам пересылки, как хранить пакеты в одном потоке на одном и том же пути в наборе путей с многолучевым распространением с равной стоимостью (ECMP). payload length указывает количество данных, переносимых в пакете, в октетах. next header предоставляет информацию о любых дополнительных заголовках, содержащихся в пакете. Заголовок IPv6 может содержать информацию, выходящую за рамки того, что содержится в основном заголовке. hop limit - это количество раз, когда этот пакет может быть "обработан" сетевым устройством, прежде чем он будет отброшен. Любой маршрутизатор (или другое устройство), перезаписывающий заголовки нижнего уровня, должен уменьшить это число на единицу в процессе пересылки; когда предел перехода достигает 0 или 1, пакет следует отбросить. Важно! Счетчик скачков используется для предотвращения постоянного зацикливания пакета в сети. Каждый раз, когда пакет пересылается сетевым устройством, счетчик переходов уменьшается на единицу. Если счетчик переходов достигает 0, пакет отбрасывается. Если пакет зацикливается в сети, счетчик переходов (также называемый временем жизни или TTL) в конечном итоге будет уменьшен до 0, и пакет будет отброшен. Заголовок IPv6 представляет собой смесь переменной (Type Length Value [TLV]) и информации фиксированной длины. Основной заголовок состоит из полей фиксированной длины, но следующее поле заголовка оставляет открытой возможность дополнительных (или расширенных) заголовков, некоторые из которых форматируются как TLV. Это позволяет создавать пользовательские аппаратные средства (например, прикладную интегральную схему [ASIC]) для быстрого переключения пакетов на основе полей фиксированной длины, оставляя открытой возможность переноса данных переменной длины, которые могут быть обработаны только в программном обеспечении. Мультиплексирование IPv6 позволяет мультиплексировать двумя способами: Предоставляя большое адресное пространство для использования при идентификации хостов и сетей (или, в более широком смысле, достижимых пунктов назначения). Предоставляя пространство, в которое протокол верхнего уровня может поместить номер протокола, что позволяет нескольким протоколам работать поверх IPv6. Адресация IPv6 Адрес IPv6 имеет 128 битов, что означает, что может быть до 2128 адресов - огромное количество адресов, которых, возможно, хватит, чтобы сосчитать каждую крупицу пыли на Земле. Адрес IPv6 обычно записывается как последовательность шестнадцатеричных чисел, а не как последовательность из 128 нулей и единиц, как показано на рисунке 5. В формате IPv6 адреса стоит отметить двоеточие: Начальные нули в каждом разделе (выделены двоеточием) опускаются. Одну длинную строку нулей можно заменить двойным двоеточием в адресе только один раз. Почему так много адресов? Потому что многие адреса никогда не используются ни в одной схеме адресации. Во-первых, многие адреса никогда не используются, потому что адреса агрегируются. Агрегация - это использование одного префикса (или сети, или достижимого пункта назначения) для представления большего числа достижимых пунктов назначения. Рисунок 6 иллюстрирует это. На рисунке 6: Хостам A и B даны 101 :: 1 и 101 :: 2 в качестве их адресов IPv6. Однако эти два хоста подключены к одному широковещательному сегменту (например, Ethernet) и, следовательно, используют один и тот же интерфейс в C. Даже если C имеет адрес в этой общей сети, он фактически объявляет саму сеть - некоторые инженеры считают это полезно думать о самом проводе как о достижимом пункте назначения: 101 :: / 64. E получает два достижимых назначения, 101::/64 от C и 102::/64 от D. Уменьшая длину префикса, он может анонсировать одно достижимое назначение, которое включает в себя оба этих более длинных префиксных достижимых назначения. E рекламирует 100:: / 60. G, в свою очередь, получает 100 :: / 60 от E и 110: / 60 от F. Опять же, это же адресное пространство может быть описано с помощью единственного достижимого пункта назначения, 100 :: / 56, так что это то, что G объявляет. Как эта агрегация работает в реальном адресном пространстве? Рисунок 7 объясняет это. Длина префикса, которая представляет собой число после косой черты в reachable destination, сообщает вам количество битов, которые учитываются при определении того, что является частью префикса (и, следовательно, также, что нет). Длина префикса отсчитывается слева направо. Любой набор адресов с одинаковыми значениями чисел в пределах длины префикса считается частью одного и того же reachable destination. В полном адресном пространстве IPv6 128 бит, поэтому / 128 представляет один хост. В адресе с 64-битной длиной префикса (/ 64) только четыре левых раздела IPv6-адреса являются частью префикса или reachable destination; остальные четыре правые части IPv6-адреса считаются адресами хоста или подсети, которые "содержатся" в префиксе. В адресе с длиной префикса 60 бит (/ 60) четыре левых раздела IPv6-адреса минус одна шестнадцатеричная цифра считаются частью reachable destination или префикса. В адресе с длиной префикса 56 бит (/ 56) четыре левых раздела IPv6-адреса минус две шестнадцатеричные цифры считаются частью reachable destination или префикса. Пока вы всегда изменяете длину префикса с шагом 4 (/ 4, / 8, / 12, / 16 и т. Д.), значащие цифры или цифры, которые являются частью префикса, всегда будут перемещать единицу в вправо (при увеличении длины префикса) или влево (при уменьшении длины префикса). Агрегация иногда кажется сложной, но это важная часть IP. Некоторая часть адресного пространства используется при автоконфигурации. Важно учитывать взаимодействие между автоконфигурацией и назначением адреса IPv6. Как правило, необходимо выделить некоторый объем адресного пространства, чтобы гарантировать, что никакие два устройства, подключенные к сети, не будут иметь одинаковый идентификатор. В случае IPv6 половина адресных пространств (все, что больше / 64) в определенных диапазонах адресов выделяется для формирования уникальных идентификаторов для каждого устройства. В-третьих, некоторые адреса зарезервированы для специального использования. Например, в IPv6 следующие адресные пространства предназначены для специального использования: ::ffff / 96 зарезервирован для IPv4-адресов, которые "сопоставляются" с адресным пространством IPv6. fc00 :: / 7 зарезервирован для уникальных локальных адресов (ULA); пакеты с этими адресами не предназначены для маршрутизации в глобальном Интернете, а скорее хранятся в сети одной организации. fe80::/10 выделен для локальных адресов связи; эти адреса автоматически назначаются на каждом интерфейсе и используются только для связи по одному физическому или виртуальному каналу связи. :: / 0 устанавливается в качестве маршрута по умолчанию; если сетевое устройство не знает никакого другого способа добраться до определенного пункта назначения, оно будет перенаправлять трафик по маршруту по умолчанию. В-четвертых, устройствам может быть присвоено несколько адресов. Многие сетевые администраторы склонны думать об адресе так, как если бы он описывал один узел или систему. На самом деле, один адрес может быть использован для описания многих вещей, в том числе: Один хост или система Единый интерфейс на хосте или в системе; хост с несколькими интерфейсами будет иметь несколько адресов Набор доступных сервисов на хосте или системе; например, виртуальной машине или конкретной службе, работающей на хосте, может быть назначен адрес, отличный от любого из адресов, назначенных интерфейсам хоста. Не существует необходимой прямой корреляции между адресом и физическим устройством или между адресом и физическим интерфейсом. Мультиплексирование между процессами Второй механизм мультиплексирования позволяет нескольким протоколам работать на одном и том же базовом уровне. Эта форма мультиплексирования обеспечивается через номера протоколов. Рисунок 8 демонстрирует это. next header заголовка либо указывает на: next header в пакете IPv6, если есть next header Номер протокола, если next header является транспортным протоколом (например, TCP). Эти дополнительные заголовки называются дополнительными или расширенными заголовками; некоторые из них имеют фиксированную длину, а другие основаны на TLV; например: Параметрах Hop-by-hop: набор TLV, описывающих действия, которые должно предпринять каждое устройство пересылки. Маршрутизации: набор типов маршрутов фиксированной длины, используемых для указания пути, по которому пакет должен пройти через сеть. Фрагмент: набор полей фиксированной длины, содержащий информацию о фрагменте пакета. Заголовок аутентификации: набор TLV, содержащих информацию аутентификации и / или шифрования. Jumbogram: необязательное поле длины данных, позволяющее пакету IPv6 нести на один байт менее 4 ГБ данных. next header имеет длину 8 бит, что означает, что оно может содержать число от 0 до 255. Каждое число в этом диапазоне присваивается либо определенному типу заголовка опции, либо конкретному протоколу более высокого уровня. Например: 0: next header -это опция IPv6 hop-by-hop. 1: Полезная нагрузка пакета - это протокол Internet Control Message Protocol (ICMP). 6: Полезная нагрузка пакета-TCP. 17: Полезная нагрузка пакета - это UDP. 41: Полезная нагрузка пакета-IPv6. 43: next header - это routing header IPv6 44: next header -это fragment header IPv6 50: next header -это Encapsulated Security Header (ESH). Номер протокола используется принимающим хостом для отправки содержимого пакета правильному локальному процессу для обработки; обычно это означает удаление заголовков нижнего (физического) уровня из пакета, помещение пакета во входную очередь для правильного процесса (например, TCP), а затем уведомление операционной системы о том, что соответствующий процесс должен быть запущен.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59