Подсети для повышения производительности

Опубликовано: 25 Марта, 2023


Что такое подсеть?


Подсети — это, по сути, просто способ разделения сети TCP/IP на более мелкие и более управляемые части. Основная идея заключается в том, что если через вашу сеть проходит чрезмерный объем трафика, то этот трафик может замедлить работу вашей сети. Когда вы делите свою сеть на подсети, вы разделяете сеть на отдельную, но взаимосвязанную сеть. Таким образом, большая часть сетевого трафика будет изолирована от подсети, в которой он возник. Конечно, вы по-прежнему можете обмениваться данными через подсеть, но единственный раз, когда трафик будет пересекать границы подсети, — это когда он специально предназначен для хоста, находящегося в альтернативной подсети.


Подсети все еще актуальны?


Основная цель создания подсетей — уменьшить перегрузку сети. Раньше перегрузка была более серьезной проблемой, чем сегодня, потому что в сетях чаще использовались концентраторы, а не коммутаторы. Когда узлы в сети соединены через концентратор, вся сеть действует как единый домен коллизий. Это означает, что если один компьютер отправляет пакет другому компьютеру, каждый компьютер во всей сети увидит этот пакет. Каждая машина просматривает заголовок пакета, но игнорирует пакет, если он не является предполагаемым получателем.


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


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


Ответ заключается в том, что на самом деле все зависит от того, как устроена сеть и как она работает. Имейте в виду, что коммутатор повышает производительность только тогда, когда пакет предназначен для определенного ПК. Широковещательный трафик по-прежнему отправляется на каждую машину в сети. Если вы работаете в коммутируемой сети, то вам поможет разбиение на подсети, если у вас много широковещательных сетей. Разделение на подсети также важно, если у вас есть филиалы, соединенные медленным каналом глобальной сети.


Планирование размещения подсетей


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


Первоначально структура вашей подсети должна имитировать географическую структуру вашей сети. Любые объекты, разделенные каналами WAN, также должны находиться в отдельных подсетях. Хотя это не является абсолютным требованием. У вас может быть одна большая подсеть, охватывающая несколько учреждений, но в большинстве случаев ваша сеть будет работать лучше, если каждое учреждение будет использовать свою собственную подсеть.


Еще одним соображением может быть концентрация пользователей в отделе. Например, я работал в офисе, в котором тысячи пользователей работали в одном здании. Долгое время не было внешних сооружений. В такой среде вы можете реализовать подсети, но расположение этих подсетей может быть не столь очевидным. Я видел, как некоторые компании делят подсети по отделам, но это, как правило, плохая идея, потому что нередко отдел перемещается в другую часть здания. Что еще хуже, отдел может переместить одних сотрудников, но не других. Лучшее решение — положиться на то, что не изменится. Например, вы можете разделить сеть по этажам (первый этаж, второй этаж и т. д.) или по областям (восточное крыло, западное крыло и т. д.).


Надеюсь, вы начинаете составлять план для своей организации, но есть еще одно соображение, которое вам необходимо учесть. Вам нужно остановиться и подумать о размещении оборудования. Все подсети должны быть связаны друг с другом через маршрутизатор (вероятно, вы не захотите использовать тот же маршрутизатор, который соединяет вашу организацию с внешним миром). Поэтому вам нужно будет выяснить, какой размер маршрутизатора вам понадобится, сколько будет стоить этот маршрутизатор, где он будет размещен и где маршрутизатор будет подключаться к каждой подсети.


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


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


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


Еще один способ сократить трафик между подсетями — предоставить каждой подсети собственный контроллер домена. Если вы решите сделать это, обязательно определите сайты через Active Directory. Таким образом, пользователи будут вынуждены проходить аутентификацию через контроллер домена в своей собственной подсети/сайте (если этот контроллер домена недоступен, и в этом случае будет использоваться альтернативный контроллер домена).


Определение подсетей


До сих пор я много говорил о способах использования подсетей, но на самом деле я не говорил о том, что такое подсети или как они создаются. Подсети — это просто метод разбиения большого блока IP-адресов на более мелкие блоки, которые можно использовать для определения отдельных сетей. Например, предположим, что вам удалось получить блок IP-адресов класса B. Представьте, что вы получили блок адресов 146.100.xx. Если бы вы владели этим конкретным блоком адресов, ваша маска подсети по умолчанию была бы 255.255.0.0. Эта маска подсети сообщает TCP/IP, что первые две цифры IP-адреса (146.100) являются номером сети, а последние две цифры — идентификационным номером хоста. Поскольку последние два числа в IP-адресе могут использоваться для идентификации отдельных хостов в сети, ваш диапазон IP-адресов позволит вашей сети содержать до 65 534 хостов!


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


Самый простой способ сделать это — изменить маску подсети с 255.255.0.0 на 255.255.255.0. Это сообщит TCP/IP, что первые три цифры в IP-адресе обозначают сетевую часть адреса, и только последняя цифра используется в качестве адреса хоста. Затем вы должны выбрать номер для третьей цифры первого набора IP-адресов. Вы, вероятно, хотели бы начать с 0, если бы это была реальная жизненная ситуация. Следовательно, номер вашей сети будет 146.100.0, а ваши хосты в этой сети будут использовать IP-адреса в диапазоне от 146.100.0.0 до 146.100.0.245. Когда у вас закончатся адреса в этом блоке IP-адресов, просто увеличьте третью цифру IP-адреса на 1, чтобы определить новый сегмент сети. Затем вы можете создавать хосты с IP-адресами в диапазоне от 146.100.1.0 до 146.100.1.254.


Разделение адресов класса C на подсети


Техника, которую я только что показал вам, отлично работает, если вы хотите равномерно разделить блок адресов класса A или класса B. Однако иногда вам может понадобиться разделить блок адресов класса C или разделить адрес класса A или класса B таким образом, чтобы получить больше или меньше адресов, чем если бы вы использовали описанную выше технику.


В приведенном выше примере числа в маске подсети были либо 255, либо нулевыми. Эти числа фактически получены из восьмибитных двоичных значений. В двоичной математике 00000000=0 и 11111111=255. Когда мы меняли одно из чисел в маске подсети с 0 на 255, мы заимствовали восемь бит из адресного пространства. Хитрость при создании других типов подсетей заключается в том, чтобы понять, что вам не нужно работать с шагом в восемь бит.


Предположим, например, что вы владеете блоком адресов класса C 192.168.42.x, и вам нужно разделить его на пять подсетей по 25 адресов в каждой. Поскольку это адрес класса C, часть идентификатора хоста в IP-адресе занимает 8 бит. Если вы хотите разделить этот адресный блок на подсети, вам придется позаимствовать некоторые биты, которые используются для идентификатора хоста, и использовать их для идентификатора сети.


Чтобы определить, сколько бит вам придется использовать для подсети, используйте формулу 2 X -2, где X — количество битов, которые вы используете. Например, если бы вы использовали 3 бита, вы могли бы создать шесть подсетей (2 3 -2=6). Если вы используете три бита для подсети, то у вас остается пять битов для идентификатора хоста. Если вы примените формулу 2 X -2 к количеству битов, оставшихся для идентификатора хоста, вы обнаружите, что каждая подсеть может содержать до 30 хостов (2 5 -2 = 30).


Как вы помните ранее, когда мы разбивали адрес класса B на подсети, нам приходилось увеличивать последнюю часть идентификатора сети для каждой подсети. Мы должны сделать то же самое здесь, но сделать это немного сложнее. Как вы помните, первые три цифры в каждом IP-адресе — 192.168.40. Эти цифры останутся постоянными. Нам нужно беспокоиться только о последнем числе. Мы разделили последнее число на три бита для идентификатора сети и пять битов для идентификатора хоста. Теперь мы должны установить часть идентификатора сети в 1. В двоичной форме это выглядит так:



001 00000


1 будет увеличиваться для каждой отдельной подсети. Всего подсетей шесть, и выглядеть они будут так:



001 00000
010 00000
011 00000
100 00000
101 00000
110 00000
111 00000


Теперь вы должны определить IP-адреса, которые будут попадать в каждую подсеть. Хитрость заключается в том, чтобы понять, что последние пять бит используются для идентификатора хоста. Они варьируются от 00000 до 11111. Чтобы определить IP-адреса в каждой подсети, объедините идентификатор сети с идентификатором хоста, а затем преобразуйте его в десятичную запись. Например, для подсети 001 диапазон битов составляет от 001 00000 до 001 11111. Когда вы объединяете эти числа, они появляются как 00100000 и 00111111. Преобразуйте эти числа в десятичные числа, и они станут 33 и 62. Это означает, что диапазон IP-адресов для первая подсеть — от 192.168.40.33 до 192.168.40.62. Вы можете повторить процесс для других подсетей, чтобы рассчитать для них диапазоны IP-адресов.


Последним шагом в этом процессе является вычисление маски подсети. Старый 255.255.255.0 больше не будет работать, потому что мы позаимствовали три бита из идентификатора хоста. Самый простой способ получить маску подсети — выразить последнее число в двоичной системе счисления, где три заимствованных бита выражаются единицами, а биты, используемые для идентификатора хоста, выражаются нулями. Это выглядит так: 11100000. Преобразуйте это значение в десятичную запись и получите значение 224. Как вы помните, исходная маска подсети была 255.255.255.0. Чтобы создать новую маску подсети, мы просто заменяем 0 новым значением (224). Наша маска подсети становится 255.255.255.224.


Вывод


Как видите, разделение сети на несколько подсетей может быть немного сложным. Однако, если ваша сеть страдает от чрезмерного трафика, то решение, которое вы ищете, может быть подсетью.