Сколько битов для порядкового номера с использованием протокола Go-Back-N
Я регулярно работаю в Stack Overflow (разработчик программного обеспечения), который пытается пройти сетевой курс. У меня проблема с домашним заданием, я хотел бы проверить психику. Вот что я получил.
Q:
Транк T1 длиной 3000 км используется для передачи 64-байтовых кадров с использованием протокола Go-Back-N. Если скорость распространения составляет 6 микросекунд / км, сколько битов должно быть порядковых номеров?
Мой ответ:
По этим вопросам нам нужно заложить базовые знания. То, что мы пытаемся найти, это размер наибольшего порядкового номера, который мы должны использовать, используя Go-Back-N. Чтобы понять это, нам нужно выяснить, сколько пакетов может поместиться в нашу ссылку за раз, а затем вычесть один из этого числа. Это гарантирует, что у нас никогда не будет двух пакетов с одинаковым порядковым номером в одно и то же время в канале.
Длина канала: 3000 км. Скорость: 6 мкс / км. Размер кадра: 64 байта. Скорость передачи T1: 1544 КБ / с ( http://ckp.made-it.com/t1234.html).
Время распространения = 6 микросекунд / км * 3000 км = 18 000 микросекунд (18 мс). Преобразование 1544 КБ в байты = 1544 * 1024 = 1581056 байт. Время передачи = 64 байта / 1581056 байт / с = 0,000040479 секунд (0,4 мс).
Итак, если мы возьмем время распространения 18 мс и разделим его на время передачи 0,4 мс, мы увидим, что мы сможем вставлять ( 18 / 0,4) 45 пакетов в канал за раз. Это означает, что наш порядковый номер должен быть длиной 2 ^ 45 бит!
Я иду в правильном направлении с этим?
Спасибо майк
1 ответ
Чтобы понять это, нам нужно выяснить, сколько пакетов может поместиться в нашу ссылку за раз, а затем вычесть один из этого числа. Это гарантирует, что у нас никогда не будет двух пакетов с одинаковым порядковым номером в одно и то же время в канале.
Я не согласен с этим рассуждением. Точка отсутствия двух пакетов с одинаковым порядковым номером будет достигнута объектами протокола, не отправляющими кадры за пределы окна. Вы должны различать размер окна, N
и диапазон порядкового номера. Нет проблем в использовании 32-битных порядковых номеров для окна, скажем, 5 кадров, хотя это, конечно, не будет оптимальным.
Если время передачи в одном направлении составляет 18 мс, тогда у вас будет RTT, время прохождения туда и обратно 18 мс + время окончания приема + 18 мс. Я понятия не имею, какие значения времени обработки являются разумными в этом случае, поэтому давайте просто предположим ноль для простоты. Это дает RTT 36 мс. Это означает, что с момента отправки кадра это (в лучшем случае) займет 38 мсек, прежде чем вы получите подтверждение для этого кадра. Это определяет верхний предел того, сколько выдающихся данных имеет смысл иметь при выборе размера окна. Если у вас больше размер окна, он будет заполнять буфер передачи только на стороне отправителя и не влияет на пропускную способность. Вполне могут быть и другие факторы (например, размер буфера на принимающей стороне), которые еще больше ограничивают окно, но, поскольку никакой информации для этого не дано, предположим, что принимающая сторона имеет неограниченные буферы и т. Д.
Для оптимальной (пропускной) производительности окно должно быть достаточно большим, чтобы отправитель мог отправлять 38 мс непрерывно. Скорость T1 составляет 193000 байт в секунду. С 64 байтами на кадр, что соответствует 3015,625 кадрам в секунду. 0,038 раза 3015,625 дает 114,59375. То есть за 38мс вы можете отправить 114 кадров. Поэтому размер окна немного больше теоретического максимума (например, 115-120) может быть выбран (так что ограничивающим фактором является физическая ссылка, а не размер окна). Диапазон порядкового номера должен быть больше, чем размер окна, и в этом случае 128 является близким максимальным значением.
Таким образом, ответ на ваш вопрос, вам нужно минимум 7 бит для порядковых номеров в этом случае. Смотрите также здесь интерактивный Java-апплет go-back-n.