Перейти к основному содержимому

19.2 Настройка EFD

19.2.1 Обзор

Введение в функциональность

Elephant Flow Detect (EFD) — функция обнаружения "слоновьих потоков". Исследования академических учреждений, проводившихся в реальных сетях, показали, что более 80% пропускной способности используется "слоновьими потоками", которые имеют большую пропускную способность и буферизацию, но не чувствительны к задержке. Напротив, потоки, чувствительные к задержке, могут значительно пострадать. Если обнаружить слоновый поток и применить некоторые политики маршрутизации (например, уменьшить приоритет слоновьего потока, чтобы сначала передавались более мелкие потоки), это может улучшить эффективность передачи в сети.

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

Описание принципа

Терминология:

  • EFD: Elephant Flow Detect

19.2.2 Конфигурация

Рисунок 19-2: Mac address aging

Рисунок 19-2: EFD

В следующем примере указывается поле характеристик и порог трафика. Когда скорость потока превышает указанный порог, характеристики пакетов инкапсулируются в определенные пользователем UDP пакеты и отправляются на сервер.

Шаг 1: Введите режим конфигурации

Switch# configure terminal

Шаг 2: Настройка параметров EFD

Укажите ipda для вычисления хеш-значения пакета

Switch(config)# hash-value global
Switch(config-hash-value-global)# efd select ipda

Настройте порог скорости для EFD. Потоки, скорость которых превышает 1000 Мбит/с, будут отмечены как "Elephant Flow". Значение по умолчанию — 50 Мбит/с.

Switch(config)# efd detect speed 1000

Включите функцию уведомлений EFD и укажите ipda и UDP порт уведомляющего пакета:

Switch(config)# efd notify enable 10.0.0.2 20007

Шаг 3: Введите режим конфигурации интерфейса и настройте атрибуты интерфейса

Switch(config)# interface eth-0-1/1
Switch(config-if)# efd enable
Switch(config-if)# exit

Switch(config)# int eth-0-1/2
Switch(config-if)# no switchport
Switch(config-if)# ip address 10.0.0.1/24
Switch(config-if)# exit

Шаг 4: Создайте статическую запись ARP (необязательно)

Switch(config)# arp 10.0.0.2 0.1.2

Шаг 5: Выйдите из режима конфигурации

Switch(config)# end

Шаг 6: Проверка

Switch# show efd configuration 
Elephant flow detection configuration information:
--------------------------------------------------
Detect rate : 1000 Mbps
Detect granularity : 16B
Detect time interval : 1000 ms
EFD aging time : 120 ms ~ 150 ms
EFD detect packet type : All IP packets
EFD IPG : disable
EFD redirect interface : N/A
EFD flow hash fields : destination-ip
EFD enabled interface :
------------------------- -------------------------
eth-0-1/1

Когда поток, полученный с интерфейса eth-0-1, превышает 1000 Мбит/с, мы можем обнаружить, что этот поток был распознан как Elephant Flow с помощью следующей команды:

Switch# show efd flow information decap 
EFD flow issued at:07:29:40 UTC Mon Aug 01 2016
From:eth-0-1, FlowId: 1701
--------------------------------------------------------
MACDA:0000.00aa.bbbb, MACSA:0000.00bb.bbbb
IPv4 Packet, IP Protocol is TCP(6)
IPDA:22.22.22.101, IPSA: 11.11.11.11
L4SourcePort:43690, L4DestinationPort:43741
--------------------------------------------------------
00 00 00 aa bb bb 00 00 00 bb bb bb 08 00 45 00
00 32 00 00 40 00 c8 06 70 35 0b 0b 0b 0b 16 16
16 65 aa aa aa dd aa aa aa dd aa aa aa dd aa aa
aa dd aa aa aa dd aa aa aa dd aa aa aa dd aa aa

Результат Tcpdump на сервере 10.0.0.2:

12:41:28.286993 92:fd:58:d7:8f:00 > 00:00:00:01:00:02, ethertype IPv4 (0x0800), length 60: IP (tos 0x0, ttl  64, id 0, offset 0, flags [DF], proto 17, length: 44) 10.0.0.1.49071 > 10.0.0.2.20007: [udp sum ok] UDP, length 16
0x0000: 0000 0001 0002 92fd 58d7 8f00 0800 4500 ........X.....E.
0x0010: 002c 0000 4000 4011 26bf 0a00 0001 0a00 .,..@.@.&.......
0x0020: 0002 bfaf 4e27 0018 b05b 0000 0101 0000 ....N'...[......
0x0030: 0008 0001 0004 1616 1665 0000 .........e..
Примечание

Описание заголовка пакета EFD. Красная часть выше — это часть информации пакета EFD. Конкретный анализ следующий:

  • 0000 - зарезервировано, не имеет конкретного значения. Часть заголовка пакета EFD.
  • 01 - версия пакета EFD, поддерживается только 0x01. Часть заголовка пакета EFD.
  • 01 - код операции потока EFD, 0x01 — этот поток впервые распознан как Elephant Flow. 0x02 — этот поток уже был ранее распознан как Elephant Flow. Часть заголовка пакета EFD.
  • 0000 0008 - длина части данных пакета EFD (включая тип данных). Часть заголовка пакета EFD.
  • 0001 - тип данных в части пакета EFD. 0x0001 означает, что данными является IPDA.
  • 0004 - длина данных части пакета EFD.
  • 16161665 - данные, означающие, что IPDA равен 22.22.22.101.