Пользователь
18,5
рейтинг
27 августа 2013 в 12:48

Администрирование → Повесть о настоящем Интернете tutorial

Abstract: Рассказ про устройство Интернета, как «сети сетей» в виде текста для чтения, без двоичной системы счисления и нюансов BGP. Большая часть расказа будет не про процесс общения ноутбука с точкой доступа, а о том, что происходит после того, как данные пройдут «шлюз по умолчанию». Предупреждаю, букв много.

Вступление


Маленький провокативный вброс: ни один из читателей этой статьи к Интернету не подключен. Все подключены к сети своего провайдера, и не более. Подключение к Интернету дорогое, его сложно делать, вам потребуется очень крутое оборудование, несколько договоров с несколькими операторами связи и квалифицированные сотрудники. Простому домашнему пользователю это никак и никогда не светит. Не говоря уже о том, что в Интернете может быть не больше 4 миллиардов подключившихся (а до недавнего времени было даже «не более 65536») [1]. Даже если весь Интернет перейдёт на ipv6, это число не поменяется.

Вот число подключившихся к Интернету [2]:

По оси Y — число в штуках. Штуках, штуках. И вас в этом числе не посчитали.

Почему?

Дело в том, что Internet — это, если переводить буквально, «межсетье». Сеть Сетей. И участниками Интернета являются не пользователи (их компьютеры, планшеты, микроволновки с wifi и т.д.), а сети. Сети и только сети участвуют в работе Интернета. Интернет — это то, что связывает разные сети между друг другом.

А вот отдельные узлы этих сетей — они уже могут посредством своей сети, подключенной к Интернету, связываться с другими узлами других сетей.

Впрочем, обо всём по порядку.

Что есть сеть?


Я пропущу всю драматичную и покрытую пылью историю первых десятилетий компьютеров. В какой-то момент возникло желание передавать информацию с компьютера на компьютер иначе, чем дырявя тысячи перфокарт. После долгих мучений и миллиардных инвестиций в сдохшие-таки протоколы, которые так и не стали стандартами (а некоторые стали, но всё равно сдохли), возникло понятие «локальной сети» (или «локалки»). Локальная сеть позволяет компьютерам, которые расположены рядом связываться друг с другом по адресу в этой сети. Понятие «рядом» очень растяжимое, и может растягиваться на несколько зданий, а если сильно напрячься, то и на пару городов.

Почему «сеть»?

Мы все привыкли к тому, что это самое, компьютерное, называется «сеть». Но мы ещё помним, что сетью называется то, чем ловят рыбу и прочие ячеистые структуры.



Так что если компьютерная, но сеть, то она тоже должна быть из ячеек. В то же самое время наш бытовой опыт говорит о том, что это никак не сеть, а настоящее компьютерное дерево. Листья (компьютеры, смартфоны, планшеты и т.д.) подключаются к веткам (маршрутизаторы, коммутаторы, точки доступа), которые снова подключаются к маршрутизаторам/коммутаторам, и так до тех пор, пока не образуется Главный Маршрутизатор, от которого линк обычно уходит к провайдеру Интернета. Или, в случае совсем локальной сети — никуда не уходит, ибо Маршрутизатор — он Главный.

Где же тут сеть?

Ответ: в такой конфигурации нет сети. Это не сеть. То есть это всё ещё компьютерная сеть, но очень частный, «порванный» её вариант. Настоящая компьютерная сеть подразумевает, что у нас в сети более чем один маршрутизатор, и они связаны друг с другом несколькими линками.

Ниже схема средней по размеру локальной сети. Круглые объекты — маршрутизаторы, квадратные — коммутаторы, за вычетом исходной точки и целевой точки все коммутаторы удалены для упрощения. Зелёным показан предпочительный путь, красным — дорогой отрезок.



Уже больше похоже на сеть?

Именно в избыточных связях и состоит главная идея Интернета. Создавали его американские военные (ARPANET) с простой целью — если любой из промежуточных узлов на этой схеме произойдёт повреждение (на войне бывает, знаете ли, копали окоп, порвали кабели), то связь должна сохраниться.

На самом деле я немного лукавлю — множество локальных сетей (было) построено не на протоколе IP, а на других протоколах (ATM, IPX/SPX).

Но мы говорим про победителя — про протокол IP (который так и расшифровывается — Internet Protocol).Сети, построенные на базе IP-протокола, и Интернет в частности работают на принципе hop-by-hop.

Hop by hop


Для того, чтобы исключить существование «центрального маршрутизатора всея Интернет» каждый маршрутизатор, решающий куда дальше послать принятый пакет, принимает это решение самостоятельно. И только в пределах своих соседей (directly connected). Этот принцип называется «шаг за шагом» (hop by hop). Альтернативой подобному подходу мог бы быть либо центральный координирующий узел, говорящий как передавать пакеты, либо указание маршрута в самом пакете.

Идея центрального координирующего узла натыкается на одну простую проблему — как донести информацию о новом маршруте до маршрутизатора, если использующийся для связи с маршрутизатором маршрут повреждён? Упс…

Идея «заранее проложенного маршрута» использовалась в UUCP (предшественник обычной электронной почты), но в условиях войны (одновременно: землетрясение, цунами, и авария на атомной электростанции) надеяться, что отправитель в курсе, какие узлы работают, какие нет, мягко говоря, наивно.

Таким образом, принцип hop-by-hop перекладывает всю ответственность за маршрут на данном участке на маршрутизатор, отвечающий за данный участок (в такой формулировке звучит как банальность).

Маршрутизатор обычно может довольно хорошо сказать, кто из его соседей живой, а кто нет. Плюс, он может общаться с соседями соседей и узнавать информацию о том, какие у них линки живые, а какие нет.

Второе (общение с соседями) называется «протокол маршрутизации». Он описывает то, каким образом маршрутизатор должен общаться с соседями и как именно это общение должно влиять на таблицу маршрутизации. Сами протоколы бывают двух типов — для работы «внутри сети», и для работы между сетями.

Таблица маршрутизации — это святая святых любого маршрутизатора. Её структура простая: весь трафик сети такой-то пересылается на адрес такой-то через сетевой интерфейс такой-то, плюс предпочтительность каждого маршрута. Чем точнее маршрут, тем он предпочтительней, а при прочих равных используется приоритет данного маршрута. Финальный (самый плохой) маршрут называется «на деревню дедушке», то есть «весь трафик». Это так называемый «шлюз по умолчанию». Его используют только если нет более точных маршрутов, и, что самое интересное, у обычных компьютеров (телефонов, планшетов, пылесосов, видеокамер, зубочисток с wifi и т.д.) очень часто бывает только он — маршрут по умолчанию, то есть ничего хорошего в их жизни нет.

Но это была присказка. Сказка будет впереди.

А что там, за аплинком?


Аплинком (uplink) называют того, от кого получают доступ к Интернету.

Как мы уже обсудили, настоящий Интернет объединяет сети. Такие сети называются «автономные системы», и называются они так потому, что ни от кого не зависят — они сами по себе. Автономные системы соединяются друг с другом (и сейчас мы обсудим как), передают свой трафик соседям, и даже передают трафик от одного соседа другому транзитом.

Важно понимать, что это личное право автономной системы принимать трафик от соседа и отправлять его соседу. Хотят — отправляют. Хотят — не отправляют, или отправляют не ближайшему соседу, а совсем другому, который пропускает трафик третьему, третий пятому, пятый в Автралию, а потом обратно. Кто кому какой трафик передаёт определяется межоператорскими соглашениями (или договорами попроще, если у вас маленькая, но горденькая автономненькая системка на два аплинка).

Итак, настоящий Интернет состоит из автономных систем и связей между ними.

Кто-то вообразил, что связь между автономной системой в Китае и, например, в Москве — это тысячи километров. Нет-нет. Размер (физический) линка между автономными системами обычно очень маленький — иногда это десятки сантиметров, иногда метры, в крайнем случае десятки метров.

Почему? Потому что если бы линк между ними был 10 000 километров, да ещё и висел бы на столбах, кто бы за этими столбами ухаживал, поливал их, подпирал и привязывал к проводам? Так что чаще всего все эти тысячи и тысячи километров оптики (медь умерла на таких дистанциях), которые и есть автономная система. Заметим, это целый отдельный мир, называемый «магистральные операторы». Их бизнес как раз в том и состоит, что они берут трафик с одной точки и доносят до другой через тысячи километров сквозь стужу, тракторы и медведей.

А вот соединения между автономными системами (их называют «стыки») обычно находятся в уютных холодных, сухих и тщательно охраняемых помещениях. Это могут быть серверные (например, у Селектела в серверной есть некотрое количество так называемых «операторских стоек» — как раз для того, чтобы операторы, которые там разместились, могли стыковаться друг с другом в комфортных условиях), или, если говорить про действительно крупные специализированные узлы, то используются отдельные помещения (чаще всего образующиеся стихийно из-за большой концетрации готовых трасс) — Internet Exchange (IX). Так что MSK-IX — это не «Москва-9», это «Мoscow Internet Exchange»). Туда приходят операторы (со своими проводами или арендованными) и коммутаторами (целыми, или маленьким кусочком посредством аренды VLAN/порта). А дальше трудолюбивые паучки начинают вязать всемирную паутину инженеры начинают заниматься тысячами кроссировок (соединением проводом одного коммутатора с другим). На этих кроссировках весь интернет и держится.

Как же все эти люди умудряются договориться друг с другом? А главное, как эти договорённости сохраняют главное свойство — переживать смерть (в том числе и смерть линка с соседями)?

BGP


Главным протоколом Интернета (не по трафику, а по важности) является BGP (border gateway protocol). Этот протокол используется для общения между маршрутизаторами провайдеров/операторов на стыках автономных систем, то есть за пределами их сетей.

Каждая автономая система, участвующая в работе Интернета, анонсирует какие маршруты она принимает и через какого аплинка. А ведь автономных систем много. Тысячи их! Полный список всех анонсов называется Full View, и он описывает существование всего Интернета на планете Земля (насколько я знаю, автономных систем за пределами планеты нет, есть только отдельные узлы, которые маршрутизируют трафик через наземные машрутизаторы). Full View довольно большой (под 400 000 записей для ipv4, от 200Мб до 2Гб в размере в зависимости от железа и софта).

Заметим, что маршрутизатору с Full View не нужно иметь шлюза по умолчанию — перед ним карта всего Интернета.

Так как оператор сам решает какие префиксы (фрагменты сети того или иного размера) анонсировать и через кого, то он может указывать через кого принимать трафик. Например, выбирая между «хорошо и дорого» и «дешево» оператор может предпочесть дешево. А «дорого» оставить как резерв.

При этом очень важно, что «откуда оператор принимает трафик» не равно «куда он его отсылает». Это так называемые нессимметричные маршруты. Их появление — результат экономической политики и жадности.

Вот пример скромного несимметричного маршрута (фрагмент карты взят с сайта [3], маршрут своего собственного изобретения). Допустим, мы, сидя в Киеве решили попросить фотографию котика с сервера в Вильнюсе. Маршрутизатор нашего провайдера знает, что ближайший линк до Вильнюса — через Варшаву (зелёная стрелка). Сервер в Вильнюсе пошуршал, нашёл котика и отправляет его нам. Но оператор сети в Вильнюсе знает, что за трафик в кабеле до Варшавы с него срубят много-много денег. А в Москву он не отправляет трафик по политическим причинам. И вот, он отправляет его через другого оператора. В Риге. Который опять его отправлят в Стокгольм, тот отправляет дальше, трафик снова пересылают… И так пока картинка не доползёт до скучающего котофила в Киеве.


Заметим, анонсируя свои сети, оператор может творить чудеса (или ужасы). Оператор может анонсировать свои сети через нескольких аплинков — и в этом случае трафик к нему пойдёт через всех, причём выбор аплинка в том или ином случае пойдёт через наиболее удобный путь (который или ближе, или дешевле, тут уж как настроят). Это, кстати, лежит в основе большинства CDN (content distribution network) — оператор хранит копию раздаваемого содержимого на куче серверов по всему миру, имеет кучу стыков с местными операторами и всюду анонсирует свои (одни и те же) адреса. Получается, что в каждом регионе пользователю запросы принимают на ближайшем к нему (по маршруту) сервере, и оттуда же ему и отвечают, что получается сильно быстрее, чем через всю планету переспрашивать.

Так же оператор, может, например, не анонсировать часть адресов. В этом случает трафик умирает на первом же маршрутизаторе, который осознал, что дальше пути нет.

Вот пример вывода, который мне удалось получить во время недавних кратковременных работ на сетевом оборудовании. По мере того, как информация о завершении BGP-сессий между маршрутизатором и его аплинками расходилась по Интернету, трафик отправляли всё дальше и дальше, на маршрутизаторы, которые пока что считали, что они знают, куда отправлять трафик. В результате, после 255 хопов (т.е. передач между 255 маршрутизаторами) пакет умирал от старости, так и не достигнув назначения.

PING selectel.ru (188.93.16.26) 56(84) bytes of data.
From ae0-0.par-gar-score-2-re1.interoute.net (212.23.42.26) icmp_seq=51 Time to live exceeded
From ae-3-80.edge5.Frankfurt1.Level3.net (4.69.154.137) icmp_seq=54 Time to live exceeded
From xe-0-2-1.par72.ip4.tinet.net (89.149.181.138) icmp_seq=68 Time to live exceeded
From 94.79.28.33 icmp_seq=72 Time to live exceeded
From so-0-0-0.IL2.NYC12.ALTER.NET (146.188.15.254) icmp_seq=92 Time to live exceeded
64 bytes from 188.93.16.26: icmp_seq=326 ttl=58 time=0.732 ms


Аплинки аплинков: Tier 1


Простыми логическими рассуждениями легко понять, что если у аплинка есть аплинк, то либо аплинков бесконечное количество, либо они замкнуты в кольцо, либо есть такие аплинки, у которых нет аплинков.

И такие есть. Их называют Tier 1. Их отличие от всех остальных не в том, что они не имеют аплинков (всё-таки у нас сеть, верха/низа в формальном смысле нет), а в том, что они не платят никому за Интернет. Представьте себе компанию, которая получает сотни гигабит/с (терабиты?) трафика, столько же отправляет — и всё это на халяву. Чтобы получить на халяву интернет надо подойти к ближайшему макдональдсу/старбаксу поближе, найти их wifi… К сожалению, Tier 1 это вас не сделает. Чтобы быть Tier 1 нужно ещё одно условие — чтобы вам за интернет платили. Таким образом, они никому не платят, а им за связность платят.

Происходит это из-за очень хорошей связности (количества стыков) этих операторов. Очевидно, что местечко это очень уютненькое и соблазнительное, так что многие туда метят. Подробнее про то, как «дружат» между друг другом Tier 1 хорошо написано на nag.ru [4].

Пиры, пиринг и пиррова победа


Как мы выяснили, Tier 1 со всех деньги получают и никому не дают. Если есть два оператора, между которыми большой трафик (допустим, это очередной убийца ютуба с миллионами роликов про котят и новый мегателеком с миллионами жаждущих посмотреть на котят), то идеальная (с точки зрения Tier 1 оператора) картинка выглядит так: оба оператора подключаются к Tier 1 и платят за трафик. Убийца ютуба за исходящий, получатель котят — за входящий. Tier 1 доволен, убийца ютуба не может найти адекватную модель монетизации котят, а мега-телеком просит дотацию из бюджета.

Решение? Дотащить/арендовать кабель до уютной коммутационной и настроить локальный обмен. От ютубоубийцы к мегателекому. Итог: гигабайты котят ходят напрямую, расходы сокращаются. Tier 1 не очень доволен, но его бизнес вообще не котят гонять, а «самую крутую связность» делать, так что без своего куска хлеба он не останется.

Такое соединение называется пирингом (от peer). Его главное условие — участники пиринга друг другу не платят, или платят, но смешную сумму за аренду порта/кусочка физического линка.

Одно время любимым направлением пиринга были «контенто-генераторы» и «провайдеры Интернет». Но тут началось… Напстер, шареаза, едонкей, DC, и, под трубный глас копирайтных фанфар… торренты. Внезапно, объём трафика «между пользователями» стал в разы больше, чем между поставщиками контента и потребителями. И если ютуб и его клоны вполне могут потягаться, то какой-нибудь сайт с «много букв, мало картинок» (например, Хабрахабр) очевидно не может угнаться за пользователями, которые решили скачать всю Футураму и Симпсонов одним паком, да ещё и раздать обратно с рейтом 2.

Так что особую популярность приобрели стыки между провайдерами. В силу того, что многие провайдеры делают nat и серые адреса внутри сети, доходило до пиринга серыми адресами, причём провайдеры резали полосу по тарифу только в Интернет, а «пиринг локалками» шёл на скорости среды.

В результате у операторов в руках оказался гигантский трафик терабайтных масштабов.

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

Если у нас есть провайдер А с трафиком в 10 Гб/с и провайдер Б с трафиком в 1Гб/с, а примерный объём пиринга между ними 500Мб/с, то…

… Надо ещё сказать, чаще всего магистралы деньги берут за полосу, по 95% персентилю, и по тому, какого было больше — исходящего или входящего.

Так вот, если будет пиринг между А и Б, то А экономит на пиринге 5% трафика, а Б — 50%. Очевидно, если А и Б конкуренты, то отказавшись от пиринга А почти ничего не потеряет, а вот Б будет сильно много платить аплинку, чтобы тот донёс трафик до А.

Ещё хуже, когда операторов три: А, Б, В. А и В большие, между ними стык в 10Гб/с, почти забитый. Б — маленький, и у него всего 500Мб/с. А и В пирятся, а Б не пускают. Б идёт к аплинку и платит кровные. За трафик до А и до В. А так как большинство пользователей у А и В, то у Б большая часть пользователей хочет получить/отправить трафик А или В. Для альянса А и В всё отлично — большая часть трафика локальная, а к конкурентам уходят сущие крохи. А для Б это означает, что большая часть трафика — платная и дорогая.

Таким образом, два больших дружат, а у Б всё плохо (дорого). А бывает так, что объединяются несколько больших операторов и решают устроить «бизнес». Получается ОПГ. Как любая ОПГ, она начинает «доить» тех, кого крышует и давить тех, кто сопротивляется. Ну, вы понимаете, кушать всем хочется.

… Ах да, ОПГ расшифровывается весьма невинно — Объединённая Пиринговая Группа. Чуть подробнее про это есть в блоге Кипчатова [5].

Войны вокруг пиринга существуют и будут существовать, увы. Mesh network хорош пользователям, но не тем, кто на Интернете зарабатывает.

В силу того, что пиринг очень востребованная услуга, существуют целые компании, которые строят свой бизнес только на предоставлении пиринга. В этом случае существует несколько методов:
  • Прямая коммутация. Оператор А втыкается в оператора Б физически
  • Общение через коммутатор пиринг-оператора. Прелесть метода в том, что можно иметь один порт, и общаться с несколькими операторами, которые присутствуют в том же самом коммутаторе
  • Роут-сервер. Это самый тонкий и изящный ход: каждый оператор в пиринге устанавливает соединения с роут-сервером пиринг-оператора, получает от него все маршруты, которые анонсировали все подключенные к пирингу операторы. При этом для сторонних наблюдателей автономная система пиринг-оператора в маршруте не появляется. В этом случае пиринг-оператор обычно берёт деньги за трафик, но меньшие, чем «настоящий» провайдер, работающий в качестве аплинка.


Чёрные дыры в Интернете



В силу своей примитивности, DoS атаки (обычно любят добавлять DDoS, но distributed — это отдельный разговор) очень легко реализуемы. Десяток строчек на Си, одна строчка в шелле — и вот, очередной компьютер изо всех сил тужится, стараясь загадить Весь Интернет бессмысленным трафиком. Если таких компьютеров собрать несколько — можно получить поток хлама в гигабайты, десятки гигабайт, сотни гигабайт.

Если весь этот мусор направляется на один адрес, то получается беда. Входящий канал забивается в «потолок» и добросовестные пользователи просто не могут прислать свои запросы.

Проблема состоит в том, что могут забить не только канал конкретного сервера, но и входящий канал оператора (да, такое бывает). С учётом, как оплачиваются каналы между операторами (95% персентиль), большой поток мусорного трафика длительное время — это очевидные непродуктивные затраты.

Простейшее бытовое решение — прописать источник в drop на ближайшем маршрутизаторе, а то и коммутаторе. Но при этом оказывается, что во-первых, входящий канал всё равно перегружен, во-вторых его надо оплачивать, а в третьих мы сталкиваемся с проблемой «кого банить». Если весь трафик идёт с одного-двух адресов, задача простая. Но сделать флуд с поддельным адресом отправителя — легче лёгкого. Так что в совсем аварийных ситуациях блокируют адрес получателя (да-да, «добровольно умирают» для того, чтобы сохранить соседей), и переносят эту задачу на blackhole в BGP. В нормальной конфигурации в него должны добавляться свои адреса, а не чужие, но если аплинк по договорённости или по невнимательности разрешит анонсировать и чужие адреса, то это тоже можно сделать.

Рассказ про техническую часть blackhole BGP есть на хабре [6].

Как это выглядит? Для black hole выделен специальное комьюнити (условно говоря, ещё один, специальный, маленький full view), куда провайдер может анонсировать свои адреса с префиксом /32 (для ipv4). Выдали ему романтичный номер 666. Граничные маршрутизаторы обмениваются этой информацией по BGP, так что чёрная дыра расползется, медленно поглощая весь трафик, адресованный забаненному адресу на всех маршрутизаторах, которые эти анонсы видят (и поддерживают). В результате трафик на «жертву» начинает роняться на аплинках, аплинках аплинков — и так до ближайшего к источникам атаки «понимающих» маршрутизаторов. Они плохой трафик и дропнут, так что Интернет атаки не заметит. Адрес, впрочем, из интернета доступен не будет, так как «хороший» или «плохой» трафик машрутизатор разобрать не может.

Ссылки




Большое спасибо коллегам, которые помогали с информацией и указывали на неточности в статье, и отдельное спасибо borisblade за рисунки с Тирексом.
Георгий Шуклин @amarao
карма
269,0
рейтинг 18,5
Пользователь
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Администрирование

Комментарии (52)

  • +14
    Отличная подача материала. Прочитал на одном дыхании! Спасибо :)
  • +1
    Аплинк == магистральный провайдер?
    • +1
      В процессе чтения понял. Но, наверно, стоит перед употреблением термина дать ему определение.
      • +1
        Спасибо, глаз замылен, не замечаю жаргонизмов.
  • 0
    А если я сидя в Киеве запросил картинку котика из Вильнюса, может так случиться, что запрос пройдя по цепочке маршрутизаторов вернется на первый киевский маршрутизатор?
    • +1
      Да. Более того, так как табличка маршрутизации меняется со временем, может быть так, что со второго раза маршрутизатор отправит куда надо и котик до вас таки дойдёт, но с лагами.

      Для отлова бесконечно гуляющих пакетов есть TTL, который уменьшается на единицу на каждом маршрутизаторе. Достиг нуля — пакет умирает.
  • –3
    Маленький провокативный вброс: ни один из читателей этой статьи к Интернету не подключен. Все подключены к сети своего провайдера, и не более.

    С этим я бы поспорил — все кто получают IP address (Internet Protocol Address) находятся в Интернете, так как сеть скорее обуславливается протоколом, а не проводами: http://ru.wikipedia.org/wiki/IP
    • +13
      Даже те, кто получил IP-адрес в локальной сети, не подключенной к интернет?
      • +1
        нет, так как кроме использования протокола нужно еще иметь возможность обмениваться информацией с большей частью мира — в таком случае будете частью сети Интернет
        иначе же можно будет сказать что и провайдер не подключен к Интернету, а подключен к другому провайдеру и так дойти до Tier 1 и сказать что Интернет — это они. На самом деле Интернет это система обьединения сетей по всему миру на основе IP.
        Тут любопытный вопрос возникает: если, к примеру, обрубить все кабеля в Америку — где будет Интернет? В Америке или в Европе, Азии и Африке?
        • +1
          Не будет Интернета. Увы. Ровно так же, как если порезать город на дома и лишить их связи друг с другом, то города не будет, а будут тысячи каменных коробок.
          • +2
            А если обрубить все кабеля в Канаду, то в Европе уже не будет Интернета, потому что не подключена Канада? Где ж граница когда будет Интернет или когда его не будет?
            • 0
              Будет, конечно. Интернет для того и планировался, чтобы обрыв кабелей переживать. Если у США есть связность с миром, а у Канады с США, то будет Интернет и в Канаде.

              Более того, даже если между Европой и Америкой порубить все кабели, связность сохранится. Более того, даже если обрубить все кабели между Европой, Африкой и Америкой, связность сохранится.

              Вам придётся перерубить все кабели, для того, чтобы лишить сеть связности. А с учётом, что сеть — она не просто так, придётся резать очень и очень много.

              Землетрясения и злые акулы, а так же якоря и т.д. периодически это устраивают — и ничего, живёт. Хоть и не очень комфортно — но это уже другой разговор.
              • +2
                Суть вопроса не в устойчивости Интернета, а в том чем он определяется. Например если исключить одну страну из Интернета, Интернет будет существовать? А если континент? Вот в чем момент — нет четкого определения что такое Интернет и какими масштабами он определяется. Это уже становится каким-то филосовским вопросом.
                • 0
                  Это примерно как с живым организмом. Отъятие какого числа органов делает человека трупом?
                  • 0
                    человек — эта та его часть, в которой функционируют его мозги.
                    • 0
                      А интернет — та его часть, в которой функционирует википедия/хабр/гугл (нужное подчеркнуть)?
                    • +1
                      Левое или правое полушарие?
                      • 0
                        не встречал одновременного функционирования разделённых полушарий в разделённых отдельных частях человека
                        • 0
                          Так и с интернетом так же. В питательной среде оно что-то делает, но назвать это человеком не получается.

                          С интернетом так же.
          • +1
            Будет два интернета, американский и европейско-африканско-азиатский…
            • 0
              Если понимать Интернет как имя собственное сети, то такое врядли возможно — тут либо одна часть останется Интенетом, а вторая станет другой сетью, либо это будут две новые сети.
              • 0
                Интернет стоит понимать как в начале сказано — как соединение множества сетей…
  • 0
    Но сделать флуд с поддельным адресом отправителя — легче лёгкого.
    Кстати, а почему, собственно? Я в своей домашней локалке (2 компа, 6 vlan-ов :)) и то блокирую пакеты с некорректными source ip из всех сетей включая оба провайдера, оба wifi и виртуальную сеть используемую виртуальными машинами. Что мешает всем провайдерам, работающим с пользователями, блокировать от них пакеты с некорректным source ip, или, хотя бы, делать это если не для каждого пользователя, то для подсетей/коммутаторов?
    • +1
      Кто-то должен непрерывно вести таблицу актуальности и не забывать обновлять. Пакетные фильтры часто мешают нормальной работе (т.к. приходится их срочно менять). Разворачивать же централизованную инфраструктуру для защиты от спуфинга — это дороговато и сложно, особенно, на зоопарке железа.
      • 0
        Извините, но я всё-ещё не понимаю, можно немного подробнее?

        Как минимум, любой провайдер знает свои подсети, и их обычно не так уж и много, а новые добавляются не так часто. Точек (интерфейсов), где проходит исходящий трафик этого провайдера (т.е. без транзитного трафика других AS) тоже не так много. Что мешает в этих точках добавить блокирование трафика с source ip не из сетей этого провайдера? Поддержка этого много сил не займёт. Не идеальная защита, но ведь лучше, чем ничего?

        Далее, все оконечные коммутаторы и/или сервера pptp/pppoe всё-равно нужно настраивать, прописывать IP-адреса пользователей, поддерживать всё это хозяйство — неужели добавление одного лишнего правила в пакетный фильтр на одного пользователя заметно усложнит настройку или поддержку?

        Я понимаю, что добавление фильтра по source ip — добавит работы по настройке/поддержке. Но на мой взгляд это «добавит» выразится в пренебрежимо малом значении относительно текущих усилий. По-моему, это не делают не потому, что это дорого обойдётся в поддержке или заметно что-то усложнит, а просто потому, что этого можно и не делать — для общей работоспособности системы это фича опциональная, а значит на неё можно забить, вне зависимости от того, насколько много или мало усилий нужно для её внедрения.
        • +1
          От чего вся эта защита защищает провайдера? Оно ему нужно? Такие фильтры очень опасны, потому что могут приводить к массовым отказам в обслуживании. Провайдер получил себе ещё один диапазон — его надо пойти и прописать. Забыл — выдал пользователям — имеешь жалобы на неработу интернета, которую некомфортно отлаживать.

        • 0
          «Пренебрежительно малое значение усилий» будет только в пренебрежительно малой сети. У крупных провайдеров, с большими, постоянно меняющимися сетями, это будет постоянной головной болью. Поэтому они это и не делают.
    • +1
      Приведу пример.
      Я — провайдер, у меня одна AS, два-три аплинка, 2-3 префикса.
      У себя на бордерах (пограничных маршрутизаторах) я могу сделать (и делаю :)) фильтр — всё, что улетает от меня в мир с чужими адресами — под нож. Всё отлично, все счастливы.

      Теперь посмотрим на моего аплинка. У него 100 своих префиксов и 500 клиентов. Ему уже надо делать фильтр для своих адресов плюс транзитных (адресов клиентов) — уже сложнее. А потом кто-то из его клиентов решит анонсировать префиксы еще одной AS (своего клиента), которая анонсирует еще своих клиентов… Неразбериха, в общем.

      А если это Tier 1, который просто физически не может построить фильтры?

      Вот так и получается.
      • 0
        Я думал именно для этого ведется RIPEdatabase. У вашего апстима в базе есть запись:
        import: from AS12345 accept AS-EXAMPLE
        В свою очередь в as-set'e AS-EXAMPLE в полях members указаны AS-члены данной as-set. А за этими AS уже закреплены какие-то сети…
        Тогда, когда клиент апстрима (AS12345) решит анонсировать префиксы еще одной AS:
        — клиент добавит еще одного member в as-set
        — у апстрима по крону запустится какой нибудь rtconfig, который выполнив кучу рекурсивных запросов к RIPEDB сгенерирует конфигурационный файл и зальет его на маршрутизатор

        Или я не прав? Я вот на днях сам только начал вникать в эту кухню…
        • +1
          Не просто так RIPEdatabase называют забором, т.к там информация может и несоответствовать действительности, добавить запись просто… а убрать лень например.
  • 0
    Долго вглядывался в карту, пока понял, что север на ней — снизу.
    • +1
      А не справа разве?
      • 0
        Если точнее, то север здесь — снизу справа. Так как Питер от Москвы на северо-западе, а на той карте — точно справа.
  • +1
    Почему-то, увидев кота, я вначале подумал, что это «та же кошка, только без проводов» ;)
  • +1
    Очень круто написано, спасибо!

    Пишите еще. :)
  • 0
    А есть ли какой-нибудь софт который как же как и traceroute позволяет отследить путь пакета через какие AS он передался?
    • +2
      Вы не поверите:
      # traceroute -A 8.8.8.8
      traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
      1 31.28.26.100 (31.28.26.100) [AS29076] 0.162 ms 0.161 ms 0.185 ms
      2 ae6-55-rt1.msk.cloud-ix.net (217.65.1.37) [AS29076] 10.447 ms 10.453 ms 10.457 ms
      3 google-gw.msk.cloud-ix.net (89.188.100.46) [AS29076] 10.512 ms 10.512 ms 10.518 ms
      4 209.85.250.224 (209.85.250.224) [AS15169] 25.637 ms 209.85.250.222 (209.85.250.222) [AS15169] 25.573 ms 209.85.250.224 (209.85.250.224) [AS15169] 25.662 ms
      5 209.85.249.173 (209.85.249.173) [AS15169] 25.527 ms 25.540 ms 25.549 ms
      6 72.14.233.172 (72.14.233.172) [AS15169] 25.404 ms 72.14.233.168 (72.14.233.168) [AS15169] 25.399 ms 72.14.233.172 (72.14.233.172) [AS15169] 25.407 ms
      7 * * *
      8 google-public-dns-a.google.com (8.8.8.8) [AS15169] 25.426 ms 25.439 ms 25.427 ms
      • 0
        Спасибо, не знал об этом ключе.
        Только ключ не кросс-платформенный.

        C:\Users\kyberorg>tracert -A 8.8.8.8
        -A не является допустимым параметром команды.

        Использование: tracert [-d] [-h максЧисло] [-j списокУзлов] [-w таймаут]
        [-R] [-S адресИсточника] [-4] [-6] конечноеИмя

        Параметры:
        -d Без разрешения в имена узлов.
        -h максЧисло Максимальное число прыжков при поиске узла.
        -j списокУзлов Свободный выбор маршрута по списку узлов (только IPv4).
        -w таймаут Таймаут каждого ответа в миллисекундах.
        -R Трассировка пути (только IPv6).
        -S адресИсточника Используемый адрес источника (только IPv6).
        -4 Принудительное использование IPv4.
        -6 Принудительное использование IPv6.
        • 0
          Ещё один повод задуматься об удобствах в этой, хм, ос.
          • 0
            По поводу «удобств» согласен. Но иногда вынуждают юзать эту ос.

            Поэтому вопрос пока остается открытым. Что можно использовать кроме варианта: поставить на ВМ Linux и запустить там человеческий traceroute.
            • +1
              Поставить cygwin и запустить там человеческий traceroute.
  • +1
    За сноску [4] в статье — отдельное спасибо. «Это же блин, поэзия!» Прочитал на одном дыхании статью по ссылке, и всем советую — весьма ладный литературный слог, и тема.
    Возможно, [для всех кто в ТК-бизнесе] это уже скучная хрестоматия за 2010-год и боян. Но мне, кодеру, довелось узнать про ту интригу впервые, читалось как художественное произведение.
    • 0
      www.kipchatov.ru/blog/?p=295 — еще более давнишняя, но веселая, как раз и объяснит (если прочитать все), что Интернет делится на американский и на остальной
  • +1
    Ничего, что я бы не знал, но прочитал с удовольствием.

    Однако, как говорили выше, что считать Интернетом — философский вопрос. «интернет» (с маленькой буквы) — это сеть сетей. А «Интернет» — это уже нечто иное, на более высоком уровне абстракции.

    Мой веб-сервер, подключенный к Интернету через публичный адрес не является частью Интернета?
  • 0
    А какое оборудование используется на границах AS обычно и какая среда передачи (ведь там объем трафика огромен)?
    • 0
      Между AS там чаще всего коммутаторы (10G), если же стык прямой, то соответствующие маршрутизаторы (MX'ы джунипера, 6-тонники от циски, например). Т.к. аплинков много, то преимущественно там либо 1G, либо 10G, либо бонд из нескольких 10G. 40G и выше — острая экзотика из-за стоимости порта.

      Что у себя tier1 в самых нагруженных местах использует, или гугль на стыках ютуба — не знаю.
      • 0
        AS тоже разными по размерам бывают. Так что тут полная свобода творчества. То, что вы написали, это скорее про IX'ы.
        Так же, широко используется WDM.

        А Гугл не пытается сделать самые толстые в мире каналы, а вместо этого используют территориально распределенные CDN.
      • 0
        А среда передачи — мультимодальная оптика или что-то другое?
        • 0
          Зависит от контекста подключения. В нормальных стыках (т.е. внутри помещений) обычно просто оптика, по штуке на порт.
  • +1
    они берут трафик и доносят сквозь стужу, тракторы и медведей.

    Весь прошитый трафиком, абсолютно весь
    O_o-медведь в Сибири есть.


    Надо ещё сказать, чаще всего магистралы деньги берут за полосу, по 95% персентилю, и по тому, какого было больше — исходящего или входящего.

    И платят только за одно направление? Получается что закачка фильма из дома на условный ютуб — скорее всего бесплатна всем?

    Какой простор для оптимизаций. Сразу хочется регулировать симметрию трафика по аплинкам, чтобы одним направлением «подпирать» другое. На это и расчёт?
    • 0
      Насколько я знаю, платят за 95% персентиль. Не важно в каком направлении. Бывают специальные условия (коммерческий рынок — как договорятся, так и будет), но чаще всего именно так.

      Что такое 95% персентиль? Условно говоря, полоска, разделяющая 95% и 5% трафика на графике. Входящего и исходящего трафика. То есть 5% бёрста им прощают, а вот оставшееся, даже если это было 94% 1 мегабит и 6% 1 гигабит, будут оплачены как 1Гбит/с.

      Оптимизация — да, разумеется. Но чаще всего симметрии нет. У adsl-операторов входящего больше исходящего практически всегда, у хостеров исходящего всегда больше, у домашних сетей — не знаю, но слышал жалобы, что исходящего больше, чем входящего (потому что рейты на торрентах качают).
  • 0
    Спасибо за статью!

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.