Сидят два человека на одном 4 мегабитном канале. Один берёт и начинает качать 5 файлов по 90 МБ каждый. Канал забивается под завязку, шейпер провайдера режет до 4 МБ/с, качалка пользователя вошла в уйстойчивый режим, установив TCP-окна некоторого размера для каждого соединения, всё качается.
Просыпается второй человек и ставит качать один файл на 90 МБ. Что будет в этом случае? От него улетит запрос. С какого TCP-окна начинается диалог? Сервер отправит первый ответ около килобайта или окно сразу будет 64 КБ и сервер зарядит 64 КБ? В таком случае, эта вереница пакетов на 64 килобайта частично побьётся шейпером провайдера, ввиду существующего шторма, дующего от 5 файлов в направлении первого пользователя. Долетит до него, скажем, 20 КБ из 64 КБ. Он почешет репу и поставит окно = 20 КБ, заставив сервер дуть слабее, решив, что это проблемы на линии (шейпер - это же искусственные проблемы на линии, правда же?). То есть, добровольно снизит своё рвение за долю в канале. Конечно ветер ко второму пользователю будет отражаться на ветрах первого. Какие приоритеты расставляет шейпер провайдера между установленными соединениями? Не равные ли? В таком случае второй пользователь спровоцирует увеличение числа убитых пакетов, летящих на первого пользователя и его TCP-окна начнут сокращаться. Так всё и уравновесиццо и второй пользователь заимеет 1/6, как я понимаю? Короче, делает ли шейпер провайдера различия между соединениями, СТАРАЯСЬ уравнять их в правах?
Что если я сидел и качал на 100 КБ/с один файлик (сервер быстрее не отдавал). Тут пришла Тётя Клава, нашла сервер, отдающий стопицот терабит/сек и зафигачила с него закачку. Будет ли справедливость, короче, со стороны шейпера? Или я пойду в сад и у меня всё упадёт до 500 байт/сек?
Второй вопрос - до каких пор шейперы буфферизуют непролезающие в пользовательский канал данные и когда начинают просто рубать их на корню, провоцируя юзверские TCP-стеки переспрашивать данные?