Назад | Перейти на главную страницу

PIX 506E, MTU, фрагментация пакетов VPN и IP-телефонная система Shoretel

У нас есть два сайта, большой южный и маленький северный, между которыми есть VPN, определенная на двух межсетевых экранах Cisco PIX. По этому VPN-серверу проходит трафик IP-телефонов Shoretel, как и весь другой сетевой трафик. Недавно мы перевели меньший северный офис на Bt Infinity (оптоволокно), и все системы работали отлично, то есть работали отлично до прошлой недели. Обратите внимание, в этот день ничего не изменилось.

Трафик, идущий по VPN из Манчестера, работает по всем направлениям, кроме телефонной системы. Наши ручные телефонные инженеры из Shoretel говорят нам, что все это происходит из-за пакетов телефонной системы, в трафике которых включен бит DF (не фрагментировать), и требуемая полезная нагрузка 1472, а из-за накладных расходов IPSec 1472 не умещается в линии MTU.

Если я провожу тест ping MTU из нашего южного офиса в северный, я получаю следующее:

C:\>ping <NorthernOfficeServerIP> -f -l 1472

Pinging <NorthernOfficeServerIP> with 1472 bytes of data:
Reply from <OutsideInterfaceOfSourthernPixIP>: Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.

Настройка VPN на PIX выглядит следующим образом:

sysopt connection permit-ipsec
crypto ipsec transform-set chevelle esp-des esp-md5-hmac
crypto map transam 1 ipsec-isakmp
crypto map transam 1 match address 101
crypto map transam 1 set peer <Peer IP> 
crypto map transam 1 set transform-set chevelle
crypto map transam interface outside
isakmp enable outside
isakmp key ******** address <Peer IP> netmask 255.255.255.0
isakmp keepalive 10
isakmp nat-traversal 20
isakmp policy 1 authentication pre-share
isakmp policy 1 encryption des
isakmp policy 1 hash md5
isakmp policy 1 group 1
isakmp policy 1 lifetime 86400

Первое, что я попробовал на PIX, - это очистить флаг DF на пакетах, как показано ниже:

pix(config)# crypto ipsec df-bit clear-df outside

К сожалению, это просто дает:

ОШИБКА: нераспознанное использование: [no] crypto ipsec {transform-set | security-association} ... Введите help или '?' для списка доступных команд.

Зато наша прошивка PIX весьма почтенная, показавшая мне версия выдает:

Cisco PIX Firewall Version 6.3(5)
Cisco PIX Device Manager Version 3.0(4)

Compiled on Thu 04-Aug-05 21:40 by morlee

chathampix up 14 hours 54 mins

Hardware:   PIX-506E, 32 MB RAM, CPU Pentium II 300 MHz
Flash E28F640J3 @ 0x300, 8MB
BIOS Flash AM29F400B @ 0xfffd8000, 32KB

Я попытался изменить размер MTU на PIX, у меня был внешний интерфейс на 1500, 1492 (8 байтов для PPP) и рекомендация BT 1458, чтобы попытаться смягчить проблему. 56-байтовые накладные расходы VPN означают, что пакеты с битом DF, установленным на 1472 байта, всегда будут отбрасываться VPN.

Кто-нибудь знает эквивалентную команду для "pix (config) # crypto ipsec df-bit clear-df outside" для PIX с этой прошивкой? Или у вас есть другие идеи ??

ОБНОВИТЬ:

Ниже представлен алгоритм show crypto ipsec sa для северного PIX:

interface: outside
    Crypto map tag: transam, local addr. <NorthernOutsideInterfaceIP>

   local  ident (addr/mask/prot/port): (192.168.16.0/255.255.255.0/0/0)
   remote ident (addr/mask/prot/port): (192.168.0.0/255.255.255.0/0/0)
   current_peer: <SouthernOutsideInterfaceIP>:500
     PERMIT, flags={origin_is_acl,}
    #pkts encaps: 107592, #pkts encrypt: 107592, #pkts digest 107592
    #pkts decaps: 114302, #pkts decrypt: 114302, #pkts verify 114302
    #pkts compressed: 0, #pkts decompressed: 0
    #pkts not compressed: 0, #pkts compr. failed: 0, #pkts decompress failed: 0
    #send errors 8, #recv errors 0

     local crypto endpt.: <NorthernOutsideInterfaceIP>, remote crypto endpt.: <SouthernOutsideInterfaceIP>
     path mtu 1492, ipsec overhead 56, media mtu 1492
     current outbound spi: 4ada0b77

     inbound esp sas:
      spi: 0xe7c2815(243017749)
        transform: esp-des esp-md5-hmac ,
        in use settings ={Tunnel, }
        slot: 0, conn id: 1, crypto map: transam
        sa timing: remaining key lifetime (k/sec): (4516828/21982)
        IV size: 8 bytes
        replay detection support: Y


     inbound ah sas:


     inbound pcp sas:


     outbound esp sas:
      spi: 0x4ada0b77(1255803767)
        transform: esp-des esp-md5-hmac ,
        in use settings ={Tunnel, }
        slot: 0, conn id: 2, crypto map: transam
        sa timing: remaining key lifetime (k/sec): (4598687/21980)
        IV size: 8 bytes
        replay detection support: Y


     outbound ah sas:


     outbound pcp sas:

И MTU для Southern PIX и Northern PIX:

mtu outside 1500
mtu inside 1500

Я полагаю, что MTU автоматически устанавливается меньше 8 байтов для PPP на PIX.

Для трафика, превышающего MTU исходящего интерфейса после добавления служебных данных IPSec, есть несколько "исправлений" на стороне PIX / ASA.

Измените MTU на PIX / ASA на меньшее значение (обычно 1380), заставляя отправляющие станции реагировать - не всегда желаемым образом.

Измените MSS (только TCP, не используется для UDP)

Пусть PIX / ASA Fragment.

В случае, если бит df установлен во внутреннем заголовке IP и требуется фрагментация для прохождения через туннель IPSec, разрешение PIX / ASA очистить бит df также является вариантом.

Обратите внимание, что для очистки df-бита требуется PIX / ASA OS 7.0 и выше. "Почтенный" PIX 6.3 (5) не справится.

Более важный вопрос: почему ваш VoIP-трафик вообще отключает MTU? Все известные мне кодеки VoIP (включая очень распространенные G.711 и G.729) производят полезную нагрузку кодека «пакет» размером менее 160 байт. Добавьте RTP, UDP и служебные данные IP - всего примерно 40 байт и размер полезной нагрузки L2 не превышает 200 байт. Добавьте еще 56 байтов для IPSec ESP, и это все еще далеко от типичного MTU интерфейса Ethernet.

Что ваши администраторы VoIP проталкивают по сети, требующей 1472 байта полезной нагрузки L2?

Ссылка:

Передача голоса по IP - потребление полосы пропускания на вызов

Техническая информация - кодеки VoIP