Протокол IP : Протокол OSPF

OSPF, MTU и LSA, упаковывающий Технические примечания

5 апреля 2016 - Машинный перевод
Другие версии: PDF-версия:pdf | Английский (22 августа 2015) | Отзыв

Введение

Этот документ описывает взаимодействие пакетов Протокола OSPF, максимального модуля перехода (MTU), Объявления о состоянии канала (LSA) и Обновленные пакеты Состояния канала (LS) в контексте идентификатора ошибки Cisco CSCse01519.

Внесенный Люком Де Гееном, специалистом службы технической поддержки Cisco.

Размер пакета OSPF

Ссылки на маршрутизаторах имеют MTU. Исходящие пакеты, такие как пакеты OSPF, не могут быть больше, чем максимальный размер блока данных (MTU) интерфейса.

Запрос на комментарий (RFC) 2328 версий 2 документов протокола OSPF. Приложение А. 1 из RFC 2328 описывает Инкапсуляцию пакетов OSPF этим способом:

OSPF выполняется непосредственно по сетевому уровню Протокола Интернета. Пакеты OSPF поэтому инкапсулируются исключительно заголовками локального канала передачи данных и IP.

OSPF не определяет способ фрагментировать его пакеты протокола и зависит от Фрагментации ip когда передаваемые пакеты, больше, чем сеть MTU. Если необходимо, длина пакетов OSPF может составить до 65,535 байтов (включая IP - заголовок). Типы пакета OSPF, которые, вероятно, будут большими (Пакеты описания базы данных, Запрос состояния канала, Обновление Состояния канала и Пакеты подтверждения Состояния канала) могут обычно разделяться на несколько пакетов отдельного протокола без потери функций. Это рекомендуется; Фрагментации ip нужно избежать, когда это возможно.

В Пакете обновления LS могут быть один или несколько LSA. Много LSA в одном Пакете обновления LS известны как упаковка LSA в Пакет обновления LS.

MTU в пакете dbd

Описание базы данных (DBD) пакет, также заданный в RFC 2328, описывает содержание базы данных состояний каналов OSPF:

       0                  1                  2                  3

  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Version #  |      2      |        Packet length        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         Router ID                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                          Area ID                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Checksum           |            AuType           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      Authentication                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      Authentication                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        Interface MTU        |   Options   |0|0|0|0|0|I|M|MS
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    DD sequence number                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                              |
   +-                                                            -+
   |                                                              |
   +-                     An LSA Header                         -+
   |                                                              |
  +-                                                            -+
   |                                                              |
   +-                                                            -+
   |                                                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                             ...                             |

Приложение А. 3.3. из RFC 2328 описывает максимальный размер блока данных (MTU) интерфейса как:

Размер в байтах самой большой дейтаграммы IP, которая может быть отослана cвязанный интерфейс без фрагментации.

Маршрутизаторы, которые присоединены к обмену ссылками их значение максимального размера блока данных (MTU) интерфейса в Пакетах dbd, когда инициализируется соседство OSPF.

Разделите 10.6 из состояний RFC 2328:

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

Когда команда debug ip ospf adj используется, вы видите прибытие этих Пакетов dbd.

В данном примере существует несоответствие в значениях MTU между двумя окружениями OSPF. Этот маршрутизатор имеет MTU 1600:

OSPF: Rcv DBD from 10.100.1.2 on GigabitEthernet0/1 seq 0x2124 opt 0x52 flag 0x2 
len 1452 mtu 2000 state EXSTART
OSPF: Nbr 10.100.1.2 has larger interface MTU

Другой маршрутизатор OSPF имеет максимальный размер блока данных (MTU) интерфейса 2000:

OSPF: Rcv DBD from 10.100.100.1 on GigabitEthernet0/1 seq 0x89E opt 0x52 flag 0x7 
len 32 mtu 1600 state EXCHANGE
OSPF: Nbr 10.100.100.1 has smaller interface MTU

Пакеты dbd ретранслируются постоянно, пока соседство OSPF в конечном счете не разъединено.

OSPF: Send DBD to 10.100.1.2 on GigabitEthernet0/1 seq 0x9E6 opt 0x52 flag 0x7 
len 32
OSPF: Retransmitting DBD to 10.100.1.2 on GigabitEthernet0/1 [10]
OSPF: Send DBD to 10.100.1.2 on GigabitEthernet0/1 seq 0x9E6 opt 0x52 flag 0x7
len 32
OSPF: Retransmitting DBD to 10.100.1.2 on GigabitEthernet0/1 [11]
%OSPF-5-ADJCHG: Process 1, Nbr 10.100.1.2 on GigabitEthernet0/1 from EXSTART to
DOWN, Neighbor Down: Too many retransmissions

Поведение OSPF и LSA упаковки в пакет обновления LS

Перед идентификатором ошибки Cisco CSCse01519

Перед идентификатором ошибки Cisco CSCse01519 OSPF в программном обеспечении Cisco IOS создал пакеты OSPF никакие большие than1500 байты, независимо от максимального размера блока данных (MTU) интерфейса. Так, если максимальный размер блока данных (MTU) интерфейса был больше, чем 1500 байтов, OSPF все еще упаковал только до 1500 байтов в пакет OSPF. Это было несколько неэффективно, потому что OSPF мог передать большие пакеты на ссылке и достигнуть большей пропускной способности.

Примечание: Было одно исключение к этому сценарию. Если один LSA держал больше чем 1500 байтов, OSPF создал тот пакет, независимо от того размер, потому что OSPF не может фрагментировать один LSA. Стек IP маршрутизатора тогда фрагментировал пакет для адаптации MTU исходящего интерфейса. Это, как правило, происходило, когда маршрутизатор OSPF имел много ссылок, и LSA маршрутизатора (локальный администратор безопасности) стал больше, чем MTU ссылки.

Точно так же, если MTU исходящего интерфейса был меньшим, чем 1500 байтов, процесс OSPF все еще созданные или упакованные пакеты OSPF выше на 1500 байтов, и стек IP маршрутизатора фрагментировал пакет в меньшие пакеты IP для адаптации MTU исходящего канала. Это, как правило, происходило с Туннелем IPSec между двумя маршрутизаторами, которые выполняли OSPF. Добавленные издержки байтов инкапсуляции туннеля привели к MTU, который был меньшим, чем 1500 байтов. OSPF создал пакеты OSPF, до 1500 байтов и пакеты были тогда фрагментированы, прежде чем маршрутизатор передал их. Это было дополнительной неэффективностью.

После идентификатора ошибки Cisco CSCse01519

После идентификатора ошибки Cisco CSCse01519 OSPF в IOS может упаковать пакеты OSPF, чтобы быть больше, чем 1500 байтов. Если MTU исходящего интерфейса больше, чем 1500 байтов, это происходит. Передачи более эффективны, потому что дополнительные сведения могут быть упакованы в один больший пакет. Другими словами, если один маршрутизатор OSPF должен передать много внешних LSA к окружению OSPF, он может упаковать больше внешних LSA в один Пакет обновления LS, если тот маршрутизатор выполняет IOS с идентификатором ошибки Cisco внедренный CSCse01519.

Идентификатор ошибки Cisco CSCse01519 также позволяет OSPF создавать пакеты, меньшие, чем 1500 байтов. В некоторых сценариях MTU между двумя окружениями OSPF меньше, чем 1500 байтов. В предыдущем примере с Туннелем IPSec OSPF передает пакеты OSPF, которые меньше, чем 1500 байтов, и избегает Фрагментации ip; снова, исключение имеет место LSA, который больше, чем максимальный размер блока данных (MTU) интерфейса.

Идентификатор ошибки Cisco CSCse01519

При обновлении маршрутизатора OSPF можно обнаружить проблему MTU OSPF, вызванную идентификатором ошибки Cisco CSCse01519.

Обзор

Много сетей имеют окружения OSPF, которые связаны через Уровень 2 (L2), коммутируемая сеть или транспортная сеть, включила сервис VPN L2 или сеть Synchronous Digital Hierarchy/Synchronous Optical Network (SDH/SONET). Эти транспортные сети могут иметь другие Параметры MTU, чем маршрутизаторы, которые выполняют OSPF.

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

Это - пример сети с двумя маршрутизаторами, которые выполняют OSPF. Маршрутизатор 1 (R1) и маршрутизатор 2 (R2) связаны через коммутатор L2.

116119-technote-ospf-mtu-01.jpg

В данном примере маршрутизаторы имеют интерфейсы GigabitEthernet с набором MTU к 2000. MTU коммутатора L2 составляет только 1500 байтов.

Если размер трафика данных никогда не больше, чем 1500 байтов, можно использовать IOS без идентификатора ошибки Cisco CSCse01519, потому что пакеты OSPF никогда не больше, чем 1500 байтов. Однако, если существует LSA, который составляет 1800 байтов, например, процесс OSPF на R1 или R2 создает Пакет обновления LS, больше, чем 1500 байтов, и передает его, но пакет отброшен коммутатором L2 между маршрутизаторами.

Если база данных OSPF на R2 имеет достаточно сетей, локально инициируемые LSA являются столь большими, что Пакет обновления LS мог бы быть больше, чем максимальный размер блока данных (MTU) интерфейса.

  • Если эти сети инициируются закрывающей сетевой командой, сети появляются в LSA маршрутизатора (локальный администратор безопасности) R2. R2 создает LSA маршрутизатора (локальный администратор безопасности), который больше, чем 2000 байтов и передает его, но IP - фрагменты он к 2000 байтов, максимальный размер блока данных (MTU) интерфейса. Коммутатор L2, однако, отбрасывает эти пакеты. OSPF тогда повторно передает этот пакет бесконечно, и состояние соседства OSPF никогда не полно. Так, проблема сразу обнаружена, даже когда вы выполняете IOS без идентификатора ошибки Cisco CSCse01519.
  • Если эти сети инициируются перераспределением связанной команды, сети появляются во внешних LSA. OSPF пытается упаковать внешние LSA в один Пакет обновления LS, который составляет до 1500 байтов в размере. В этом случае, потому что максимальный размер блока данных (MTU) интерфейса составляет 2000 байтов, соседство OSPF достигает 'FULL' состояния. Проблема несоответствующего базового MTU сразу не обнаружена. Когда один маршрутизатор будет обновлен к IOS с идентификатором ошибки Cisco CSCse01519, проблема будет обнаружена.

Сценарий

Предположите, что оба маршрутизатора выполняют версию IOS без идентификатора ошибки Cisco CSCse01519.

Когда смежность OSFP создает, заметьте, что R1 никогда не получает пакет OSPF, больше, чем 1500 байтов, невзирая на то, что MTU интерфейсов является 2000.

Выполните команду debug ip ospf packet.

OSPF: rcv. v:2 t:1 l:48 rid:10.100.1.2
     aid:0.0.0.0 chk:72CF aut:0 auk: from GigabitEthernet0/1
...
OSPF: rcv. v:2 t:4 l:1468 rid:10.100.1.2
     aid:0.0.0.0 chk:8389 aut:0 auk: from GigabitEthernet0/1
OSPF: rcv. v:2 t:4 l:136 rid:10.100.1.2
...

В этих выходных данных отладки 'l:1468' является длиной пакета OSPF, таким образом, вы видите, что самый большой пакет OSPF составлял 1468 байтов. T: 4' указывает, что пакет OSPF является типом 4, который является Пакетом обновленных сведений о состоянии канала. Эта таблица от раздела 4.3 из RFC 2328 определяет другие типы пакета OSPF:

Введите Пакетное названиеФункция протокола
1HelloОбнаружьте/поддержите соседние узлы
2Описание базы данныхСуммируйте содержание базы данных
3Запрос о состоянии каналовЗагрузки базы данных
4Обновление состояния канала связиОбновление базы данных
5Ack состояния каналаЗатопление подтверждения

Соседство OSPF достигает 'FULL' состояния.

R1#show ip ospf neighbor gigabitEthernet 0/1

Neighbor ID   Pri  State        Dead Time  Address      Interface
10.100.1.2      0  FULL/ -     00:00:34   10.1.1.2     GigabitEthernet0/1

R2#show ip ospf neighbor gigabitEthernet 0/1

Neighbor ID   Pri  State        Dead Time  Address      Interface
10.100.100.1    0  FULL/ -     00:00:34   10.1.1.1     GigabitEthernet0/1

Затем, обновите IOS на R2 к версии IOS с идентификатором ошибки Cisco CSCse01519.

R2#show ip ospf neighbor gigabitEthernet 0/1

Neighbor ID   Pri  State        Dead Time  Address      Interface
10.100.100.1    0  LOADING/ -  00:00:33   10.1.1.1     GigabitEthernet0/1

R2#show ip ospf neighbor gigabitEthernet 0/1 detail
Neighbor 10.100.100.1, interface address 10.1.1.1
   In the area 0 via interface GigabitEthernet0/1
   Neighbor priority is 0, State is LOADING, 5 state changes
   DR is 0.0.0.0 BDR is 0.0.0.0
   Options is 0x12 in Hello (E-bit L-bit )
   Options is 0x52 in DBD (E-bit L-bit O-bit)
   LLS Options is 0x1 (LR)
   Dead timer due in 00:00:39
   Neighbor is up for 00:00:49
   Index 1/1, retransmission queue length 0, number of retransmission 0
   First 0x0(0)/0x0(0) Next 0x0(0)/0x0(0)
   Last retransmission scan length is 0, maximum is 0
   Last retransmission scan time is 0 msec, maximum is 0 msec
   Number of retransmissions for last link state request packet 9
   Poll due in 00:00:00

R2#show ip ospf neighbor gigabitEthernet 0/1 detail
Neighbor 10.100.100.1, interface address 10.1.1.1
   In the area 0 via interface GigabitEthernet0/1
   Neighbor priority is 0, State is LOADING, 5 state changes
   DR is 0.0.0.0 BDR is 0.0.0.0
   Options is 0x12 in Hello (E-bit L-bit )
   Options is 0x52 in DBD (E-bit L-bit O-bit)
   LLS Options is 0x1 (LR)
   Dead timer due in 00:00:33
   Neighbor is up for 00:02:06
   Index 1/1, retransmission queue length 0, number of retransmission 0
   First 0x0(0)/0x0(0) Next 0x0(0)/0x0(0)
   Last retransmission scan length is 0, maximum is 0
   Last retransmission scan time is 0 msec, maximum is 0 msec
   Number of retransmissions for last link state request packet 25
   Poll due in 00:00:03

%OSPF-5-ADJCHG: Process 1, Nbr 10.100.100.1 on GigabitEthernet0/1 from LOADING
to DOWN, Neighbor Down: Too many retransmissions

Соседство OSPF застревает в 'ЗАГРУЖАЮЩЕМСЯ' состоянии и не достигает 'FULL' состояния. Повторные передачи происходят, пока OSPF не достигает своего предела 25 повторных передач. OSPF пытается установить смежность снова, та же проблема повторно происходит, и петля продолжается бесконечно.

Таким образом обновление на R2 раскрывает ранее скрытую проблему: базовый MTU меньше, чем тот, используемый маршрутизаторами OSPF.

Когда MTU изменений коммутатора к 2000, пакет OSPF, больше, чем 1500 байтов ('l:1980'), передан без проблемы.

R1#
OSPF: rcv. v:2 t:3 l:1980 rid:10.100.1.2
     aid:0.0.0.0 chk:AC5B aut:0 auk: from GigabitEthernet0/1

Для проверки базовых проблем MTU всегда пропинговывайте IP-адрес окружения OSPF с размером, равным MTU, и DF (не фрагментируйте), установленный бит.

Для обнаружения значения базового MTU выполните эхо-запрос и разверните размер. Считайте количество восклицательных знаков (!) в выходных данных для определения корректного MTU. В данном примере последнее эхо - ответ от команды ping имеет размер 1500 байтов.

R2#ping
Protocol [ip]:
Target IP address: 10.1.1.1
Repeat count [5]: 1
Datagram size [100]:
Timeout in seconds [2]:
Extended commands [n]: yes
Source address or interface:
Type of service [0]:
Set DF bit in IP header? [no]: yes
Validate reply data? [no]:
Data pattern [0xABCD]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Sweep range of sizes [n]: yes
Sweep min size [36]: 1460
Sweep max size [18024]: 1540
Sweep interval [1]:
Type escape sequence to abort.
Sending 81, [1460..1540]-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds:
Packet sent with the DF bit set
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.............................
...........
Success rate is 49 percent (40/81), round-trip min/avg/max = 1/1/4 ms

Связанные обсуждения сообщества поддержки Cisco

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


Document ID: 116119