Уроки обучения дизайну для детей могут строиться вокруг пары самостоятельных направлений. Это, скажем, web-дизайн, в рамках которого предполагается погружение в теорию и практику использования Figma и подобных сервисов для прототипирования и создания визуальных макетов страниц. Второе же направление в данном контексте – графический дизайн. Осваивать его ребята различных возрастов могут путем работы с рядом редакторов, например Photoshop и Illustrator.
Собрали несколько комплексных и обособленных онлайн-курсов и проанализировали их: если тема дополнительного обучения творческого ребенка актуальна, материал придется кстати.
Содержание
Графический и веб-дизайн для детей: подборка онлайн-курсов для ребят младшего школьного и подросткового возраста
Форматы: пройти уроки обучения графическому и веб-дизайну для детей можно в группе или один на один с опытным учителем.
Цена: от 600 рублей за час.
Скидка: 10 %. Получить выгоду удастся, если заплатить за 12 уроков минимум в день обращения.
Оплата маткапиталом: предусмотрена, дополнительно можно оформить вычет в размере 13 % и воспользоваться рассрочкой.
Содержание уроков: если коротко, то занятия по графическому и веб-дизайну для подростков помогут участникам траектории разобраться в создании сайтов, использовании Adobe Photoshop и Illustrator, а также собрать ряд проектов и добавить их в собственное портфолио.
Если более конкретно, то школьникам предстоит освоить:
Веб-дизайн на примере использования Figma. Это сервис, функционирующий онлайн и предназначенный специально для создания макетов и прототипов сайтов. Дополнительно в соответствующий перечень блоков теории и практики заложены темы, касающиеся создания веб-проектов посредством конструктора Tilda, не требующего навыков в написании кода;
Графический дизайн на примере использования Photoshop и Illustrator от Adobe. Если более конкретно, то участникам образовательной траектории предстоит поработать с цветом, формами, расположением визуальных элементов в проектах, а также вникнуть в векторную и растровую графику как обособленные сферы графического дизайна в целом.
Уроки графического дизайна для школьников, обучающихся в 5–11-х классах
Форматы: организатор набирает мини-группы, индивидуальные уроки не предусмотрены.
Цена: от 770 рублей за урок.
Темы: применение Figma, использование Photoshop, конструирование сайтов посредством Tilda и т. д.
Занятия по графическому и веб-дизайну: обучение для школьников
Форматы: мини-группы.
Цена: весь курс стоит от 34 750 рублей.
Темы: дизайн лендингов, графические концепции, работа с визуалом, разработка афиш и баннеров, оформление плакатов и т. д.
Цифровой дизайн: уроки для ребят 7–16 лет
Форматы: только индивидуальные удаленные уроки.
Цена: от 1 200 рублей за урок.
Темы: работа с инструментами различных графических редакторов, основы композиции и колористики, выполнение иллюстраций, создание макетов сайтов, фирменный стиль и т. д.
Курс «Digital-дизайнер» для детей от 10 до 15 лет
Форматы: набираются группы.
Цена: от 1 650 рублей за одно дистанционное занятие.
Темы: азы иллюстрации, создание композиции графического проекта, верстка, элементы фирменного стиля, основы так называемой упаковки бренда и т. д.
Уроки графического дизайна для детей: обучение онлайн школьников 10+ лет
Форматы: проводятся индивидуальные и индивидуально-групповые уроки.
Цена: от 790 рублей за урок.
Темы: коллажи в Фотошопе, ретуширование фотографий, креатив и стилизация, создание стикеров из пикселей и т. д.
Уроки обучения веб-дизайну для детей от 8 до 17 лет
Форматы: только один на один с учителем.
Цена: базовая стоимость занятия составляет 1 500 рублей.
Темы: создание графических интерфейсов, работа с прототипами, использование сервиса Figma и т. д.
FAQ
Чем полезны уроки обучения веб-дизайну для детей?
Уроки веб‑дизайна дают детям отличную возможность развить креативность и прокачать пространственное мышление. На курсах ребята учатся работать с цветами, формами и композицией, продумывать визуальную гармонию проектов и не только. В процессе создания макетов сайтов и интерфейсов школьники пробуют выражать свои идеи через дизайн-концепции, экспериментируют с разными стилями и находят собственный почерк. Это не просто рисование, каким оно предстает на бумаге. Это цифровое и часто вполне осмысленное творчество, где каждая деталь имеет значение и помогает ребенку выразить себя.
Кроме того, веб‑дизайн дает детям возможность прокачивать полезные жизненные навыки. Ребята учатся ставить задачи, искать нестандартные решения и доводить проекты до конца, видя реальный результат своих усилий.
Работа над дизайном требует внимания к деталям, умения структурировать информацию и учитывать потребности пользователя, скажем, в роли заказчика. На практике все это формирует системное мышление.
А еще тематические занятия повышают цифровую грамотность и дают представление о том, как устроены современные онлайн‑сервисы вроде Figma, что в будущем может стать хорошей основой для профессионального роста в IT.
Как выбрать онлайн-курсы веб-дизайна для подростков?
При выборе онлайн‑курсов веб‑дизайна для подростка в первую очередь стоит обратить внимание на то, насколько программа соответствует его уровню и интересам. Важно, чтобы курс не перегружал сложными терминами с первых занятий, а постепенно вводил в тему: от базовых принципов композиции и цвета к работе с инструментами вроде Figma или Tilda.
Хорошо, если обучение построено на практике: выполнение даже мини‑проектов помогает увидеть результат своих усилий и поддерживает мотивацию. Также стоит оценить, насколько материал подается живо и понятно, ведь, скажем, скучная теория без примеров быстро утомляет, а вот разбор живых кейсов и возможность попробовать разные стили дизайна, наоборот, вовлекают в процесс.
Не менее значимы человеческий фактор и формат поддержки. Лучше выбирать курсы, где есть обратная связь от преподавателя: комментарии к работам, разборы ошибок и ответы на вопросы помогают подростку не застревать на трудностях и чувствовать, что его прогресс замечают.
Удобно, если занятия записаны и их можно пересмотреть в записи, а домашние задания не занимают слишком много времени: так легче совмещать обучение с школьной программой.
Учет этих и других факторов поможет сделать безошибочный выбор, который в дальнейшем даст устойчивый результат.
В каком возрасте можно записаться на обучение веб-дизайну для школьников?
Запись на тематические курсы возможна даже в младшие школьные годы, но важно отталкиваться, помимо прочего, от возрастных познавательных способностей и образовательных потребностей ребенка. Дело в том, что в различных онлайн- и офлайн-школах предусмотрены курсы, ориентированные на обособленные категории учащихся, скажем, на младших школьников и на подростков. По понятным причинам уроки отличаются насыщенностью, темами, содержательностью, а иногда и продолжительностью.
Если с определением оптимального возрастного периода возникают затруднения, можно обратиться за консультацией к конкретному организатору или изучить сайт выбранной школы. Это поможет узнать о перечне образовательных программ и их ориентации на определенные категории учащихся по возрастам.
Онлайн-обучение дизайну для детей подойдет только творческим ребятам?
Нет, онлайн‑обучение дизайну подойдет не только творческим ребятам. Сегодня тематические образовательные программы для детей строятся так, чтобы вести конкретного ученика с самого начала, то есть от азов и до сложных тем. Все это реализуемо, даже если до этого учащийся никогда не рисовал и не интересовался графикой.
В обыкновенном случае все начинается с простых и понятных шагов: ребята разбираются, как выбрать тот или иной цвет, как расположить элементы на экране, как работать с базовыми инструментами используемого редактора и т. д. Задача курсов в данном контексте сводится к тому, чтобы не требовать наличия таланта, а постепенно развивать вкус, чувство композиции и уверенность в работе с цифровыми инструментами.
Важно помнить, что современный дизайн в виртуальном пространстве – это не только про то, чтобы рисовать и делать это красиво. Речь еще и про логику, структуру, понимание базовых графических концепций. Соответствующие задачи привлекают и тех детей, которые могут изначально отдавать предпочтение четким правилам, инструкциям, чем свободному творчеству.
При этом важно понимать, что на курсах дизайна ребята учатся не вдохновению из головы, а конкретным приемам и алгоритмам действий для творчества, и именно через это открывают в себе способность придумывать и воплощать собственные идеи. Так что отсутствие опыта или творческих наклонностей – не препятствие, если ребенок хочет попробовать себя в представленном направлении.
Уроки языка программирования «Питон» с нуля для детей не всегда обязательно строить вокруг сухой теории и выполнения скучных проектов. Дело в том, что данный инструмент можно использовать в связке с Minecraft для разработки и кодинга модов, что на практике улучшает восприятие Python и делает учебный процесс куда более увлекательным. Это обусловлено популярностью Майнкрафта среди детей и подростков.
Содержание
Онлайн-курсы Python – языка программирования в Майнкрафте
Курс «Основы математической логики в среде Minecraft» для детей 8–12 лет
Уроки программирования и 3Д-моделирования для детей 8–10 лет
Онлайн-занятия по кодингу в Майнкрафте для школьников 9–12 лет
Online-курс по программированию в Майнкрафте для детей 7–12 лет
Уроки создания модификаций в Minecraft для школьников 10 лет и старше
Трехмерное моделирование и кодинг в игровой вселенной для ребят 8–10 лет
Уроки кодинга на языке программирования Python в Minecraft для ребят 9–14 лет
Дистанционный курс написания кода в Майнкрафте для ребят 9 лет и старше
FAQ
Можно ли записаться на курсы языка программирования «Питон» для подростков без Майнкрафта?
Есть ли онлайн-занятия по языку «Питон» для 8-х классов?
Какой язык программирования используется в Minecraft для кодинга модов?
На каком языке программирования написан сам Майнкрафт?
Онлайн-курсы Python – языка программирования в Майнкрафте
Собрали десятку тематических онлайн-курсов, которые помогут разобраться в написании кода на «Питоне» на примере программирования модов для популярной игровой вселенной Minecraft. По традиции представили некоторые аналитические сведения вроде цен, форматов и тем.
Python-разработчик: образовательная траектория для младших школьников и подростков 10–13 лет
Особенности: траектория объединяет два курса и характеризуется повышенным образовательным потенциалом с точки зрения освоения языка программирования «Питон» с нуля на уроках для детей.
Форматы: освоить представленное направление можно в группе или индивидуально с учителем.
Цена: от 600 рублей за один час онлайн-уроков.
Скидки: 10 %. Для получения выгоды нужно выполнить условие в виде оплаты 12 занятий минимум в день обращения.
Выгоды: вычет 13 % после учебы, оплата маткапиталом, рассрочка.
Содержательная сторона: отметили, что траектория объединяет два курса. Первый можно считать вводным: он основан на программировании модов для Майнкрафта на «Питоне». Второй же поможет углубиться в основы кодинга на данном языке и приблизиться к пониманию принципов продвинутого написания текстового кода.
Комплексность траектории выражается в том, что благодаря ее освоению каждый ребенок сможет разобраться в:
Основах кодинга на Python и продвинутом программировании на данном языке;
Принципах гейм-дизайна, создания игр и модов на примере разработки функциональных дополнений для Minecraft.
В блоки теории и практики заложены как базовые моменты вроде основных конструкций, так и углубленные темы. Это, скажем, программирование чат-ботов, создание 2Д-игр с нуля с помощью Python.
Так, курсы языка программирования «Питон» для детей и подростков, объединенные в траекторию, помогут овладеть данным инструментом и начать использовать его на продвинутом уровне даже вне рамок Майнкрафта.
Онлайн-уроки Python в Minecraft для ребят 10+ лет
Форматы: видео в записи.
Цена: доступ к видеокурсу на месяц стоит 7 990 рублей. Если хочется увеличить срок до 160 суток, потребуется заплатить 20 000+.
Темы: циклы, ввод текста, случайные числа, типы данных, создание модов для Майнкрафта и т. д.
Курс «Основы математической логики в среде Minecraft» для детей 8–12 лет
Форматы: один на один с учителем и в группе.
Цена: от 4 900 рублей за месяц.
Темы: операторы, компараторы, логические схемы, строительство в игровой вселенной и т. д.
Уроки программирования и 3Д-моделирования для детей 8–10 лет
Форматы: групповые занятия.
Цена: от 1 650 рублей за урок.
Темы: написание кода, создание 3D-моделей, скриптинг различных модов и т. д.
Онлайн-занятия по кодингу в Майнкрафте для школьников 9–12 лет
Форматы: мини-группы.
Цена: базовая стоимость занятия составляет 1 200 рублей.
Темы: структура Minecraft-модов, пиксельная графика, типы данных, координаты, условия и т. д.
Online-курс по программированию в Майнкрафте для детей 7–12 лет
Форматы: индивидуальное и групповое онлайн-обучение.
Цена: от 1 125 рублей за урок.
Темы: основы кодинга в игровой вселенной, создание игровых объектов, командная разработка и т. д.
Уроки создания модификаций в Minecraft для школьников 10 лет и старше
Форматы: группы.
Цена: от 5 200 рублей за месяц.
Темы: разработка Minecraft-модификаций, проектирование внутриигровых объектов, 3Д-моделирование и т. д.
Трехмерное моделирование и кодинг в игровой вселенной для ребят 8–10 лет
Форматы: групповое дистанционное обучение.
Цена: от 3 000 рублей за онлайн-урок.
Темы: моды для Minecraft, их создание и программирование, трехмерное моделирование и т. д.
Уроки кодинга на языке программирования Python в Minecraft для ребят 9–14 лет
Форматы: индивидуальное обучение.
Цена: нет информации.
Темы: методы и атрибуты, работа с координатами, условные операторы, сравнение, синтаксис «Питона», его потенциал с точки зрения создания модов и т. д.
Дистанционный курс написания кода в Майнкрафте для ребят 9 лет и старше
Форматы: индивидуальный и индивидуально-групповой.
Цена: от 790 рублей / урок.
Темы: основы программирования, азы 3Д-моделирования, создание мини-игр в виде модификаций и т. д.
FAQ
Можно ли записаться на курсы языка программирования «Питон» для подростков без Майнкрафта?
Да, такие курсы есть. Они предлагаются различными онлайн- и офлайн-школами программирования для детей.
Отличительная особенность – упор на использование языка для выполнения проектов, альтернативных модам для Minecraft. Вместе с тем не стоит полагать, что увлекательная практика исключается или опускается до минимума: проектная деятельность – основа множества современных детских курсов «Питона». Почти в любой вероятной ситуации ребятам предстоит осваивать теорию и закреплять получаемые представления посредством практики. Речь, скажем, о программировании чат-ботов, создании 2Д-игр на Python и не только.
Есть ли онлайн-занятия по языку «Питон» для 8-х классов?
Да, тематические курсы, соответствующие обозначенному классу, есть. Тематические направления дополнительного обучения предлагают многие онлайн- и офлайн-школы.
Чтобы выбрать достойный курс, стоит предварительно проанализировать его по ряду критериев. Это форматы, цены, плотность занятий, их количество, содержательность образовательной программы и т. д.
Дополнительно советуем уточнить сведения о лицензировании организатора: наличие разрешительной документации будет плюсом. В других статьях в блоге отмечали, что это гарантия качества образовательных программ. Дополнительно лицензия открывает клиентам доступ к ряду условных бонусов вроде возможности оплаты занятий ребенка средствами маткапитала или оформления налогового вычета в размере 13 %.
Какой язык программирования используется в Minecraft для кодинга модов?
В преобладающем количестве случаев речь о «Питоне», о чем позволяет утверждать подготовленная нами подборка. Но здесь же подчеркнем, что есть альтернативные направления, скажем, основанные на теории и практике использования функции Code Builder. В случае с ней предполагается вводное обучение младших школьников путем погружения в блочное программирование.
При этом важно учитывать, что в Code Builder необходимо использовать блоки с текстовыми командами, написанными на Python и JavaScript. То есть в случае с кодингом модов в неоднократно упомянутой игровой вселенной вероятны два варианта языков, а именно «Питон» и ДжаваСкрипт.
На каком языке программирования написан сам Майнкрафт?
Minecraft существует в двух основных версиях, которые написаны на разных языках программирования. Оригинальный вариант игры прописан посредством использования Java. Данная и стартовая версия создана Маркусом Перссоном.
Выбор представленного языка был обусловлен его кроссплатформенностью: игра может работать на различных операционных системах без необходимости переписывания кода. Кроме того, открытая архитектура как важное свойство Java позволила сформировать обширное сообщество моддеров. Речь о том, что пользователи получили возможность разрабатывать и устанавливать модификации, существенно расширяющие функционал игры.
Вторая версия под названием Minecraft: Bedrock Edition была переписана на языке C++. Здесь выбор, как кажется, связан с необходимостью обеспечить высокую производительность и эффективное управление ресурсами на разнообразных устройствах, включая консоли и мобильные телефоны. Потребность в этом стала вытекать из роста популярности Майнкрафта.
Благодаря C++ версия Bedrock способна похвастаться лучшей оптимизацией и стабильной работой даже на сравнительно слабых устройствах. Дополнительно вариант поддерживает кроссплатформенную игру, то есть пользователи могут играть вместе независимо от того, используют они ПК, консоль или смартфон.
Между версиями есть существенные различия. Java Edition доступна исключительно на ПК, предлагает широкие возможности для моддинга, но может характеризоваться проблемами производительности при установке большого количества модификаций.
Bedrock Edition отличается кроссплатформенностью и абсолютной стабильностью функционирования на разных устройствах, однако, что важно отметить, имеют место ограниченные возможности для создания модификаций. Некоторые условные моды доступны юзерам преимущественно в официальном магазине.
В этом посте поговорим про фрагментацию пакетов, разберемся как она работает и почему она не выгодна никому: ни хостам, ни маршрутизатором, сначала будет немного теории, а затем воспользуемся генератором пакетов и посмотрим дампы.
MTU параметр настраиваемый и не факт, что на всех линка будет настроен MTU, который будет пропускать пакеты, генерируемые отправителем.
Это некие вводные ограничения, которые нам дает Ethernet. IPv4 к этим ограничением добавляет то, что узел получатель должен гарантировать всем своим соседям, что он может принять IP-пакет размером 576 байт, а узел в IPv6 должен уметь обрабатывать пакеты размером 1280 байт.
С учетом вышеописанного легко можно представить две ситуации, в которых может начать работать фрагментация :
Хосты согласовали обмен пакетами 1500 байт (на самом деле они согласовали TCP или SCTP MSS), но на сети есть линк или линки, где MTU меньше 1500 байт.
Хосты генерируют пакеты размером более 1500 байт, а на транзитных узлах MTU равен 1500 байт.
Эти ситуации можно решить за счет хостов, им просто нужно генерировать такие пакеты, которые пролезут через любой линк на сети, проблема в том, что хосты не знают MTU на всей сети и обычно надеются, что MTU всей сети не меньше, чем MTU их интерфейсов, которые в эту сеть включены, но есть и другие варианты решения:
Транзитное устройство может уведомить отправителя о том, что тот генерирует слишком большие пакеты и, если отправителю не запрещено, то он может начать генерировать пакеты меньшего размера.
Транзитный узел может не уведомлять отправителя о том, что тот генерирует большие пакеты, а начать самостоятельно разбивать их на такие пакеты, которые гарантированно пройдут через линк. Это и есть фрагментация.
Слишком большие пакеты могут просто уничтожаться, но нам этот вариант не очень интересен.
Стоит понимать, что фрагментация пакетов явление вынужденное и не очень желательное, единственное достоинство фрагментации заключается в следующем: если приложения не заботятся о размерах передаваемых данных, то это делает IP, чтобы хоть каким-то образом, но связь между отправителем и получателем поддерживалась.
Минусов у фрагментации много, вот три основных на мой взгляд:
При потере одного из фрагментов можно считать, что теряется весь исходный пакет.
Фрагментация повышает нагрузку на устройства сети.
В некоторых случаях при сборке фрагментированного пакет может быть нарушена целостность передаваемых данных.
В IP заголовке имеется четыре поля, которые так или иначе используются при фрагментации.
Размер пакет (Total Lenght). В этом поле хранится полный размер пакета в байтах, т.е. заголовка плюс поля данных.
Идентификатор (Identification). Это поле помогает принимающей стороне собрать исходный пакет из полученных фрагментов, у фрагментов, которые являются частями одного исходного пакета, значение этого поля будет одинаковым.
Флаги (Flags). Под каждый флаг выделен один бит, нумерация начинается с нуля. Нулевой бит(нулевой флаг) нам не интересен, первый бит называется DF или do not fragment, если значение этого бита равно единицы, то пакет фрагментировать запрещено, если возникает ситуация когда у пакета DF = 1 и размер больше допустимого MTU, такой пакет уничтожается(некоторые устройства игнорируют бит DF и всё равно выполняют фрагментацию). Второй флаг называется MF или more fragments, он используется для того, чтобы обозначить конец последовательности фрагментированных пакетов, пока MF = 1 узел получатель будет ожидать новые фрагменты, как только придет пакет с MF = 0, получатель поймет, что последовательность фрагментированных пакетов закончилась.
Смещение фрагмента (Fragment Offset). IP не гарантирует того, что получатель будет получать пакеты в той же последовательности, в которой их генерировал отправитель. В случаях, когда фрагментации нет, проблема собрать всё в нужной последовательности это проблема вышестоящего процесса или протокола, но если получатель принял фрагментированную последовательность, задача собрать исходных пакет из фрагментов ложится на IP процесс, поле смещение помогает понять в какой последовательности надо собирать исходный пакет. Данное поле хранит численное значение, одна единица этого числа равна восьми байтам.
Вот так эти поля выглядят в дампе Wireshark.
Поля фрагментированного пакета:Total Length, Identification, Flags, Fragment Offset в дампе Wireshark
Структура IP-пакета
Цвета на двух картинках выше соответствуют.
Смещение фрагмента в IP
Стоит отдельно остановиться на поле Fragment Offset, его размер 13 бит, то есть максимальное значение этого поля 8191, но весь вопрос в том, какие единицы измерения используются для смещения фрагмента, если в этом поле стоит значение 1, то это означает, что сдвиг надо делать на 8 байт, то есть максимально возможное смещение 65528 байт.
Проще всего разобраться с вопросом смещения можно будет на примере, допустим, у нас есть два хоста, соединенных каналом с MTU 1500 байт, но хосты хотят обмениваться пакетами размером 5940 байт, в этом случае будет включаться механизм фрагментации, и каждый исходный пакет будет разделен на четыре пакета по 1500 байт, чтобы они гарантированно прошли через канал, смещение первого фрагментированного пакета будет равно нулю, у второго пакета оно уже будет 1480 байт, третий пакет будет иметь смещение 2960 и последний пакет будет со смещением 4440 байт, все описанное выше представлено на рисунке.
Пример работы фрагментации IP пакетов
Для удобства я пересчитывал единицы измерения смещения в байты.
Из примера понятно, что фрагментация это лишняя работа не только для транзитных узлов, которые ее выполняют, но и для хостов. Также в примере виден смысл поля ID и флага MF, по ним получатель понимает, что это не конец фрагментированной последовательности, но получатель заранее не знает размер исходного пакета.
В качестве проверки и подтверждения сказанного ранее я сделал пинг пакетам с размером, как в примере выше, и снял дамп, важно, чтобы MTU линков был равен 1500 байт чтобы получилось как в примере.
Пример фрагментированных пакетов в дампе Wireshark
Интересные столбцы выделены цветами:
голубой = размер пакета
зеленый = наличие флага MF
красный = смещение
оранжевый = идентификатор
Строки выделять не стал, поскольку розовая строка здесь означает конец фрагментированной последовательности. Плюс важно учитывать, что на этом скрине в столбце Offset значение смещения не в байтах.
Установка iPerf3 на Linux и в Windows
Перейдем к практике, тренироваться будем на той же лабе, которая использовалась в посте про MTU. Вот топология сети:
Топология сети лабы
Далее будет краткий гайд по установке и использованию iPerf в Linux и Windows, кому этот момент очевиден, можно смело пропускать.
Iperf представляет собой простой кросс-платформенный генератор трафика, у него есть две версии: вторая и третья, второй никогда не пользовался и чем она отличается от третьей не знаю. Iperf является клиент-серверным приложением.
Iperf это утилита командной строки в Windows, установка его здесь довольная простая, скачиваете архив по этой ссылке, выбирайте самую свежую версию, она внизу. Внутри полученного архива будет папка с именем iperf+номер_версии_разрядность_ОС:
Архив с iPerf3
Если хотите, можете скинуть эту папку в любое удобное вам место и на этом установка будет завершена. Я же создам в корне диска C папку с именем iperf3 и скопирую в него содержимое папки "iperf3.17_64.", так будет проще:
Установленный iPerf3
При желании можете добавить путь к файлу iperf3.exe в переменную PATH, тогда для запуска программы не придется каждый раз в командной строке переходить по пути C:\iperf3 чтобы запустить программу.
Установку в Linux буду показывать на примере Debian 10, пишем две команды:
sudo apt update&&upgrade -y
sudo apt install iperf3
В других дистрибутивах команды могут отличаться, в команде на установку iperf тройку после iperf пишем обязательно, иначе установится вторая версия.
Примечание
В репозитории дистрибутива, который вы используете, может находиться пакет не с самой последней версией iPerf, в моем случае вопрос версии не принципиален, нам просто надо посмотреть на работу фрагментации, но если вы планируете использовать его для тестов своих каналов, учитывайте два момента: тесты, выполненные на iperf разных версий, могут не показать реальной картины (обычно результаты хуже чем есть на самом деле), в разных версиях есть разные баги, влияющие на результаты тестирования. Microsoft же вообще не рекомендует использовать iPerf для тестов в Windows.
Как запустить тест скорости iPerf
Запустить тест скорости в iPerf дело не хитрое, начнем с сервера. Запуск сервера делается так:
iperf3 -s
Запущенный сервер iPerf в Linux
Сервер ожидает запросы от клиента на порт 5201 любого из транспортных протоколов: TCP, UDP, SCTP. Если у вас используется firewall, убедитесь что порт открыт.
Клиента iperf будем запускать в Windows, для этого нужно запустить командую строку желательно от имени администратора, перейти в папку, где лежит exe файл (переходить никуда не надо будет, если добавить путь к iperf3.exe в переменную PATH):
C:\Windows\system32>cd c:\iperf3
c:\iperf3>iperf3.exe -c 10.0.0.2 -f k -M 1300
Connecting to host 10.0.0.2, port 5201
[ 5] local 10.0.0.6 port 49786 connected to 10.0.0.2 port 5201
Опции для разных ОС одинаковые, пользователи Linux могут получить справку при помощи утилиты man, в Windows можно написать iperf3.exe -h, но лучше обратиться к документации. Опции iperf делятся на серверные, клиентские и универсальные.
Теперь по поводу команды в Windows: -c говорит о том, что iperf запускается в режиме клиента, при этом данной опции надо передать IP-адрес сервера. Опция -f k говорит iperf о том, что скорость должна быть отображена в kbps, а -M 1300 задает размер TCP MSS 1300 байт.
Учитывайте, что какой бы протокол вы не использовали, iperf выставить df-bit = 1 и это никак не изменить, насколько мне известно, и это нужно учитывать при дальнейших тестах, плюс по умолчанию iperf генерирует пакеты только в одну сторону: от клиента к серверу. На сервере статистика тоже отображается, вот статистика для соединения, которое мы инициировали командой, выполненной выше в Windows:
Статистика теста скорости iperf на Linux сервере
Более детальную информацию о тесте можно получать, если использовать опцию -V на клиенте и сервере.
Как убрать df-bit у транзитного IP-пакета на роутере Cisco
Пожалуй, самый плохой сценарий для маршрутизатора в вопросах фрагментации, это когда маршрутизатор выполняет эту самую фрагментацию. Выше я не случайно написал про df-bit, который iPerf всегда выставляет на генерируемые им пакеты. С выставленным df-bit мы фрагментацию никогда не увидим, значит, его надо обнулить, как это сделать средствами Windows я не знаю и тратить время на то, чтобы с этим разобраться я не захотел, а вот на роутерах Cisco можно написать route-map и навешать этот route-map на интерфейс, в который будут входить пакеты с установленным df-bit, который мы хотим обнулять.
Примечание
Для тех, кто читал пост про MTU. В той лабе на интерфейсе CSR в сторону коммутатора был создан саб-интерфейс Gi2.200, на нем и был настроен IP-адрес, сейчас же саб-интерфейс Gi2.200 удален, IP-адрес перенесен на Gi2, а на линке CSR/SW кадры ходят без вланов.
Создать route-map можно, например, такой:
CSR#conf t
CSR(config)#route-map RM_DEL-DF-BIT permit 10
CSR(config-route-map)#match ip address 101
CSR(config-route-map)#set ip df 0
CSR(config-route-map)#exit
CSR(config)#access-list 101 permit tcp 10.0.0.0 0.0.0.255 any
Строка set ip df 0 как раз и заставляет обнулять df-bit, а RM_DEL-DF-BIT это просто имя route-map, которое я ей придумал. Роут-мапу нам надо повешать на интерфейс Gi2, поскольку пакеты с df-bit, который мы хотим обнулять, будут входить именно в интерфейс (если бы остался саб-интерфейс Gi2.200, то тогда вешать надо было бы на него). Делается это так:
CSR#conf t
CSR(config)#int gi2
CSR(config-if)#ip policy route-map RM_DEL-DF-BIT
И давайте зададим IP MTU 1300 байт на интерфейс Gi1:
CSR#conf t
CSR(config)#int gi1
CSR(config-if)#ip mtu 1300
Всё, лабу подготовили.
Как работает фрагментация IP пакетов на роутере
Наконец-то мы добрались до самой фрагментации. Запустим iperf на Винде(команда iperf3.exe -c 10.0.0.2 -f k -M 1370) и снимем дампы:
Первый с линка между SW/Win, здесь будут идти не фрагментированные пакеты с TCP MSS 1370 байт, это уже больше чем MTU интерфейса Gi1, но к значению MSS нужно будет добавить еще размеры заголовков TCP и IP.
Второй дамп будем делать с линка Host_1/CSR. Здесь мы сможем увидеть фрагментированные пакеты, видя два дампа, мы сможем сделать вывод о том, что фрагментацию выполняет именно роутер.
Важно найти один и тот же пакет как в первом, так и во втором дампе, проще всего это сделать по идентификатору пакета. Вот пакет с номером 2e8b на линке SW/Win:
Не фрагментированный пакет размером 1410 байт
Размер пакета 1410 байт, df-bit = 1. А вот этот же пакет на линке Host_1/CSR:
Роутер разделил исходный пакет и теперь вместо одного пакета 1410 байт у нас два пакета размером 1430 байт
Во-первых, пакетов два: 1300 байт и 130 байт, а это больше изначальных 1410, уже неприятно, особенно, если счёт будем вести на миллионы. Во-вторых, видим, что пакеты, которые идут в сторону Debian, имеют df-bit = 0, из увиденного делаем выводы:
Route-map работает, CSR снимает df-bit и делает фрагментацию.
Фрагментацию выполняет роутер.
Не вижу сейчас особого смысла смотреть внутрь пакета, т.к. все интересующие нас поля я вывел в дамп, но если что, вот пакет, который генерировала Винда:
Исходный пакет размером 1410 байт
Вот первый фрагмент на выходе из CSR Gi1:
Первый фрагмент исходного пакета
А вот второй фрагмент:
Второй фрагмент исходного IP-пакета
Мы посмотрели пример фрагментации пакетов, понятно, что делать это на роутерах не очень правильно, но иногда приходится.
В следующий раз поговорим про Path MTU Discovery, для этого нужно отвязать route-map от интерфейса Gi2, чтобы роутер перестал обнулять df-bit:
CSR#conf t
CSR(config)#int gi2
CSR(config-if)#no ip policy route-map RM_DEL-DF-BIT
IP MTU 1300 байт на линке Gi1 оставляем.
Вопросы для ваших ответов
Может ли фрагментированный IP пакет быть меньше 68 байт и почему?
Напомню топологию
Топология сети лабы
Представим ситуации: на интерфейсе Gi2 роутера CSR настроен IP MTU 1400 байт, на всех остальных линках IP MTU 1500 байт, хост Windows генерирует в сторону Linux пакеты размером 1450 байт, что с этими пакетами будет?
Имеется линк с IP MTU 700 байт: на сколько фрагментов и какого разрмера будет разбит пакет1400 байт?
Имеется линк с IP MTU 725 байт: на сколько фрагментов и какого разрмера будет разбит пакет1430 байт?
Видео версия
Для тех, кому проще смотреть и слушать есть видео версия
В прошлом посте обсудили MTU и некоторые важные особенности, связанные с размерами пакетов и кадров, в этом давайте посмотрим: как можно менять MTU на различном оборудование, для примера рассмотрим следующие устройства:
Компьютер под управлением Linux, для этого будет использоваться виртуальная машина с Debian 10 (на схеме это Host_1).
Компьютер под управлением Windows 10 (значок с подписью Win).
Роутер CSR1000v под управлением IOS XE.
Хотелось бы еще рассмотреть классические коммутаторы, но коммутаторы под управлением IOL в EVE-NG, как я понял, всё-таки являются multilayer свичами, а не классическими L2, плюс на IOL у меня не получилось изменить канальный MTU, но SW на схему добавлен и мы немного с ним поработаем.
Схема, на которой будем всё это тестировать:
Схема для тестов с MTU
Зеленый кружок это возможность для выхода устройств лабы в реальную сеть, IP-адреса подписаны на схеме, а на линке SW/CSR кадры ходят в 200 влане, в сторону Windows кадры отдаются без метки.
Как изменить MTU на коммутаторе Cisco
Перед изменением MTU разберемся как его смотреть, есть стандартное заблуждение, что на оборудование Cisco в конфигурации нельзя увидеть значения MTU, если оно равно значению MTU по умолчанию, и действительно, команда show run не дает никаких результатов:
SW#sh run | in mtu
SW#sh run | in MTU
SW#
Можно даже посмотреть конфигурацию одного из интерфейсов:
SW#sh run int e0/0
Building configuration...
Current configuration : 29 bytes
!
interface Ethernet0/0
end
SW#
Но почему-то многие забывают что есть show run all:
SW#sh run all | in mtu
crypto ikev2 fragmentation mtu 576
mtu 1500
mpls mtu 1500
mtu 1500
mpls mtu 1500
mtu 1500
mpls mtu 1500
mtu 1500
mpls mtu 1500
no ip tcp path-mtu-discovery
SW#
В лабе EVE-NG используется коммутатор IOL, MTU у них меняются на интерфейсах. Вот пример конфигурации интерфейса Ethernet0/0:
SW#show run all | s Ethernet0/0
buffers Ethernet0/0 permanent 96
buffers Ethernet0/0 max-free 96
buffers Ethernet0/0 min-free 0
buffers Ethernet0/0 initial 0
interface Ethernet0/0
switchport
switchport access vlan 1
no switchport nonegotiate
no switchport protected
no switchport port-security mac-address sticky
mtu 1500
no ip arp inspection trust
ip arp inspection limit rate 15 burst interval 1
ip arp inspection limit rate 15
load-interval 300
carrier-delay 2
no shutdown
tx-ring-limit 64
tx-queue-limit 64
no macsec replay-protection
no macsec
ipv6 mfib forwarding input
ipv6 mfib forwarding output
ipv6 mfib cef input
ipv6 mfib cef output
mpls mtu 1500
snmp trap link-status
no onep application openflow exclusive
cts role-based enforcement
no mka pre-shared-key
mka default-policy
cdp tlv location
cdp tlv server-location
cdp tlv app
arp arpa
arp timeout 14400
channel-group auto
spanning-tree port-priority 128
spanning-tree cost 0
hold-queue 2000 in
hold-queue 0 out
ip igmp snooping tcn flood
no bgp-policy accounting input
no bgp-policy accounting output
no bgp-policy accounting input source
no bgp-policy accounting output source
no bgp-policy source ip-prec-map
no bgp-policy source ip-qos-map
no bgp-policy destination ip-prec-map
no bgp-policy destination ip-qos-map
SW#
Если не увидели в выводе выше значение MTU, то вот строки: mtu 1500, mpls mtu 1500. Все интерфейсов на коммутаторе четыре:
SW#
SW#sh int des
Interface Status Protocol Description
Et0/0 up up
Et0/1 up up
Et0/2 up up
Et0/3 up up
SW#
Посмотреть MTU на интерфейсе можно еще и так:
SW#sh int e0/0 | in MTU
MTU 1500 bytes, BW 10000 Kbit/sec, DLY 1000 usec,
SW#
Это канальный MTU. В конфигурации каждого порта мы видим два MTU: Ethernet и MPLS, оба равны 1500 байт, но порт можно перевести в режим роутера, тогда у него появится еще и IP MTU. Переводим порт:
SW#conf t
SW(config)#int e0/1
SW(config-if)#no switchport
Посмотрим какие MTU есть на коммутаторе:
SW#sh run all | in mtu
crypto ikev2 fragmentation mtu 576
mtu 1500
mpls mtu 1500
mtu 1500
ip mtu 1500
mpls mtu 1500
mtu 1500
mpls mtu 1500
mtu 1500
mpls mtu 1500
no ip tcp path-mtu-discovery
SW
Появилась строка ip mtu 1500, она относится к порту Ethernet0/1. Чтобы посмотреть IP MTU можно воспользоваться вот такой командной:
SW#sh ip int e0/1
Ethernet0/1 is up, line protocol is up
Internet protocol processing disabled
SW#
Возникла ошибка, дело в том, что интерфейс e0/1 переведен в режим роутера, но на нем не работает IP процесс, чтобы он заработал, надо настроить IP-адрес:
SW#conf t
Enter configuration commands, one per line.
SW(config)#int e0/1
SW(config-if)#ip add
SW(config-if)#ip address 1.1.1.1 255.255.255.0
Теперь мы можем посмотреть IP MTU и другие параметры процесса IP:
SW#sh ip int e0/1
Ethernet0/1 is up, line protocol is up
Internet address is 1.1.1.1/24
Broadcast address is 255.255.255.255
Address determined by setup command
MTU is 1500 bytes
MPLS MTU посмотреть можно так (но MPLS должен быть включен на интерфейсе):
SW# sh mpls interfaces e0/1 detail
Interface Ethernet0/1:
Type Unknown
IP labeling not enabled
LSP Tunnel labeling not enabled
IP FRR labeling not enabled
BGP labeling not enabled
MPLS not operational
MTU = 1500
SW#
Изменить канальный MTU можно было бы вот такой командой:
SW#conf t
SW(config)#int e0/1
SW(config-if)#mtu 1600
% Interface Ethernet0/1 does not support user settable mtu.
SW(config-if)#
IP MTU на образах IOL меняется:
SW(config-if)#ip mtu 1000
MPLS MTU тоже можно поменять:
SW(config-if)#mpls mtu 1100
Итоговая конфигурация интерфейса теперь такая:
SW#sh run int e0/1
Building configuration...
Current configuration : 106 bytes
!
interface Ethernet0/1
no switchport
ip address 1.1.1.1 255.255.255.0
ip mtu 1000
mpls mtu 1100
end
SW#
Классические коммутаторы Cisco, как правило, не позволяют менять MTU отдельных интерфейсов и не имеют конфигураций MPLS MTU, у них есть так называемый system mtu, который позволяет задавать MTU всем интерфейсам сразу, показать не могу, поэтому отправлю к странице Configuration Guide для Catalyst 2960.
Команда Ping и размеры пакетов при пинге
Порт e0/1 на коммутаторе никак не влияет на передачу данных между хостами. MTU на всех линках, которые обеспечивают связность между ПК, сейчас стандартный и равен 1500 байт. Давайте в этом убедимся пингом с одного хоста на другой:
user@debian:~$ ping 10.0.0.6 -M do -s 1472 -c 4
PING 10.0.0.6 (10.0.0.6) 1472(1500) bytes of data.
1480 bytes from 10.0.0.6: icmp_seq=1 ttl=127 time=1.20 ms
1480 bytes from 10.0.0.6: icmp_seq=2 ttl=127 time=1.51 ms
1480 bytes from 10.0.0.6: icmp_seq=3 ttl=127 time=1.46 ms
1480 bytes from 10.0.0.6: icmp_seq=4 ttl=127 time=1.76 ms
Здесь стоит обратить внимание на то, что опция -s 1472 задает размер ICMP вложения без учета ICMP и IP заголовков, таким образом получается, что сформированный IP-пакет равен 1500 байт. В этом легко убедиться, если посмотреть на дамп Wireshark:
Размер пакета, который был сгенерирован при пинге с опцией -s 1472 в Linux
Если указать размер 1473 байта, то пинга не будет:
user@debian:~$ ping 10.0.0.6 -M do -s 1473 -c 3
PING 10.0.0.6 (10.0.0.6) 1473(1501) bytes of data.
На скрине зеленым выделен размер кадра, красным IP-пакета. А теперь сделаем пинг с роутера в сторону Debian:
CSR#ping 10.0.0.2 size 1500 df-bit
Type escape sequence to abort.
Sending 5, 1500-byte ICMP Echos to 10.0.0.2, timeout is 2 seconds:
Packet sent with the DF bit set
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/63/121 ms
CSR#ping 10.0.0.2 size 1501 df-bit
Type escape sequence to abort.
Sending 5, 1501-byte ICMP Echos to 10.0.0.2, timeout is 2 seconds:
Packet sent with the DF bit set
.....
Success rate is 0 percent (0/5)
CSR#
По результату пингов можно сделать вывод, что в IOS XE задается размер IP пакета при выполнении пинга. В Windows при пинге задается размер ICMP вложения без учета заголовков IP и ICMP:
Пинг в Windows с указанием размера payload ICMP и запретом на фрагментацию
Вывод из этого всего простой. Когда вы задаете размеры чего-то при пинге, всегда узнавайте, чего именно размер вы задаете.
Как изменить MTU на роутере Cisco?
Фактически способы изменения различных MTU на роутере мы рассмотрели, когда говорили про коммутаторы, т.к. для примера использовался multilayer switch. Но давайте все-таки кое-что посмотрим.
Для начала обратим внимание что максимальный канальный MTU на интерфейсе роутера может быть 9216 байт:
CSR#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
CSR(config)#int gi1
CSR(config-if)#mtu ?
<1500-9216> MTU size in bytes
CSR(config-if)#mtu
При этом сейчас канальный MTU равен 1500 байт, давайте посмотрим на возможные значение IP и MPLS MTU:
CSR(config-if)#ip mtu ?
<68-1500> MTU (bytes)
CSR(config-if)#mpls mtu ?
<64-1500> MTU (bytes)
Изменим L2 MTU, зададим максимальное значение:
CSR(config-if)#mtu 9216
CSR(config-if)#do sh int gi1 | in MTU
MTU 9216 bytes, BW 1000000 Kbit/sec, DLY 10 usec,
Значение изменилось, а теперь давайте посмотрим на значения, которые можно задать IP и MPLS MTU:
CSR(config-if)#ip mtu ?
<68-9216> MTU (bytes)
CSR(config-if)#mpls mt
<64-9216> MTU (bytes)
Их верхняя граница отодвинулась на значение 9216 байт, при этом у IP минимальный MTU может быть равен 68 байт, а у Ethernet и MPLS 64. Давайте теперь посмотрим на линк в сторону коммутатора, в самом начале я упоминал, что на этом линке используется 200 влан, со стороны роутера настроен саб-интерфейс с номером 200, который инкапсулирует кадры в 200 влан, конфигурация выглядит так:
CSR# sh run int gi2
Building configuration...
Current configuration : 96 bytes
!
interface GigabitEthernet2
description toHost_2_via_SW
no ip address
negotiation auto
end
CSR# sh run int gi2.200
Building configuration...
Current configuration : 100 bytes
!
interface GigabitEthernet2.200
encapsulation dot1Q 200
ip address 10.0.0.5 255.255.255.252
end
CSR#
Поясню по поводу саб-интерфейса Gi2.200: о том, что на кадры нужно ставить метку с номером 200, говорит строка encapsulation dot1Q 200, цифра 200 после Gi2 это номер саб-интерфейса, эта цифра не обязана совпадать с номером влана, но для удобства их обычно делают одинаковыми.
Саб-интерфейс и влан в данном случае я городил, чтобы посмотреть на связь между MTU физического интерфейса и MTU саб-интерфейса.
Посмотрим какие MTU сейчас на Gi2 и Gi2.200:
CSR#sh int gi2 | in MTU
MTU 1500 bytes, BW 1000000 Kbit/sec, DLY 10 usec,
CSR#sh int gi2.200 | in MTU
MTU 1500 bytes, BW 1000000 Kbit/sec, DLY 10 usec,
CSR#sh ip int gi2.200 | in MTU
MTU is 1500 bytes
CSR#
Посмотрим какой MTU можно задать саб-интерфейсу:
CSR(config)#int gi2.200
CSR(config-subif)#mtu ?
<1500-9216> MTU size in bytes
Выставим саб-интерфейсу L2 и L3 MTU равными 1600 байт:
CSR(config)#int gi2.200
CSR(config-subif)#mtu 1600
CSR(config-subif)#ip mtu ?
<68-1500> MTU (bytes)
CSR(config-subif)#ip mtu
Роутер съел команду mtu 1600, но при этом задать ip mtu 1600 возможности нет. Давайте посмотрим применился ли L2 MTU 1600 для саб-интерфейса:
CSR#sh int gi2.200 | in MTU
MTU 1500 bytes, BW 1000000 Kbit/sec, DLY 10 usec,
CSR#
А вот и не изменился. Выставим L2 MTU 1600 байт для Gi2:
CSR(config)#int gi2
CSR(config-if)#mtu 1600
CSR(config-if)#do sh int gi2 | in MTU
MTU 1600 bytes, BW 1000000 Kbit/sec, DLY 10 usec,
CSR(config-if)#
Выставили, он применился. Посмотрим MTU Gi2.200:
CSR(config-if)#do sh int gi2.200 | in MTU
MTU 1600 bytes, BW 1000000 Kbit/sec, DLY 10 usec,
CSR(config-if)#
Увеличим MTU Gi2 до 1700 байт и посмотрим канальный MTU Gi2.200:
CSR(config)#int gi2
CSR(config-if)#mtu 1700
CSR(config-if)#do sh int gi2.200
GigabitEthernet2.200 is up, line protocol is up
Hardware is CSR vNIC, address is 5000.0002.0001 (bia 5000.0002.0001)
Internet address is 10.0.0.5/30
MTU 1700 bytes, BW 1000000 Kbit/sec, DLY 10 usec,
Канальный MTU саб-интерфейса увеличивается вместе с канальным MTU основного интерфейса. L3 MTU теперь тоже можно сделать 1700 байт, но мы сделаем 1600 байт:
CSR(config)#int gi2.200
CSR(config-subif)#ip mtu ?
<68-1700> MTU (bytes)
CSR(config-subif)#ip mtu 1600
CSR(config-subif)#do sh run int gi2.200
Building configuration...
Current configuration : 113 bytes
!
interface GigabitEthernet2.200
encapsulation dot1Q 200
ip address 10.0.0.5 255.255.255.252
ip mtu 1600
end
CSR(config-subif)#do sh ip int gi2.200 | in MTU
MTU is 1600 bytes
CSR(config-subif)#do sh int gi2.200 | in MTU
MTU 1700 bytes, BW 1000000 Kbit/sec, DLY 10 usec,
CSR(config-subif)#
Какие выводы мы можем сделать из увиденного?
В IOS XE значение Ethernet MTU саб-интерфейса наследуется от основного интерфейса.
Сетевым MTU саб-интерфейса можно управлять, но он не может быть больше канального.
Плюс нужно не забывать, что это пример конкретного оборудования с конкретной операционной системой, и на каком-то ином оборудование поведение может быть другим, поэтому либо читайте документацию, либо тестируйте, а лучше и то и другое.
По факту в IOS XE на саб-интерфейсе можно менять IP MTU и MPLS MTU, канальный MTU наследуется, это подтверждает вывод sh run all:
CSR#sh run all | b GigabitEthernet2.200
interface GigabitEthernet2.200
...
encapsulation dot1Q 200
ip address 10.0.0.5 255.255.255.252
....
ip mtu 1600
...
mpls mtu 1700
.....
!
По результатам sh run all видим, что нет даже возможности задать канальный mtu на саб-интерфейсе, а вот конфигурация основной интерфейс.
CSR#sh run all | b GigabitEthernet2
interface GigabitEthernet2
description toHost_2_via_SW
...
mtu 1700
...
ip mtu 1700
...
mpls mtu 1700
...
!
Для дальнейшего рассмотрения я вернул MTU всех интерфейсов на 1500 байт.
Размер Ethernet заголовка и настройки MTU
В прошлом посте про MTU я говорил, что есть некоторые стандарты, которые увеличивают размер заголовка, самый очевидный и часто используемый в компьютерных сетях стандарт это 802.1q или VLAN, он добавляет к полю заголовка 4 байта, то есть эта добавка никак не должна влиять на способность оборудования пропустить кадр с MTU 1500, если на интерфейсах этого оборудования настроено 1500 байт.
Убедимся в этом, запустим пинг из Linux в Windows IP-пакетами размером 1500 байт и снимем дамп с двух линков:
На линке Host_1/CSR. Здесь кадр идет без поля 802.1q.
На линке CSR/SW, здесь кадры идут с меткой 200.
На линке коммутатор/Windows дамп снимать смысла нет, потому что коммутатор убирает метку, когда отдает кадр в сторону ПК. Пинг:
user@debian:~$ ping 10.0.0.6 -M do -s 1472
PING 10.0.0.6 (10.0.0.6) 1472(1500) bytes of data.
1480 bytes from 10.0.0.6: icmp_seq=1 ttl=127 time=56.6 ms
1480 bytes from 10.0.0.6: icmp_seq=2 ttl=127 time=1.19 ms
1480 bytes from 10.0.0.6: icmp_seq=3 ttl=127 time=1.46 ms
1480 bytes from 10.0.0.6: icmp_seq=4 ttl=127 time=1.57 ms
1480 bytes from 10.0.0.6: icmp_seq=5 ttl=127 time=1.79 ms
1480 bytes from 10.0.0.6: icmp_seq=6 ttl=127 time=1.88 ms
Дамп с линка между Линуксом и роутером:
Ethernet кадр без метки размером 1514 байт с вложением 1500 байт
Зеленым выделен размер кадра (Dst MAC + Src MAC + Type + Payload). Красным выделен размер пакета 1500 байт. Теперь кадр на линке между роутером и коммутатором:
Ethernet кадр с меткой размером 1518 байт с вложением 1500 байт
Размер кадра увеличен до 1518 байт за счет того, что к заголовку добавились поля 802.1Q, но IP-пакет по-прежнему 1500 байт, данный кадр прошел через линк с MTU 1500 байт и это правильное поведение оборудование, но если вы работаете с каким-нибудь noname китайским тестируйте такие моменты.
Как изменить MTU интерфейса в Windows 10?
Сразу скажу, что я не самый быстрый стрелок на этом диком западе в части специфичных сетевых настроек на Винде, но как поменять MTU я знаю, для начала давайте посмотрим какие интерфейсы есть и какой MTU на них задан. Вот этой командной можно посмотреть канальные интерфейсы и их MTU в Windows:
C:\Windows\system32>netsh interface ipv4 show subinterfaces
В левом столбце значение L2 MTU, вывод я такой делаю, потому что можно посмотреть расширенные настройки интерфейсов:
C:\Windows\system32>netsh interface ipv4 show interfaces level=verbose
Interface Loopback Pseudo-Interface 1 Parameters
----------------------------------------------
IfLuid : loopback_0
IfIndex : 1
State : connected
Metric : 75
Link MTU : 4294967295 bytes
Reachable Time : 30500 ms
Base Reachable Time : 30000 ms
Retransmission Interval : 1000 ms
DAD Transmits : 0
Site Prefix Length : 64
Site Id : 1
Forwarding : disabled
Advertising : disabled
Neighbor Discovery : disabled
Neighbor Unreachability Detection : disabled
Router Discovery : dhcp
Managed Address Configuration : enabled
Other Stateful Configuration : enabled
Weak Host Sends : disabled
Weak Host Receives : disabled
Use Automatic Metric : enabled
Ignore Default Routes : disabled
Advertised Router Lifetime : 1800 seconds
Advertise Default Route : disabled
Current Hop Limit : 0
Force ARPND Wake up patterns : disabled
Directed MAC Wake up patterns : disabled
ECN capability : application
Interface Ethernet Parameters
----------------------------------------------
IfLuid : ethernet_32768
IfIndex : 8
State : connected
Metric : 25
Link MTU : 1500 bytes
Reachable Time : 20000 ms
Base Reachable Time : 30000 ms
Retransmission Interval : 1000 ms
DAD Transmits : 3
Site Prefix Length : 64
Site Id : 1
Forwarding : disabled
Advertising : disabled
Neighbor Discovery : enabled
Neighbor Unreachability Detection : enabled
Router Discovery : dhcp
Managed Address Configuration : enabled
Other Stateful Configuration : enabled
Weak Host Sends : disabled
Weak Host Receives : disabled
Use Automatic Metric : enabled
Ignore Default Routes : disabled
Advertised Router Lifetime : 1800 seconds
Advertise Default Route : disabled
Current Hop Limit : 0
Force ARPND Wake up patterns : disabled
Directed MAC Wake up patterns : disabled
ECN capability : application
И тут написано Link MTU. Поменяем значение MTU интерфейсу со значением Ethernet на 1600 байт через командую строку. Изменения рекомендую вносить через командую строку, запущенную от имени администратора:
C:\Windows\system32>netsh interface ipv4 set subinterface "Ethernet" mtu=1600 store=persistent
Ok.
C:\Windows\system32>netsh interface ipv4 show subinterfaces
Слово "Ethernet" в команде для смены MTU это имя интерфейса, имена интерфейсов можно посмотреть командой ipconfig. В графическом интерфейсе можно изменить размер кадров, который должен уметь обрабатывать интерфейс, заходим в меню "Настройки параметров адаптера" и здесь жмем ПКМ на нужный интерфейс:
Перечень адаптеров в Windows 10
Выбираем пункт "Свойства"/"Properties".
Меню просмотра и настроек свойств выбранного интерфейса
Жмем на кнопку "Configure..."/"Настроить...". А далее идем по цифрам:
Меню включения Jumbo Frame на сетевых интерфейсах в Windows 10
В русской версии Windows меню "Jumbo Packet" перевели как "Большой кадр". Значение 9014 байт это именно что размер кадра, потому что после того как будет выбрано 9014 байт, MTU интерфейса станет 9000 байт:
C:\Windows\system32>netsh interface ipv4 show subinterfaces
Когда вы включаете Jumbo кадры, интерфейс перезагружается.
Как изменить MTU в Linux?
Перейдем к Linux. Разберемся как проверять MTU на интерфейсах.
Прежде чем продолжить сделаю одно примечания. В посте о настройке лабы TTL я довольно подробно описал базовые сетевые настройки для Debian 10, плюс там же дал некоторые полезные ссыли, поэтому сейчас на этом вопросе подробно не останавливаюсь.
На конкретном интерфейсе MTU смотрим так:
user@debian:~$ ip link show dev ens3
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
Разберемся с тем, как сделать временные изменения MTU на интерфейсе, изменять будем на ens3, этот интерфейс включен в мою домашнюю сеть, а через нее в интернет, для проверки попинуем Гугл:
У интерфейса ens3 MTU будет 1400 байт до перезагрузки машины, после ребута он вновь станет 1500 байт. Разберемся как изменить MTU на постоянной основе, как и большая часть других настроек Linux, постоянные изменения применяются через изменение конфигурационных файлов. Открываем файл с сетевыми настройками любым удобным редактором:
sudo nano /etc/network/interfaces
Находим конфигурацию нужного нам интерфейса и добавляем в нее значение MTU нужного нам размера, в моем случае 1400 байт:
#to_CSR
allow-hotplug ens4
iface ens4 inet static
address 10.0.0.2/30
up ip route add 10.0.0.4/30 via 10.0.0.1
mtu 1400
Стоит учитывать что название и расположение файла с сетевыми настройками зависит от дистрибутива, с которым вы работаете. Давайте проверим изменился ли MTU:
user@debian:~$ ip link show dev ens4
3: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
PING 10.0.0.1 (10.0.0.1) 1372(1400) bytes of data.
1380 bytes from 10.0.0.1: icmp_seq=1 ttl=255 time=60.9 ms
1380 bytes from 10.0.0.1: icmp_seq=2 ttl=255 time=0.641 ms
1380 bytes from 10.0.0.1: icmp_seq=3 ttl=255 time=0.591 ms
1380 bytes from 10.0.0.1: icmp_seq=4 ttl=255 time=0.595 ms
^C
--- 10.0.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 61ms
rtt min/avg/max/mdev = 0.591/15.670/60.856/26.088 ms
user@debian:~$
И не забывайте, что в Linux есть замечательная утилита grep, которая позволяет избежать просмотра портянок различного рода конфигураций и диагностических выводов:
user@debian:~$ ip a | grep mtu
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1400 qdisc pfifo_fast state UP group default qlen 1000
3: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1400 qdisc pfifo_fast state UP group default qlen 1000
user@debian:~$
Ну и всё, спасибо, что дочитали!
Вопрос для вашего ответа
Почему роутер дает возможность установить минимальный MTU для IP 68 байт, а для MPLS и Ethernet 64 байта? В чем логика, если IP это вложение в Ethernet и тот же IP может быть закрыт MPLS заголовком?
Видео версия
Видео версия для тех, кому проще посмотреть и послушать, чем почитать.
Российским IТ-специалистам стали предлагать более низкие зарплаты — данные рекрутингового агентства.
Средняя зарплата для начинающего программиста («джуна») в январе оказалась около 100 тысяч рублей, что на 13% меньше, чем год назад. IТ-специалистам среднего уровня («мидл») тоже стали предлагать более низкие зарплаты — 160 тысяч рублей, что на 11% ниже в сравнении с прошлым годом.
Такая тенденция появилась в связи с уходом зарубежных компаний с российского рынка:
«Соотношение резюме на одну IТ-вакансию сейчас достигло почти 4, а в начале 2022 года было 1,8. Это выразилось в снижении медианы предлагаемой зарплаты, то есть присутствует некоторый демпинг со стороны кандидатов», — отметили эксперты.
Я полагаю, что идея закрыть YouTube, как и заявления определенных личностей —также сделали своё дело. Такие заявления никак не способствуют улучшению ситуации.
«Ты программист? Тогда подскажи, как взломать страницу в ...?»
Да-да, это самый популярный вопрос к программисту до сих пор, к сожалению, и не только...
Поэтому мы собрали очередную порцию самых популярных стереотипов и заблуждений о программировании, и задали их нашему гостю — fronted-разработчику и тимлиду Андрею Белову.
Вот тут его интервью о том, что учиться нужно каждый день, чтобы поспевать за миром:
Как работает своп в Android-смартфонах? И почему он появился только сейчас, когда на ПК он был уже давно. Полезен ли он во флагманах или нужен для смартфонов среднего и доступного ценового сегментов? Разбираемся как Android увеличивает оперативную память и забирает её у накопителя!