Архивы: по дате | по разделам | по авторам

Скромные труженики сетей

Архив
автор : Георгий Башилов   29.09.1997

"Разделяй и властвуй", - было сказано в применении к управлению своими многочисленными вассалами, или поданными. Самое интересное, что практически без изменений указанный принцип применим и сейчас, в том числе - к сетевому строительству. Обусловлено это тем, что все существующие сетевые технологии применяют для передачи данных среду с ограниченной пропускной способностью. Есть физические ограничения и на размеры сети - так, например, особенности реализации Ethernet не позволяют использовать сегменты с длиной, превышающей длину, и, соответственно, время прохождения (длительность) самого короткого пакета данных, - в этом случае возможна ситуация, когда по одному и тому же сегменту будут одновременно "гулять" несколько пакетов данных; что из этого получится, я думаю, понятно. Вдобавок, зачастую возникают причины, побуждающие ограничить распространение внутреннего трафика за некие, заранее оговоренные пределы.

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

Задача объединения сетей, кстати, возникла еще на заре компьютерной эры. С тех пор прошло достаточно времени, чтобы технологии "утряслись" и из всего множества конкурирующих протоколов межсетевого взаимодействия лидерство занял TCP/IP, используемый для передачи данных двумя другими лауреатами - Интернетом и интранетом.

Победное шествие указанного протокола началось еще в 1983 году, когда поддержка стека протоколов TCP/IP вошла в состав одной из версий Unix и с тех пор стала бесплатной для всех его пользователей. Unix'ом дело не ограничилось, и сейчас стеки TCP/IP входят в состав практически всех операционных систем, будь то Windows 95, NT, OS/2 или IntranetWare.

Согласно протоколу, каждому из устройств, подключенных к сети, присваивается уникальный IP-адрес. Основные принципы адресации можно посмотреть во врезке, мы же повторим их вкратце: Интернет имеет адресное пространство, которое разбивается на подсети. Каждая из подсетей имеет уникальный адрес, или точку входа. Допускается дальнейшее разбиение получившихся сетей на подсети, и так - до тех пор, пока это оправдано какими-либо потребностями, вплоть до подсети с маской 255.255.255.252 на четыре адреса, один из которых будет адресом самой подсети, один будет задействован для широкополосной рассылки пакетов (broadcasting) и два адреса будут свободны для использования. Причем, маршрутизатору вовсе не обязательно знать о структуре подсети - ему достаточно знать только адреса и маски точек входа, а дальнейшую маршрутизацию пакетов он оставляет на совесть маршрутизаторов соответствующих подсетей.

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

В этом легко убедиться, поэкспериментировав на досуге с командами route (таблицы маршрутизации и их модификация), arp (установка соответствия между IP-адресами и адресами сетевых адаптеров) и netstat (диагностика состояния сети), если у вас установлен Интернет, а его, как известно, без поддержки TCP/IP не бывает, все они будут выполняться на вашем компьютере, начиная с Windows 95 и выше.

В чем-то похожи на маршрутизаторы привычные всем телефонные коммутаторы: точно так же, для того чтобы установить соединение с абонентом, нужно набрать его телефонный номер (сетевой адрес). Руководствуясь вашими инструкциями (телефонный номер, может быть, код города и страны), АТС построят только им известный путь и установят соединение. Разница в том, что телефонный коммутатор переключает каналы, а маршрутизатор определяет пути движения пакетов с данными и направляет их по выбранным направлениям.

Наряду с определением маршрута и передачей данных, маршрутизаторам приходится решать и другие задачи - это и фильтрация IP-пакетов, и определение их приоритетов, и - даже - подстановка "на лету" IP-адресов, или Network Address Translation (NAT), называемая еще IP-masquerading.

Для того чтобы понять, зачем нужно подставлять IP-адреса, приведем достаточно простой пример работы вырожденного, под ДОС, маршрутизатора под названием IPRoute. В связке с еще одним приложением, ISPA, он способен выполнять довольно любопытную задачу - представьте, вы подключены к Интернет и, как это водится, IP-адрес получаете динамически. Так вот, ISPA транслирует этот динамический адрес в статический, а IPRoute осуществляет на него маршрутизацию из вашей локальной сети. В результате, через одно коммутируемое телефонное или ISDN-соединение можно подключить к Интернет несколько пользователей (см. например http://carol.fwi.uva.nl/~leeuw/isdn/ipr_ispa.html).

Среди других особенностей IPRoute - низкие требования к аппаратным ресурсам, приложение способно работать даже на 286-м компьютере, причем, как утверждают разработчики, наличие жесткого диска вовсе не обязательно - грузиться можно и с дискеты.

Ясно, что это не единственное применение схем подстановки адресов, - NAT позволяет строить внутренние интранет-сети, с собственными, не требующими согласования схемами адресации, используя подсети 10/8, 172.16/12, 192.168/16 (через дробь указан префикс подсети), которые специально выделены в Интернет, и маршрутизация в которые (с некоторыми оговорками) не производится. В какой-то мере это помогает решить проблему нехватки адресов в Интернет, особенно в случае больших организаций и соответственно, интранетов, и, кстати, немного сэкономить на отчислениях за поддержание блока статических адресов.

Для того чтобы представить объем работы по маршрутизации IP-трафика в Интернет, можно обратиться к весьма неполным статистическим данным.

Статистика по ста Американским компаниям
из списка Fortune 100

Пакетов в день
(за год удваивается)
7000000000
Почтовых сообщений1000000
Внутренних Web-серверов1200
Внутренних страниц159600

О заторах в Интернет, я думаю, всем известно. С распространением мультимедиа-информации, Интернет-телефонии и Second Web объемы передаваемой информации и, соответственно, нагрузка на маршрутизаторы только увеличатся. С появлением новых требований меняются и магистрали, и маршрутизаторы, и сами принципы передачи данных в Сети - появляются серверы маршрутизации, определяющие оптимальные маршруты и полученную информацию передающие коммутаторам второго уровня, которые, собственно, и передают информацию.

Впрочем, обо всех новинках не расскажешь. Да и касаются они пока в большей степени магистральных линий передачи. В то время как на последней миле и в локальных сетях маршрутизация вполне под силу универсальным компьютерам под управлением многозадачных операционных систем (или даже ДОС, но тогда маршрутизатор должен быть выделенным). Это подметили производители софта, и сейчас программные маршрутизаторы входят в состав, например, IntranetWare (MultiProtocol Router), Microsoft бесплатно предлагает их для своей Windows NT (RRAS). Не забыты и OS/2, и многочисленные клоны Unix.

О преимуществах программной или аппаратной маршрутизации можно спорить сколь угодно долго - в каждом конкретном случае будет существовать свое, оптимальное для данной конкретной ситуации (и квалификации) решение.

Ей, маршрутизации, посвящена тема этого номера. Отзывы принимаются по адресу gbash@cterra.com

 

IP-адрес является адресом сетевого уровня в стеке протоколов TCP/IP и представляет собой 32-битное число, которое принято записывать десятичными числами через точку, байт за байтом. Например, двоичный адрес 1100 0000 0100 0000 0010 0111 0000 0100 выглядит как 192.64.39.4. В IP-адресацию изначально заложено разбиение адреса на две части: адрес сети и адрес узла в сети, что позволяет распределять задачу определения пути к заданному адресу между маршрутизаторами различных сетей. С увеличением общего числа узлов маршрутизаторы стали использовать в своих алгоритмах понятие подсети, так чтобы все узлы могли распознавать по маске подсети те узлы, к которым они имеют непосредственный доступ, и направлять к маршрутизаторам только те пакеты, которые не могли найти адресата внутри своей подсети. Полностью адрес подсети характеризуется парой значений адрес/длина маски.

Каждой подсети в Интернете выделяется непрерывный блок адресов. Пусть это будет блок непрерывных 32-битных адресов, соответствующий восьми подсетям 192.64.0.0-192.64.7.0, и путь в каждую из них известен некоторому маршрутизатору.

В двоичной записи начальные адреса блоков выглядят так.

Адреса подсетей:

1100 00000100 00000000 00010000 0000 
1100 00000100 00000000 00100000 0000 
1100 00000100 00000000 00110000 0000 
 
1100 00000100 00000000 01100000 0000 
1100 00000100 00000000 01110000 0000 
 816212432
Маска сети:
1111 11111111 11111111 10000000 0000 

Все адреса данного блока имеют общий префикс, состоящий в этом примере из 21 старшего бита. Адресом сети, частью которой являются подсети нашего примера, является 32-битное число, где после общего префикса значения всех младших бит равны нулю. Фактически это первый IP-адрес принадлежащий данному блоку. В общепринятых обозначениях он равен 192.64.0.0.

Маска - это 32-битная строка, где все биты, соответствующие общему префиксу блока, выставлены в единицу. В нашем примере их 21, маска подсетей - в таблице, а в десятичной нотации она будет выглядеть так: 255.255.248.0.

Знать побитовое написание бывает полезно при настройке интерфейса, но информативна в маске только ее длина, то есть общее число ее ненулевых старших разрядов, в примере - 21.

Адресный блок в нашем примере может являться подсетью, адресуемой глобально как 192.64.0.0/21. Предположим, что маршруты ко всем подсетям, включенным в наш адресный блок, целиком находятся в ведении администрации сети 192.64.0.8/21. Тогда магистральному маршрутизатору данной сети одному только и следует держать в своих таблицах продолжения разветвляющихся путей, ведущих от него к отдельным подсетям. Протоколы обмена маршрутами, при помощи которых маршрутизаторы сообщают друг другу об известных им или вновь найденных путях к подсетям, предусматривают возможность скрывать в широковещательных объявлениях маршруты к отдельным подсетям в непрерывном адресном блоке, если известен маршрут к точке входа во все эти подсети, который один только и сохраняется в таблицах.

Такой подход получил название агрегирования маршрутов. Каждая из подсетей, агрегируемых сетью, может быть разбита путем дробления адресных блоков на более мелкие подсети по такому же принципу при условии, что протоколы маршутизации поддерживают переменную длину маски подсети. Наличие такой поддержки характеризуется терминами Variable Length Subnet Mask (VLSM) или Classless Interdomain Routing (CIDR). Из протоколов маршрутизации CIDR поддерживают, в частности, RIP-2, BGP-4 и OSPF.

Помимо этого, от сетевых сервисов более высокого уровня, таких как служба доменных имен, предполагающих строго октетные границы масок, также требуется приспособление к требованиям CIDR.

Изобретатели IP-адресации не предусматривали такой арифметики. Они разбивали IP-адрес на две части - адрес сети и адрес внутри сети - тремя разными способами, подразделяя все сети на три класса в зависимости от значения первого байта IP-адреса. С тех пор блоки с 1.Х.Х.Х/8 по 127.Х.Х.Х/8 принадлежат к классу A; они выделялись сетям с большим числом узлов. Блоки с 128.Х.Х.Х/16 по 191.Х.Х.Х/16 принадлежат классу B и могут содержать 65534 узла. Блоки с 192.Х.Х.Х/24 по 223.Х.Х.Х/24 принадлежат классу C и могут содержать 254 узла. Допустимые границы масок адресных блоков были строго октетными.

На практике оказалось, что многие локальные сети, содержавшие по 7-12 машин, получили в свое распоряжение по 254 адреса, а те, кому нужно было 300-400 адресов, получали сразу по 65534. Сейчас ведется поиск подсетей, когда-то за кем-то закрепленных, но не подающих признаков жизни, с целью утилизации соответствующих адресных блоков.

В ранних RFC по IP-адресам содержалось также предположение, что маршруты в выделяемых адресных блоках под сети класса будут обеспечиваться централизованно администрацией этих сетей. Теперь же актуальным стало динамическое выделение и IP-адресов, и связанных с ними ресурсов, в том числе маршрутизация трафика на всю кратковременно подключившуюся подсеть.

Содержание этой врезки можно не читать, если понятно следующее:

1. На заре Интернета подсети не входили в концепцию IP-адресов, но сразу же стали использоваться для IP-маршрутизации.

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

2. Сети 192.64.128.0/21 и 192.64.192.0/21 не могут быть подсетью, скажем, сети 135.147.0.0/16. И администратора сети 192.64.128.0/17, чьими подсетями являются две первые сети, не особенно обрадует выделение в его распоряжение адресного блока 135.147.8.0/21, который мог освободиться от использования в сети, - так как это не позволит агрегировать маршруты и увеличит размеры таблиц в магистральных маршрутизаторах его сети.

Вениамин Баскаков

© ООО "Компьютерра-Онлайн", 1997-2022
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.