IP-маршрутизация на основе таблиц.
Обычный алгоритм IP-маршрутизации работает с таблицей маршрутизации Интернета (иногда называемой таблицей IP-маршрутизации), имеющейся на каждой машине и хранящей информацию о возможных назначениях и том, как их достичь. Так как и ГВМ, и шлюзы маршрутизируют дейтаграммы, все они имеют таблицы IP-маршрутизации. Всякий раз, когда программному обеспечению IP-маршрутизации на ГВМ или шлюзе надо передать дейтаграмму, оно обращается к таблице маршрутизации, чтобы решить, куда послать дейтаграмму.
Какую информацию следует держать в таблицах маршрутизации ? Если бы каждая таблица маршрутизации содержала информацию о всех возможных адресах назначения, было бы невозможно поддерживать корректное состояние таблицы. Более того, так как число возможных назначений велико, машинам не хватало бы памяти для хранения всей этой информации.
Концептуально, нам хотелось бы использовать принцип отсутствия информации и предоставить машинам возможность принимать решение о маршрутизации при минимальной информации. Например, нам было бы желательно не хранить информацию о конкретных ГВМ в локальной сети, в которой они расположены, а поместить в таблицу информацию об удаленных машинах, для которых нужно маршрутизировать пакеты. К счастью схема адресации IP помогает достичь такой цели. Напомним, что IP-адреса назначаются так, что у всех машин, присоединенных к конкретной физической сети, имеется одинаковое начало(номер сети). Мы уже видели, что такое назначение делает эффективной проверку на прямую доставку. Оно также означает, что таблицам маршрутизации нужно содержать только сетевые префиксы, а не полные IP-адреса.
Использование номера сети в адресе назначения вместо полного адреса ГВМ делает маршрутизацию эффективно, а таблицы маршрутизации маленькими. Более того, оно помогает скрыть информацию о конкретных ГВМ в локальной среде, к которой эти ГВМ присоединены. Обычно таблица содержит пары (N,G), где N - это IP-адрес сети назначения, а G - IP-адрес следующего шлюза на пути к сети N. Поэтому, таблица маршрутизации в шлюзе G определяет только один шаг на пути от G к сети назначения - шлюз не знает полный путь к назначению.
Важно понимать, что таблица маршрутизации всегда указывает на шлюзы, которые находятся на расстоянии одной физической сети. То есть, все шлюзы, приведенные в таблице маршрутизации машины М, должны находиться в сетях, к которым М присоединена напрямую. На практике, мы по возможности придерживаемся принципа скрытия информации от ГВМ. Мы настаиваем, что хотя ГВМ имеют таблицы IP-маршрутизации, они должны хранить минимум информации в своих таблицах. Идея заключается в том, чтобы заставить ГВМ полагаться на шлюзы для большей части маршрутизации.
Рисунок 8.2 показывает конкретный пример, который помогает понять таблицы маршрутизации. Интернет в этом примере состоит из четырех сетей, соединенных тремя шлюзами. На рисунке показана таблица маршрутизации, используемая шлюзом G. Так как G присоединен напрямую к сетям 20.0.0.0 и 30.0.0.0, он может достичь любой ГВМ в этих сетях напрямую(возможно используя ARP для нахождения физического адреса). Получив дейтаграмму, предназначенную ГВМ в сети 40.0.0.0, G маршрутизирует ее в адрес 30.0.0.7, адрес шлюза H. H затем доставит дейтаграмму напрямую. G может достичь адреса 30.0.0.7, так как и G, и H присоединены к сети 30.0.0.0.
20.0.0.5 30.0.0.6 40.0.0.7 | | | ---------- V---------- V---------- V---------- | Сеть | --- | Сеть | --- | Сеть | --- | Сеть | |10.0.0.0|-|F|-|20.0.0.0|-|G|-|30.0.0.0|-|H|-|40.0.0.0| | | --- | | --- | | --- | | ----------^ ----------^ ----------^ ---------- | | | 10.0.0.5 20.0.0.6 30.0.0.7 (а) Чтобы достичь Маршрутизировать ГВМ в сети к адресу 20.0.0.0 прямая доставка 30.0.0.0 прямая доставка 10.0.0.0 20.0.0.5 40.0.0.0 30.0.0.7 (б)
Рисунок 8.2 (а) Демонстрационный интернет с 4 сетями и 3 шлюзами, и (б) таблица маршрутизации для шлюза G
Как показывает рисунок 8.2, размер таблицы маршрутизации зависит от числа сетей в интернете; он увеличивается только при добавлении новых сетей. Тем не менее, размер таблицы и ее содержимое не зависят от числа отдельных ГВМ, присоединенных к сетям. Мы можем сформулировать следующий принцип:
Чтобы работать при минимальной информации, чтобы сделать таблицы маршрутизации маленькими и чтобы эффективно принимать решения о маршрутизации, программное обеспечение IP-маршрутизации хранит информацию только об адресах сетей назначений, а не о конкретных адресах ГВМ.
Выбор маршрутов на основе идентификатора сети назначения имеет несколько следствий. Во-первых, в большинстве реализаций это значит, что весь траффик к конкретной сети будет использовать один и тот же путь. В результате, даже если существует несколько путей, они не смогут использоваться параллельно. Также все типы траффика будут проходить по одному и тому же пути, независимо от задержки при передаче и пропускной способности физических сетей. Во-вторых, так как только последний шлюз на пути пытается взаимодействовать с ГВМ назначения, только он сможет определить, работает ли ГВМ. Поэтому, нам нужно определить способ, с помощью которого этот шлюз мог бы послать сообщение источнику о проблемах при доставке. В-третьих, так как каждый шлюз маршрутизирует траффик независимо от других, дейтаграммы, следующие от ГВМ А к ГВМ В, могут использовать путь, отличный от того, который проходят дейтаграммы от ГВМ В к ГВМ А. Нам нужно быть уверенными в том, что шлюзы взаимодействуют, для того чтобы гарантировать и прямое, и обратное взаимодействие.