Презентация лекции "Управление потоком и перегрузкой в TCP".
План лекции:
Скорость передачи данных с использованием протокола TCP
Управление потоком в TCP
Алгоритм Нагля
Управление перегрузкой в TCP
AIMD
Медленный старт
Сети и системы телекоммуникаций. Протоколы маршрутизацииAndrey Sozykin
Презентация лекции "Протоколы маршрутизации".
План лекции:
Место протоколов маршрутизации в моделях OSI и TCP/IP
Маршрутизация по вектору расстояний
Маршрутизация с учетом состояния канала
Протоколы внутренней маршрутизации (RIP, OSPF)
Структура Интернет
Протокол внешней маршрутизации BGP
Презентация лекции Wi-Fi.
План лекции:
Основы Wi-Fi
Место Wi-Fi в модели OSI
Wi-Fi и Ethernet
Физический уровень Wi-Fi
Уровень MAC в Wi-Fi
Метод доступа CSMA/CA
Сервисы Wi-Fi
Безопасность Wi-Fi
Сети и системы телекоммуникаций. Протокол TCPAndrey Sozykin
Презентация лекции. "Протокол TCP".
План лекции:
Место TCP в моделях OSI и TCP/IP
Основные понятия TCP
Скользящее окно
Установка соединения
Формат заголовка TСP
Сети и системы телекоммуникаций. Транспортный уровеньAndrey Sozykin
Презентация лекции "Транспортный уровень".
План лекции:
Место транспортного уровня в моделях OSI и TCP/IP
Назначение транспортного уровня
Адресация
Протоколы транспортного уровня TCP/IP
Сети и системы телекоммуникаций. Управляющие протоколы сетевого уровняAndrey Sozykin
Презентация лекции. "Управляющие протоколы сетевого уровня".
План лекции:
Место управляющих протоколов в моделях OSI и TCP/IP
Internet Control Message Protocol (ICMP)
Address Resolution Protocol (ARP)
Dynamic Host Configuration Protocol (DHCP)
Сети и системы телекоммуникаций. МаршрутизацияAndrey Sozykin
Прещентация лекции "Маршрутизация".
План лекции:
Основы маршрутизации
Маршрутизаторы
Таблица маршрутизации
Поиск маршрута в таблице маршрутизации
Маршрут по умолчанию
Длина маски подсети
Сети и системы телекоммуникаций. Коммутируемый EthernetAndrey Sozykin
Презентация лекции "Коммутируемый Ethernet".
План лекции:
Классический и коммутируемый Ethernet
Концентратор и коммутатор
Основы коммутации
Скоростные версии Ethernet
Сети и системы телекоммуникаций. Канальный уровеньAndrey Sozykin
Презентация к лекции "Канальный уровень".
План лекции:
Место канального уровня в модели OSI
Работа с кадрами
Обнаружение и коррекция ошибок
Множественный доступ к каналу
Технологии канального уровня
Сети и системы телекоммуникаций. Протоколы маршрутизацииAndrey Sozykin
Презентация лекции "Протоколы маршрутизации".
План лекции:
Место протоколов маршрутизации в моделях OSI и TCP/IP
Маршрутизация по вектору расстояний
Маршрутизация с учетом состояния канала
Протоколы внутренней маршрутизации (RIP, OSPF)
Структура Интернет
Протокол внешней маршрутизации BGP
Презентация лекции Wi-Fi.
План лекции:
Основы Wi-Fi
Место Wi-Fi в модели OSI
Wi-Fi и Ethernet
Физический уровень Wi-Fi
Уровень MAC в Wi-Fi
Метод доступа CSMA/CA
Сервисы Wi-Fi
Безопасность Wi-Fi
Сети и системы телекоммуникаций. Протокол TCPAndrey Sozykin
Презентация лекции. "Протокол TCP".
План лекции:
Место TCP в моделях OSI и TCP/IP
Основные понятия TCP
Скользящее окно
Установка соединения
Формат заголовка TСP
Сети и системы телекоммуникаций. Транспортный уровеньAndrey Sozykin
Презентация лекции "Транспортный уровень".
План лекции:
Место транспортного уровня в моделях OSI и TCP/IP
Назначение транспортного уровня
Адресация
Протоколы транспортного уровня TCP/IP
Сети и системы телекоммуникаций. Управляющие протоколы сетевого уровняAndrey Sozykin
Презентация лекции. "Управляющие протоколы сетевого уровня".
План лекции:
Место управляющих протоколов в моделях OSI и TCP/IP
Internet Control Message Protocol (ICMP)
Address Resolution Protocol (ARP)
Dynamic Host Configuration Protocol (DHCP)
Сети и системы телекоммуникаций. МаршрутизацияAndrey Sozykin
Прещентация лекции "Маршрутизация".
План лекции:
Основы маршрутизации
Маршрутизаторы
Таблица маршрутизации
Поиск маршрута в таблице маршрутизации
Маршрут по умолчанию
Длина маски подсети
Сети и системы телекоммуникаций. Коммутируемый EthernetAndrey Sozykin
Презентация лекции "Коммутируемый Ethernet".
План лекции:
Классический и коммутируемый Ethernet
Концентратор и коммутатор
Основы коммутации
Скоростные версии Ethernet
Сети и системы телекоммуникаций. Канальный уровеньAndrey Sozykin
Презентация к лекции "Канальный уровень".
План лекции:
Место канального уровня в модели OSI
Работа с кадрами
Обнаружение и коррекция ошибок
Множественный доступ к каналу
Технологии канального уровня
Сети и системы телекоммуникаций. Протокол IPv6Andrey Sozykin
Презентация лекции "Протокол IPv6".
План лекции:
Место протокола IPv6 в модели OSI и TCP/IP
Цели создания IPv6
Формат заголовка IPv6
Адреса IPv6
Внедрение IPv6
Сети и системы телекоммуникаций. Дополнительные функции коммутаторовAndrey Sozykin
Презентация лекции "Дополнительные функции коммутаторов".
План лекции:
Место в модели OSI
Виртуальные локальные сети (VLAN)
Связующее (остовное) дерево (Spaning Tree)
Агрегация каналов
Управление потоком
Сети и системы телекоммуникаций. IP-адресацияAndrey Sozykin
Презентация лекции "IP-адресация".
План лекции:
Глобальные и локальные адреса
Структура IP-адреса
Бесклассовая маршрутизация (Classless Inter-Domain Routing, CIDR) и классы IP-сетей
Специальные типы IP-адресов
Подсети
Сети и системы телекоммуникаций. Технология EthernetAndrey Sozykin
Презентация к лекции "Технология Ethernet".
План лекции:
Место в модели OSI
История создания
Типы Ethernet
Классический Ethernet
Адресация
Формат кадра
Метод множественного доступа к каналу связи CSMA/CD
Сети и системы телекоммуникаций. Физический уровеньAndrey Sozykin
Презентация лекции "Физический уровень".
План лекции:
Место физического уровня в модели OSI
Модель канала связи
Среды передачи данных
Передача сигналов
Кодирование и модуляция
Сети и системы телекоммуникаций. Интерфейс сокетовAndrey Sozykin
Презентация лекции "Интерфейс сокетов".
План лекции:
Место сокетов в моделях OSI и TCP/IP
Сокеты Беркли
Основные операции над сокетами
Работа сокетов
Пример на Python
Сети и системы телекоммуникаций. Сетевой уровеньAndrey Sozykin
Презентация лекции "Сетевой уровень".
План лекции:
Место сетевого уровня в модели OSI
История создания
Назначение сетевого уровня
Задачи сетевого уровня
Маршрутизаторы
Сетевой уровень в стеке протоколов TCP/IP
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)AvitoTech
Поговорим о том, почему это далеко не самая простая задача, и как следует разбираться с возникающими трудностями. Рассмотрим и покритикуем существующие решения. Научимся создавать свой собственный велосипед.
Сети и системы телекоммуникаций. Протокол IPv6Andrey Sozykin
Презентация лекции "Протокол IPv6".
План лекции:
Место протокола IPv6 в модели OSI и TCP/IP
Цели создания IPv6
Формат заголовка IPv6
Адреса IPv6
Внедрение IPv6
Сети и системы телекоммуникаций. Дополнительные функции коммутаторовAndrey Sozykin
Презентация лекции "Дополнительные функции коммутаторов".
План лекции:
Место в модели OSI
Виртуальные локальные сети (VLAN)
Связующее (остовное) дерево (Spaning Tree)
Агрегация каналов
Управление потоком
Сети и системы телекоммуникаций. IP-адресацияAndrey Sozykin
Презентация лекции "IP-адресация".
План лекции:
Глобальные и локальные адреса
Структура IP-адреса
Бесклассовая маршрутизация (Classless Inter-Domain Routing, CIDR) и классы IP-сетей
Специальные типы IP-адресов
Подсети
Сети и системы телекоммуникаций. Технология EthernetAndrey Sozykin
Презентация к лекции "Технология Ethernet".
План лекции:
Место в модели OSI
История создания
Типы Ethernet
Классический Ethernet
Адресация
Формат кадра
Метод множественного доступа к каналу связи CSMA/CD
Сети и системы телекоммуникаций. Физический уровеньAndrey Sozykin
Презентация лекции "Физический уровень".
План лекции:
Место физического уровня в модели OSI
Модель канала связи
Среды передачи данных
Передача сигналов
Кодирование и модуляция
Сети и системы телекоммуникаций. Интерфейс сокетовAndrey Sozykin
Презентация лекции "Интерфейс сокетов".
План лекции:
Место сокетов в моделях OSI и TCP/IP
Сокеты Беркли
Основные операции над сокетами
Работа сокетов
Пример на Python
Сети и системы телекоммуникаций. Сетевой уровеньAndrey Sozykin
Презентация лекции "Сетевой уровень".
План лекции:
Место сетевого уровня в модели OSI
История создания
Назначение сетевого уровня
Задачи сетевого уровня
Маршрутизаторы
Сетевой уровень в стеке протоколов TCP/IP
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)AvitoTech
Поговорим о том, почему это далеко не самая простая задача, и как следует разбираться с возникающими трудностями. Рассмотрим и покритикуем существующие решения. Научимся создавать свой собственный велосипед.
Тандемные DDoS-атаки / Проблематика уязвимостей в спецификации TCP/IP (фундам...HLL
Презентация к докладу Артёма Гавриченкова (ximaera), ведущего разработчика сети фильтрации трафика Qrator, для конференции HighLoad++ (25-26 октября 2010, Москва).
В данном докладе описывается потенциальная тандемная атака, включающая в себя одновременно SYN flood и одну из атак на FIN-WAIT-2 или Sockstress.
Широко известная атака на отказ в обслуживании протокола TCP — SYN Flood — хорошо изучена, существуют популярные методы борьбы с ней, включая, например, технологию SYN cookies [1]. Важным свойством этого вида атак является их влияние на модули отслеживания соединений (connection tracking). Даже при использовании SYN cookies каждый входящий TCP-сегмент с выставленным флагом SYN создаёт запись в базе отслеживаемых соединений, что спустя некоторое время может привести к переполнению базы и потере новых запросов на соединения.
Менее известная атака, носящая кодовое название FIN-WAIT-2 attack, эксплуатирует особенности алгоритма закрытия TCP-соединения. Данная атака подробно разбирается в CPNI Technical Note 3/2009: Security Assessment of the Transmission Control Protocol. Её основная цель — исчерпание памяти, используемой TCP-соединениями, находящимися в фазе FIN-WAIT-2 закрытия соединения. При определённых условиях соединение может находиться в этом состоянии продолжительное время, при этом все ресурсы, задействованные соединением, не будут доступны активным компонентам атакуемой системы.
1. Dave Dittrich, Some TCP/IP Vulnerabilities: Weaknesses, attack tools, defenses [HTML] (http://staff.washington.edu/dittrich/talks/agora/index.html).
Скорость с доставкой до пользователя / Анатолий Орлов (Self Employed), Денис ...Ontico
1. Многие коллективы разработчиков пытаются измерять скорость отклика сайта и пишут, например, “эта страничка сформирована за 300 ms”.
2. Проблема в том, что 300 ms — это "у нас на сервере". Пользователю, на самом деле, все равно, сколько это "у вас на сервере”, ему надо “сколько у меня в браузере”. В среднем по больнице, 300 ms на сервере с размером странички в 60-70 Кб, могут быть 2.5 секунды на клиенте.
3. Перед тем, как это лечить, надо это измерить. Есть 2 способа:
а. Navigation timing api, поддерживается сейчас много где, но не везде поддерживается одинаково, есть места, сложные для понимания и осмысления (тут много слайдов).
б. Можно взять tcpdump, в нем есть ACK ответов от клиентов, и измерять по ним. Есть Open Source soft (софт нап Насретдинов исан мной в Яндексе, есть договоренность его выпустить), который это делает. В tcpdump большой бонус в том, что можно понять, что происходит.
4. Что происходит в соединении, что такое rtt, как это влияет на latency. Как на это влияет cdn и вынесение всяких фронтендов ближе к пользователю.
5. Почему, вообще, бывает медленно, почему у пользователя может медленно работать wi-fi даже на широком и хорошем канале, уже не говоря про мобильный интернет.
6. Как влияют на скорость антивирусы и еще некоторая неведомая DPI херня (tm), которая делает так, что в советской России (а, возможно, во всем мире) https часто быстрее, чем http (и с чем, собственно, связано то, что на него куча компаний переходят).
Многие сайты измеряют время формирования странички, хотя на самом деле надо измерять время у пользователя. Тут рассказывается как это делать, и почему доставка страничек может занимать 10 секунд, при ping 100ms
Сравнение TCP/IP стека Windows Vista / Server 2008 и Windows XP / Server 2003Andrey Beshkov
В данном докладе мы посмотрим какие новые возможности появились в стеке TCP/IP нового поколения ОС Windows Server 2008 и Windows Vista. Так же мы сравним новый стек TCP/IP со старым стеком ОС Windows XP/ Windows Server 2003.
Порядок преодоления болота на маршруте: как не надо писать приложения, основа...HLL
Артём Гавриченков (ximaera), ведущий разработчик сети фильтрации трафика Qrator, описывает типичные ошибки программирования при написании серверных приложений на основе TCP-сокетов в рамках конференции «Российские интернет-технологии» (2-3 апреля 2012, Москва).
Разбирается (вероятно, неисчерпывающий) ряд заблуждений и узких мест, приводящих к проблемам с производительностью и уязвимостям безопасности TCP-приложений; приводится ряд примеров, когда ошибки, неочевидные на этапе программирования, при эксплуатации приводили к финансовым и репутационным потерям у авторов и пользователей приложения. Даются рекомендации по отладке и оптимизации приложений, основанных на TCP, а также операционных систем, в которых эксплуатируются такие продукты.
Среди прочего, разбираются такие аспекты работы обработчика TCP-запросов, как:
• предотвращение атак, аналогичных slow POST в Nginx и Lighttpd;
• предотвращение ошибок, аналогичных проблеме со скачиванием файлов в браузере Internet Explorer;
• возможные изменения в дизайне самописных TCP-based протоколов с целью их ускорения;
• использование опции TCP (таких, как TCP_NODELAY) для ускорения работы специфических приложений.
Решения для мониторинга ИТ-инфраструктуры. Как правильно сделать выбор? Часть 1СвязьКомплект
На что следует обращать внимание при мониторинге ИТ-инфраструктуры? Основные источники получения информации.
Докладчик: Игорь Панов, ведущий проекта http://www.NetworkGuru.ru
High performance computing - принципы проектирования сети
Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
1. Сети и системы телекоммуникаций
Управление потоком и
перегрузкой в TCP
ИМКН УрФУ
2. Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Скорость передачи данных с использованием
протокола TCP
Управление потоком в TCP
Алгоритм Нагля
Управление перегрузкой в TCP
AIMD
Медленный старт
План
2
3. Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
TCP должен обеспечивать
• Гарантированную доставку данных
• Эффективное использование канала связи
TCP должен хорошо работать как на медленных
каналах связи с ошибками, так и на быстрых
надежных каналах
Изменение размера скользящего окна – основной
метод регулирования скорости в TCP
• Традиционный подход – фиксированный размер окна 8
сегментов TCP
• Современный подход – динамический размер окна в
зависимости от требований приложения и загрузки
сети
Скорость передачи данных в TCP
3
4. Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Скорость передачи данных в TCP
4
Отправитель
Получатель
Приложение
Буфер
Транспортная
подсистема
5. Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Управление потоком
5
Отправитель
Получатель
Приложение
Буфер
Транспортная
подсистема
6. Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Управление перегрузкой
6
Отправитель
Получатель
Приложение
Буфер
Транспортная
подсистема
7. Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Предотвращение «затопления» быстрым
отправителем медленного получателя
• Сеть может быть свободна, но приложение не готово
получить данные
Транспортная подсистема работает с
приложениями:
• Приложение не обязано забирать данные, как только
они появились
• Транспортная подсистема не обязана передавать
данные приложению или в сеть, как только она их
получила
Управление потоком в TCP
7
8. Сети и системы телекоммуникаций. Протокол TCP
Управление потоком в TCP
8
32 бита
Порт отправителя Порт получателя
Порядковый номер
Номер подтверждения
Размер окна
F
I
N
S
Y
N
R
S
T
P
S
H
A
C
K
U
R
G
Длина
заголо
-вка
Контрольная сумма Указатель на срочные данные
Параметры (не обязательно)
Данные (не обязательно)
9. Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Для управления потоком TCP использует механизм
скользящего окна
Получатель записывает в поле заголовка TCP
«Размер окна» объем данных, которые он готов
принять (свободное место в буфере)
Размер окна может меняться динамически
• Приложение читает данные из буфера быстро – окно
растет
• Приложение читает медленно, буфер заполнен – окно
уменьшается
Управление потоком в TCP
9
10. Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Некоторые приложения читают и пишут данные
маленькими порциями
Эмуляторы терминала telnet или ssh
• При нажатии каждой клавиши данные передаются на
сервер – 1 байт данных
• Для передачи 1 байта данных требуется передать IP-
пакет длиной 41 байт (20 байт заголовок IP, 20 байт
заголовок TCP, 1 байт данных)
• Высокие накладные расходы
Отложенные подтверждения
• Задержка отправки подтверждения до 500 мс в
надежде получить данные
• Терминал за 500 мс выдает эхо, данные отправляются
вместе с подтверждением
Отложенные подтверждения
10
11. Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Получателю отправляется только первая порция
маленьких данных
Остальные данные буферизируются, пока не
придет подтверждение
Данные из буфера отправляются в одном сегменте
Продолжается накопление данные в буфере, пока
не придет новое подтверждение
Алгоритм Нагля (Nagle’s algorithm)
11
12. Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Приложение может быть готово принять данные,
но сеть перегружена
• Отправляется большая порция данных
• Многие сегменты будут отброшены сетью
Перегрузка (congestion) – состояние, при котором
в сеть поступает больше пакетов, чем она
способна передать
Управление перегрузкой
12
Маршрутизатор
Буфер
13. Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Коллапс перегрузки в Интернет (congestion
collapse)
• Произошел в 1986 г. (теоретически предсказан в 1984)
• Каналы связи загружены полностью
• Скорость передачи данных между хостами падала на
порядок
Решение:
• Учет загрузки сети при формировании размера
скользящего окна
• Механизм – окно перегрузки
• Традиционный подход – фиксированный размер 8
сегментов TCP
• Предложенный подход – динамический размер окна в
зависимости от нагрузки на сеть
Коллапс перегрузки
13
14. Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Окно управления потоком:
• Задается получателем (поле «Размер окна» в заголовке
TCP)
• Размер определяется возможностями приложения
читать данные из буфера
Окно перегрузки:
• Задается отправителем
• Размер определяется загрузкой сети
Размер скользящего окна определяется меньшим
из окон перегрузки или управления потоком
Окна перегрузки и управления
потоком
14
15. Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Эффективность
• Сеть должна быть максимально загружена
Справедливость
• Все хосты в сети получают примерно одинаковую часть
от пропускной способности сети
Характеристики загрузки сети
15
A B C
16. Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Additive increase/multiplicative decrease
(Аддитивное увеличение, мультипликативное
уменьшение)
• Метод, который используется в TCP для определения
размера окна перегрузки
Типовые параметры:
• a – максимальный размер сегмента (MSS)
• b – ½
AIMD
16
17. Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
AIMD
17
Хост 1 Хост 2
«Узкое» место
Computer Networks 5/E
http://computernetworks5e.org/
18. Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Размер окна AIMD
18
Размерокна
Время
Аддитивное
увеличение
Сигнал о
перегрузке
Мультипликативное
уменьшение
19. Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Сигнал о перегрузке
19
Сигнал Пример
протокола
Достоинства и
недостатки
Потеря пакета TCP New Reno
Cubic TCP
(Linux)
Хорошо распознается
Поздно узнаем о перегрузке
Задержка
пакета
Compound TCP
(Windows)
Быстро узнаем о перегрузке
Задержка может быть
вызвана не только
перегрузкой
Сигнал от
маршрутизатора
TCP with
Explicit
Congestion
Notification
Быстро узнаем о перегрузке
Необходима поддержка в
маршрутизаторе
Computer Networks 5/E
http://computernetworks5e.org/
20. Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Проблема AIMD – медленный (линейный) рост
размера окна перегрузки
• Приемлемо на медленных каналах
• Неприемлемо на быстрых надежных каналах
Медленный старт - альтернативный метод
управления размером окна перегрузки:
• Первоначально размер окна перегрузки
устанавливается маленьким (1 или 4 сегмента)
• При каждом получении подтверждения отправляется 2
сегмента
• После сигнала о перегрузке начинаем с начала
Медленный старт обеспечивает
экспоненциальный рост размера окна
перегрузки
Медленный старт
20
21. Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
TCP использует совместно AIMD и медленный
старт
• Работа начинается с медленного старта
• После достижения «порога медленного старта» TCP
переходит на AIMD
Определение «порога медленного старта»
• Медленный старт начинает работать без ограничения
• Поступает сигнал о перегрузке
• Порог медленного старта устанавливается в половину
текущего окна перегрузки
• Окно перегрузки уменьшается до минимального
значения
Медленный старт и AIMD в TCP
21
22. Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Медленный старт и AIMD в TCP
22
Размерокна
Время
Аддитивное
увеличение
Порог медленного
старта
Медленный старт
Сигнал о перегрузке
Мультипликативное
уменьшение
23. Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Приложение просит много данных, но сеть
перегружена:
• Окно управления потоком: 40Кбайт
• Окно перегрузки: 20 Кбайт
• Скользящее окно: 20 Кбайт
Сеть свободна, но приложение ограничивает
скорость :
• Окно управления потоком: 20Кбайт
• Окно перегрузки: 40 Кбайт
• Скользящее окно: 20 Кбайт
Размер скользящего окна
23
24. Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Скорость передачи данных с использованием
протокола TCP
Управление потоком в TCP
Алгоритм Нагля
Управление перегрузкой в TCP
AIMD
Медленный старт
Итоги
24
25. Сети и системы телекоммуникаций. Управление потоком и перегрузкой в TCP
Вопросы?
25