2

Предположим, что станция A со скоростью 1 Гбит / с хочет отправить пакеты на станцию B со скоростью 100 Мбит / с. Есть три маршрутизатора с 10 Мбит / с, 1 Гбит / с и 10 Мбит / с соответственно. Как происходит доставка пакета?

2 ответа2

10

Контроль потока TCP сработает, так как скорости разные.

Еще одна вещь, которая может повлиять на TCP в этой ситуации, в зависимости от типа канала, заключается в том, что маршрутизатор 1 Гбит / с использует гигантские кадры, но это ничем не отличается от того, если бы у маршрутизаторов были разные MTU - либо пакеты были бы отброшены или фрагментированы.

9

Короче говоря, вы получите пропускную способность 10 Мбит / с.

Наивно, можно подумать, что управление потоком TCP сработает, как указано LawrenceC, и это, как правило, правильный ответ.

Однако в вашем конкретном примере это не так.

Маршрутизатор 10 Мбит / с, подключенный к вашей карте 1GbE, будет согласовывать скорость 10 Мбит / с. То же самое для маршрутизатора 10 Мбит / с на промежуточном маршрутизаторе GbE и на стороне B. Конец истории.

Таким образом, сетевой адаптер будет отправлять и получать данные только с такой скоростью, но не превышать ее. Действительно, с вашей точки зрения, вся сеть составляет 10 Мбит / с.

Промежуточный маршрутизатор GbE может принимать и пересылать пакеты со скоростью 1 Гбит / с с остальным миром, но будет выполнять только 10 Мбит / с на вашем конкретном маршруте.

Давайте предположим, что топология сети несколько сложнее (Интернет!), И существует некоторое количество гигабитных маршрутизаторов и один или несколько маршрутизаторов 10 Мбит / с где-то между ними. Этот случай немного интереснее.

В этом случае ваш компьютер A будет отправлять пакеты со скоростью 1 Гбит / с, но мы знаем, что только 10 Мбит / с могут пройти через него (ну, не совсем, с альтернативными маршрутами, но давайте забудем об этом). Как это может работать?

В этом случае, действительно, управление потоком TCP сработает. Станция B будет принимать пакеты со скоростью 100 Мбит / с, но они приходят только время от времени. Вы будете отправлять пакеты со скоростью 1 Гбит / с, но вам придется регулярно делать паузу. Это работает на уровне TCP без вашего ведома.

TCP отправит несколько пакетов так быстро, как может (и сохранит "окно"), и сетевая карта подключит их к сети так быстро, как это будет возможно и разрешено, а затем TCP будет ожидать поступления подтверждений , Если они приходят, все в порядке, и больше вещей можно отправить как можно быстрее. Если ACK не приходят, либо произошла ошибка (маловероятно), либо пакеты были отправлены слишком быстро. Поэтому размер окна уменьшается. Когда снова приходят ACK, окно снова постепенно увеличивается. Для этого есть разные алгоритмы, и они довольно сложные, но в принципе все.

Теперь ... маршрутизаторы принимают ограниченное количество пакетов и пересылают их в зависимости от их способности сделать это так быстро, как только могут. Однако в конечном итоге им придется отбрасывать пакеты. Это не ошибка, а нормальное состояние.

По иронии судьбы, предположительно старые маршрутизаторы со скоростью 10 Мбит / с, вероятно, ставят в очередь много пакетов (поскольку когда-то давно считалось, что «чем больше, тем лучше», в настоящее время известно, что дело обстоит наоборот, современные маршрутизаторы короткие очереди).

Понимание того, что больше не всегда лучше, происходит из-за того факта, что, если маршрутизатор ставит в очередь много пакетов, а затем пересылает их, отправитель может предположить, что пакеты потеряны (так как ACK не поступил), и повторно отправить их. Это приводит к тому, что получатель получает дубликаты пакетов, которые он должен отбросить, и это приводит к тому, что маршрутизатор становится еще более перегруженным, выливая масло в огонь. Поэтому современные роутеры быстро отбрасывают.

Теперь, в примере со старым маршрутизатором 10 Мбит / с где- то посередине (и скорость не согласована), очень вероятно, что вы получите пропускную способность значительно ниже 10 Мбит / с из-за этого. Вы получаете повторную отправку и двойную доставку. Ничто из этого не видно приложению, оно просто медленнее по какой-то странной причине.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .