Store-and-forward
Store-and-forward (с англ. — «храни и пересылай») — это метод передачи данных в телекоммуникационных и компьютерных сетях, при котором сообщение (пакет, кадр, файл) полностью принимается и сохраняется (буферизируется) на промежуточном узле (коммутаторе, маршрутизаторе, почтовом сервере) перед тем, как быть отправленным далее по маршруту к получателю. В отличие от методов сквозной передачи (cut-through) или коммутации каналов, при store-and-forward узел сначала проверяет целостность и корректность принятых данных (например, с помощью контрольной суммы), и только после успешной проверки начинает передачу. Этот подход обеспечивает высокую надёжность доставки, но вносит задержку, пропорциональную размеру сообщения и скорости передачи.
История
Концепция store-and-forward возникла задолго до появления цифровых сетей. Её прообразом можно считать телеграфную связь XIX века, где сообщение сначала записывалось на бумажную ленту, а затем передавалось дальше. В 1940-х годах этот принцип был реализован в системах ретрансляции радиосообщений (RTTY). Однако в современном понимании метод стал применяться с развитием компьютерных сетей.
В 1960-х годах в рамках проекта ARPANET (предшественника Интернета) использовалась технология коммутации пакетов, основанная на store-and-forward. Первые маршрутизаторы (тогда называвшиеся IMP — Interface Message Processor) принимали пакеты целиком, проверяли их и передавали дальше. В 1971 году Рэй Томлинсон разработал первую систему электронной почты, которая также работала по принципу store-and-forward: письмо сохранялось на почтовом сервере до момента, когда получатель подключится и заберёт его.
В 1980-х годах метод получил широкое распространение в сетях X.25, а затем в Ethernet-коммутаторах. В современных сетях store-and-forward является стандартным режимом работы для большинства управляемых коммутаторов и маршрутизаторов.
Принцип работы
Процесс передачи данных методом store-and-forward включает три этапа:
- Приём и буферизация. Узел (коммутатор, маршрутизатор, сервер) начинает принимать кадр или пакет данных. Весь блок данных целиком помещается в оперативную память устройства. Приём продолжается до получения последнего бита.
- Проверка целостности. После завершения приёма узел вычисляет контрольную сумму (например, CRC — Cyclic Redundancy Check) и сравнивает её с переданной в заголовке. Если значения совпадают, данные считаются корректными. При обнаружении ошибки (например, из-за помех в линии связи) кадр отбрасывается, и отправитель (по протоколу более высокого уровня) повторно передаёт его.
- Передача. Если проверка пройдена, узел помещает кадр в выходную очередь и отправляет его на следующий узел по маршруту к получателю. Если выходной канал занят, кадр ожидает в буфере до освобождения линии.
Этот метод гарантирует, что повреждённые или фрагментированные данные не будут распространяться по сети, что снижает нагрузку на конечные устройства.
Классификация и виды
Метод store-and-forward применяется в различных сетевых технологиях и протоколах, которые можно разделить по уровням модели OSI:
На канальном уровне (L2)
- Коммутация Ethernet. Большинство современных коммутаторов (switch) работают в режиме store-and-forward. Они принимают весь Ethernet-кадр (до 1518 байт для стандартного кадра, до 9000 байт для jumbo-кадров), проверяют FCS (Frame Check Sequence) и только затем передают в нужный порт.
- Беспроводные сети (Wi-Fi). Точки доступа и беспроводные маршрутизаторы также используют буферизацию для координации доступа к среде (CSMA/CA) и проверки целостности.
На сетевом уровне (L3)
- Маршрутизация IP-пакетов. Маршрутизаторы принимают IP-пакеты целиком, проверяют заголовок (включая контрольную сумму IP-заголовка) и таблицу маршрутизации, после чего пересылают пакет. Это классический пример store-and-forward на уровне L3.
На прикладном уровне (L7)
- Электронная почта (SMTP, POP3, IMAP). Почтовые серверы (MTA — Mail Transfer Agent) хранят письма до момента, когда получатель заберёт их. Это реализация store-and-forward, где задержка может составлять от секунд до нескольких дней.
- Системы обмена сообщениями (например, Telegram, WhatsApp). Серверы хранят сообщения, если получатель офлайн, и доставляют их при появлении подключения.
- Файловые хранилища и облачные сервисы. При загрузке файла на сервер он сначала сохраняется, а затем реплицируется на другие узлы.
В системах с ограниченной связью
- Спутниковая связь. Из-за больших задержек (например, геостационарные спутники — около 250 мс) store-and-forward используется для передачи данных в пакетном режиме.
- Сети с прерывистым соединением (DTN — Delay-Tolerant Networking). В таких сетях (например, для связи с космическими аппаратами) данные хранятся на узлах до установления связи с получателем.
Преимущества и недостатки
Преимущества
- Высокая надёжность. Отбрасывание повреждённых кадров предотвращает распространение ошибок, снижая нагрузку на конечные устройства и протоколы верхних уровней.
- Гарантия целостности. Проверка контрольной суммы гарантирует, что получатель получит именно те данные, которые были отправлены.
- Поддержка разных скоростей. Store-and-forward позволяет соединять сегменты сети с разной пропускной способностью (например, 100 Мбит/с и 1 Гбит/с), так как буфер сглаживает разницу.
- Управление перегрузками. Буферизация даёт возможность временно хранить данные при перегрузке выходного канала, снижая потери.
- Простота реализации. Метод не требует сложной синхронизации между отправителем и получателем.
Недостатки
- Задержка (latency). Каждый узел вносит задержку, равную времени приёма всего кадра. Для больших пакетов (например, 1500 байт на скорости 10 Мбит/с) задержка может составлять около 1,2 мс, что критично для реального времени (VoIP, видеоконференции).
- Потребление памяти. Буферизация требует оперативной памяти на узле. При большом количестве одновременных потоков возможны переполнения буфера и потери пакетов.
- Неэффективность для коротких сообщений. Для маленьких пакетов (например, 64 байта) накладные расходы на буферизацию и проверку могут быть неоправданно высокими.
- Чувствительность к задержкам. В сетях с высокой задержкой (спутниковые каналы) store-and-forward может увеличить общее время передачи.
Применение
Коммутаторы Ethernet
В современных локальных сетях (LAN) store-and-forward является основным режимом работы коммутаторов. Он используется в офисных и дата-центровых сетях, где важна надёжность. Например, коммутаторы Cisco Catalyst серии 2960 по умолчанию работают в этом режиме.
Электронная почта
Протокол SMTP (Simple Mail Transfer Protocol) реализует store-and-forward: почтовые серверы хранят письма в очереди до момента доставки. Если сервер получателя недоступен, письмо остаётся в очереди и повторно отправляется через заданные интервалы (например, каждые 15 минут). Это обеспечивает доставку даже при временных сбоях.
Спутниковая связь
В системах спутниковой связи (например, Iridium, Inmarsat) store-and-forward используется для передачи данных в пакетном режиме. Спутник принимает сигнал от наземной станции, сохраняет данные и передаёт их на другую станцию при пролёте над ней. Это позволяет работать при отсутствии прямой видимости.
Системы управления и телеметрии
В промышленных сетях (SCADA, Modbus) store-and-forward применяется для сбора данных с удалённых датчиков. Контроллеры накапливают данные и передают их на центральный сервер при установлении связи.
Мобильные сети
В сетях 3G/4G/5G store-and-forward используется для передачи SMS-сообщений. Сообщение сохраняется на сервере SMSC (Short Message Service Center) до момента, когда абонент станет доступен.
Критика и альтернативы
Основной недостаток store-and-forward — задержка, что делает его непригодным для приложений реального времени (VoIP, онлайн-игры). В таких случаях применяются альтернативные методы:
- Cut-through (сквозная коммутация). Коммутатор начинает передачу кадра сразу после получения заголовка (первые 6-14 байт), не дожидаясь всего кадра. Это снижает задержку, но увеличивает риск распространения ошибок.
- Fragment-free (бесфрагментная коммутация). Коммутатор ждёт получения первых 64 байт (минимальный размер Ethernet-кадра), чтобы отсечь коллизионные фрагменты, но не проверяет весь кадр.
- Коммутация каналов. В телефонных сетях устанавливается выделенный канал на всё время соединения, что исключает буферизацию, но неэффективно для пакетных данных.
В современных сетях часто используется гибридный подход: для трафика реального времени применяется cut-through, а для данных, требующих надёжности, — store-and-forward.
Интересные факты
- В 1960-х годах при создании ARPANET инженеры рассматривали store-and-forward как единственный способ обеспечить надёжную связь на ненадёжных телефонных линиях.
- В системах DTN (Delay-Tolerant Networking) используется концепция «bundles» (связок), которые могут храниться на узлах неделями и месяцами, пока не появится связь с получателем.
- В почтовых системах store-and-forward иногда называют «hop-by-hop» доставкой, так как письмо передаётся от сервера к серверу через несколько промежуточных узлов.
- В некоторых промышленных сетях (например, CAN) store-and-forward не применяется из-за низкой пропускной способности и жёстких требований к задержкам.
Источники
- Таненбаум Э., Уэзеролл Д. «Компьютерные сети» (5-е издание). — СПб.: Питер, 2012.
- Олифер В. Г., Олифер Н. А. «Компьютерные сети. Принципы, технологии, протоколы» (5-е издание). — СПб.: Питер, 2016.
- Стивенс У. Р. «TCP/IP. Иллюстрированное руководство» (том 1). — М.: Вильямс, 2003.
- RFC 821 (Simple Mail Transfer Protocol), 1982.
- IEEE 802.3 — стандарт Ethernet, 2022.
- Kurose J. F., Ross K. W. «Computer Networking: A Top-Down Approach» (8th edition). — Pearson, 2021.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →