История берет свое начало в далёком 2004 году, когда доступный доступ в интернет в городах с населением меньше миллиона был редкостью. В те времена были очень популярны «домовые» сети, в которых существовали «провайдеры» – обычно студенты, установившие спутниковую «тарелку» и настроившие сервер для раздачи трафика. Я тоже захотел в этом поучаствовать…
2004 год
Речь пойдет о городе N-ске, в котором живёт чуть больше полумиллиона человек. В базовую часть организации доступа подробно вдаваться не буду – все было стандартно: Я после поступления в ВУЗ хотел заработать денег и получить опыт в администрировании. Подключился к местной домовой сети, в которой было около 150 человек. Дома уже был ADSL, установил спутниковую «тарелку», купил необходимое оборудование, подключился к трафиковому тарифу у спутникового провайдера (PlanetSky). Так как был хорошо знаком с Linux, то сервер организовал под Debian. В качестве биллинга использовал свободное решение – Neon Internet Billing System.
2005 год
Домовая сеть росла, было подключено еще пара близлежащих сетей. Поэтому количество абонентов выросло – пришлось дорабатывать биллинг. Вместо трафикового тарифа у спутникового оператора ставло выгоднее брать условный безлимит на несколько мегабит (SatGate). Для конечного потребителя цены были от 30 копеек до рубля в зависимости от времени суток (для сравнения – местные провайдеры предлагали от 3 до 7 рублей). Прием оплаты по-прежнему производился по принципу пришел с денежкой — положили на счет.
2006 год
Домовая сеть продолжала расти. Также было подключено несколько сетей по радиоканалу. Самый дорогой условный безлимит у спутникового провайдера перестал справляться – было решено покупать выделенную полосу. Выбор пал на RuSat, как на самого доступного. За счет этого появилась отличная возможность установить комплект ADSL+антенна+сервер в других отдаленных сетях города – та точка «плюхалась» в этой же выделенной полосе. Так было подключено еще несколько сетей. Абонентов стало еще больше, точек подключения тоже. По прежней схеме принимать оплату было невозможно. Я доработал биллинг – был организован автоматизированный процесс генерации карт доступа. Карты печатались на плотной бумаге цветным лазерным принтером, ламинировались, листы разрезались, углы скруглялись. На место пароля приклаивалась скратч-панель. Выглядели они так (фото сделано в те годы на коммуникатор E-ten M600, поэтому и качество соотвествующее):
2007 год
Абонентская база стала еще больше. Потребовалось расширение канала у спутникового оператора. RuSat отказал, так как у них вся полоса на спутнике уже была распределена. Решено было не прибегать к спутниковым провайдерам, а установить сервер в дата-центре и заключить договор с телепортом — получить собственную полосу на спутнике. Это уже позволяло подключать клиентов по всей России. Сказано-сделано. Пошли первые подключения, но в этой ситуации карта легла не так. Через пару месяцев пришли телевизионщики на спутник и всех согнали, так как были готовы платить намного больше. Кроме того, местные провайдеры начали запускать первые безлимиты – 128 кбит/с честного безлимита за 1000 рублей. Со спутниковым «пингом» и ценами им конкуренцию не составишь.
Один из местных федеральных Ethernet-провайдеров разрешал заключать несколько договоров на один адрес, а также позволял «поднимать» PPPoE-сессию с логином от другого адреса. Картина в голове сложилась быстро. Я отправил 30 друзей заключить по десять договоров. В итоге я получил 300 PPPoE-соединений со скоростью 128 кбит/с каждое. Оставалось их как-то объединить в один большой канал.
Я арендовал в дата-центре в Москве физический сервер и написал модуль для ядра Linux на основе tun/tap, который добавлял в систему виртуальный сетевой интерфейс. Один такой интерфейс был на моем сервере, другой на московском сервере, в них направлялся весь трафик клиентов. Каждый первый сетевой пакет, попавший в этот интерфейс, отправлялся по первому PPPoE-соединению с одного сервера на другой, каждый второй пакет отправлялся по второму PPPoE-соединению и так далее циклически. Таким образом я получил безлимитный канал чуть больше 30 мбит/сек (с учетом оверхеад туннеля).
На пути я встретил три крупых проблемы:
Первая – это перемешивание пакетов. То есть с москвоского сервера пакеты ушли в порядке 1, 2, 3, 4, 5, 6…, а на моем сервере из-за шейпера местного провайдера они приходили в разное время и порядок мог получиться такой: 3,2,5,1,6,4… В итоге многие пользователи при закачке получали все те же 128 кбит/с, так как TCP-стек Windows такую последовательность переваривает плохо. В модуль для ядра был писан сортировщик пакетов, который накапливал небольшой буфер из пакетов и отправлял их клиентам в нужном порядке.
Вторая проблема была в том, что стандартный шейпер Linux при большом количестве статичных правил, большом объеме трафика и большом перекрытии полосы (правил добавлено на 800 мбит/с, а канал всего 30 мбит/с) начинал шейпить неправильно. Пришлось писать модуль для Linux tc, который динамически добавлял/удалял правила в шейпере на московском сервере в зависимости от его актиности на сетевом интерфейсе.
Третьей проблемой было ежемесячное соотношение исходящего/входящего трафика на московском сервере – на тот момент требовали 1 к 3. За отклонение от этого соотношения в меньшую сторону — требовали доплату по 30 рублей за каждый гигабайт превышения, а трафик там мерялся террабайтами. Так как сервер был просто шлюзом, то соотношение трафика было 1 к 1. Простым решением оказались торренты. На сервер закачивался популярный контент и раздавался в консольном торрент-клиенте. Террабайты сидерского трафика на популярных трекерах страны были обеспечены.
В итоге получились отличные цены для конечного пользователя: 256 и 512 кбит/с честного безлимита за 500 и 700 рублей соотвественно. В таком свете 128 кбит/с в среднем за 1000 рублей от местных операторов выглядели непривлекательно. Были у меня также трафиковые и условно-безлимитные тарифы.
2008 год
В городе я составлял серьезную конкуренцию местным провайдерам – они начали активное наступление через органы. Кроме того, за год моей работы – провайдер, через который работал мой канал, начал замечать, что среди его клиентов есть пара десятков человек, которые имеют по десятку договоров, а каждый договор круглосуточно прокачивает максимально возможно объем, что составляет приличную долю их трафика. Одновременно с этим в городе произошло большое падение цен на безлимиты. Все эти обстоятельства вынудили меня остановить деятельность.
Автор: pwrlnd