Практическое применение коммутаторов Accton Edge-Core 5712-24x.

  1. Введение.

Как в корпоративных сетях, так и в сетях Интернет провайдеров  периодически возникает необходимость ответвления трафика для его последующего анализа или записи. Традиционно для  этих целей используются или Tap устройства, или функционал SPAN  (Port mirroring, Port monitor – функция различается названием, в зависимости от производителя) коммутатора. Одним из вариантов реализации tap устройств может стать использование коммутаторов поддерживающих протокол OpenFlow.

Протокол OpenFlow – протокол управления уровнем data plane (forwarding plane) коммутаторов или маршрутизаторов, и является одним из компонентов реализации программно-конфигурируемых сетей. В рамках спецификации протокола версии 1.4 предусмотрены варианты обработки потоков или пакетов на основе следующих параметров: switch input port, Ethernet source/destination address, Ethernet frame type, VLAN id, VLAN priority, IP protocol, IP source/destination address, UDP/TCP source/destination port, ICMP type/code, ARP source IPv4 address и рядом других.1В качестве действий (если быть точнее – инструкций по действиям) с потоком предусмотрены варианты перенаправить поток на другой порт, изменить MPLS метку для пакетов в потоке, изменить VLAN id/priority, направить в сторону контроллера, обработать как не OpenFlow коммутатор (при соответствующей поддержке устройством) и другие.2В нашем случае, мы будем рассматривать самый простой вариант – направление на один или несколько исходящих портов (OFPAT_OUTPUT). 

  1. Несколько слов обAcctonGroup иPica8, используемых в решении.

Компания Accton (Тайвань) – является признанным  лидеров среди OEM/ODM производителей сетевого оборудования, с более чем 25 летней историей ( и более  3000 сотрудников в штате), анонсировала осенью 2014 года производство под маркойEdge-Coreкоммутаторов без операционной системы, но с предустановленным загрузчиком - Open Network Install Environment (ONIE). Модельным рядом предусмотрены коммутаторы с 48 гигабитными портами и 4-мя десяти гигабитными аплинками (серия4600), 48 десяти гигабитных портов и 4 или 6 портов на сорок гигабит (серии 5600, 5610, 5710,5712), а также полностью 40G коммутаторами (от 20 до 32 портов – серия6701). В качестве операционной системы, доступной для загрузки по протоколу ONIE на текущий момент, рекомендованы PicOS (версия от 2.6 и выше) от компанииPica8 или CumulusLinux от компании Cumulus Networks.

КомпанияPica8занимается разработкой программного обеспечения для коммутаторов на базе программной платформы XORP – PicOS. Операционная система PicOS включает в себя как традиционный режим работы коммутатора L2/L3, так и поддержку OpenFlow и Open vSwitch. Для удобства перехода на OpenFlow предусмотрен режим CrossFlow, позволяющий порту коммутатора совмещать работу по протоколу OpenFlow и стандартный режим L2/L3 коммутатора (OpenFlow-hybrid switch, в терминологии OF1.4). Несмотря на относительную молодость компании (основана в 2009 году) ей уже принадлежит ряд достижений, так например компания вошла в список 10 лучших сетевых стартапов по версии международного журнала CRN.Pica8 является также первой компанией, внедрившей в свою операционную систему поддержку протокола OpenFlow версии 1.4. 

  1. От теории к практике

Рассмотрим несколько сценариев использования коммутатора 5712-24x с предустановленной PicOS: перенаправление потока с порта на порт (uni-directional flow), зеркалирование определённого трафика на несколько портов (one-to-many multicasting) и агрегацию определённого трафика с нескольких портов в один (many-to-one aggregation). Во всех случаях будем использовать порты в режиме CrossFlow для сохранения совместимости со стандартным режимом L2/L3, потоки будут настраиваться непосредственно на коммутаторе, без использования внешнего контроллера. Использование контроллера позволит во многом автоматизировать и упростить процессы настройки, а также динамически реагировать на изменения в сети, но суть остаётся приблизительно такая же.

Поскольку BareMetal коммутаторы поставляются без операционной системы, загрузить операционную систему на коммутатор потребуется самостоятельно. Загрузить операционную систему можно с сайтаwww.pica8.comпосле регистрации, при этом лучше выбирать рекомендованный для соответствующе аппаратной платформы релиз. Установка операционной системы происходит посредствам протокола ONIE. Для установки по данному протоколу вам потребуется DHCP сервер с поддержкой опций 72 (сервер WWW по умолчанию) и опции 114 (URL) и, соответственно, http сервер с расположенным на нём файлом прошивки.

После установки и первоначально настройки попадаем в Linux меню коммутатора. Большая часть настроек, касающаяся протокола OpenFlow производиться отсюда. Тем не менее, чтобы включить режим CrossFlow, необходимо запустить CLI Pica8:

admin@XorPlus$cli
Synchronizing configuration...OK.
Pica8 PicOS Version 2.6
Welcome to PicOS L2/L3 on XorPlus
admin@XorPlus>

По умолчанию Pica8 включает в себя пробную лицензию, не ограничивающую функционал, но активирующую только первые четыре порта, плюс порт управления. Для тестовых нужд этого как правило достаточно, для полноценной работы коммутатора в режиме OpenFlow или CrossFlow необходимы лицензии L2 и OpenFlow.

Теперь рассмотрим вариант перенаправления потока с порта на порт (uni-directional flow)

Переходим в режим конфигурирования, и включаем поддержку режима CrossFlow для всего коммутатора:

admin@XorPlus> configure
There are no other users in configuration mode.
admin@XorPlus#
admin@XorPlus# set xovs enable true

Включаем режим CrossFlow для каждого необходимого интерфейса:

admin@XorPlus# set interface gigabit-ethernet te-1/1/1 crossflow enable true
admin@XorPlus# set interface gigabit-ethernet ge-1/1/1 crossflow
local-control false

Аналогично для портов 2 – 4. Смотрим настройки, проверяем и применяем:

admin@XorPlus# run show running-config
    interface {
        gigabit-ethernet \\"te-1/1/1\\" {
            speed: \\"1000\\"
            crossflow {
                enable: true
                local-control: false
            }
        }
        gigabit-ethernet \\"te-1/1/2\\" {
            speed: \\"1000\\"
            crossflow {
                enable: true
                local-control: false
            }
        }
        gigabit-ethernet \\"te-1/1/3\\" {
            speed: \\"1000\\"
            crossflow {
                enable: true
                local-control: false
            }
        }
        gigabit-ethernet \\"te-1/1/4\\" {
            speed: \\"1000\\"
            crossflow {
                enable: true
                local-control: false
            }
        }
    }
    xovs {
        enable: true
    }

Далее все настройки производятся в Linux. В основном используются два пакета: ovs-vsctl  - служит для настройки ovsdb-server (создание бриджов, добавление и настройка портов и т.д.), ovs-ofctl – создание и управление потоками OpenFlow.

Создать интерфейс br0

admin@XorPlus$ovs-vsctl add-br br0 -- set bridge br0 datapath_type=pica8

если CrossFlow включён, то появится сообщение:

device ovs-pica8 entered promiscuous mode
device br0 entered promiscuous mode

В противном случае:

ovs-vsctl: unix:/ovs/var/run/openvswitch/db.sock: database connection failed (No such file or directory)

Добавляем интерфейсы te-1/1/1 – te-1/1/4 в br0

admin@XorPlus$ovs-vsctl add-port br0 te-1/1/1 -- set interface te-1/1/1 type=pica8 options:link_speed=1G

В случае если мы не включили режим CrossFlow, появится ошибка:

ovs-vsctl: Error detected while setting up \\'te-1/1/1\\'.  See ovs-vswitchd log for details.

Если мы используем в портах 10G медные SFP модули на 1G, то скорость необходимо установить принудительно. Для пакета ovs-vsctl это будет запись options:link_speed=1G при добавлении порта или изменении порта, в настройках CLI PicOS скорость устанавливается командой:

admin@XorPlus# set interface gigabit-ethernet te-1/1/1 speed 1000

Далее необходимо создать поток. Допустим необходимо, чтобы все пакеты, поступающие на порт te-1/1/1 направлялись далее на порт te-1/1/2:

admin@XorPlus$ovs-ofctl add-flow br0 in_port=1,actions=output:2

Просмотр информации о потоке:

admin@XorPlus$ovs-ofctl dump-flows br0
OFPST_FLOW reply (OF1.4) (xid=0x2):
cookie=0x0, duration=3.304s, table=0, n_packets=n/a, n_bytes=0, in_port=1 actions=output:2

Для удаления потока используется команда:

admin@XorPlus$ovs-ofctl del-flows br0

Теперь  рассмотрим вариант зеркалирования определённого трафика на несколько портов (one-to-many multicasting). К примеру, необходимо, чтобы пакеты, приходящие на порт te-1/1/1 с IP адреса 192.168.11.47 направлялись на порт te-1/1/2, и на коллектор, подключённый к порту  te-1/1/3:

admin@XorPlus$ovs-ofctl add-flow br0 in_port=1,dl_type=0x0800,nw_src=192.168.11
.47,actions=output:2,3

Как уже говорилось ранее, в качестве критериев для определения потока или пакета можно использовать любые из определённых спецификацией OpenFlow 1.4

Для агрегации трафика с нескольких портов в один (many-to-one aggregation) необходимо указать несколько идентичных команд:

admin@XorPlus$ovs-ofctl add-flow br0 in_port=1,actions=output:4
admin@XorPlus$ovs-ofctl add-flow br0 in_port=2,actions=output:4
admin@XorPlus$ovs-ofctl add-flow br0 in_port=3,actions=output:4

Теперь все пакеты, поступающие на порты te-1/1/1 – te-1/1/3 будут направляться на порт te-1/1/4

Все правила можно объединять и оптимизировать. Так, например, весть HTTP трафик поступающий со всех портов можно направлять в сторону Up-Link портов и зеркалировать дополнительно на один или несколько портов с подключёнными устройствами для его анализа.

В случае, если требуется чтобы весь не соответствующий инструкциям, прописанным в настройках потока OpenFlow трафик обрабатывался коммутатором в обычном L2/L3 режиме, необходимо добавить в поток правило для соответствующего порта:

admin@XorPlus$ovs-ofctl add-flow br0 in_port=1,actions=normal

Где значение normal поля actions указывает на обработку пакетов так, как они обрабатывались бы обычным коммутатором. Соответственно в случае использования коммутаторов с PicOS будут применяться настройки протоколов и ACL, сделанные из CLI операционной системы.

Хотя решения на базе локальных таблиц OpenFlow не обладают такой динамичностью, как решения с OpenFlow контроллером, тем не менее, с их помощью можно создать на базе коммутатора достаточно гибкое tap устройство, не отказываясь от основного функционала. Внедрение же полноценного OpenFlow контроллера с качественной интеграцией с вышестоящими приложениями, в числе прочего, позволит реализовать динамические tap решения, оперативно реагирующие на любой трафик в сети. В первую очередь это необходимо для организации трафика на ПАК СОРМ, помимо этого, остается возможность использовать коммутатор в качестве агрегации, что резко сокращает затраты на инфраструктуру в процессе апгрейда/модернизации.

Более подробные \\"выкладки\\" по экономической и ценовой  составляющим, мы предоставим в ближайшее время.

Примечание:

  1. П. 7.2.2 спецификацииOpenFlow v 1.4
  2. ПП. 5.9 – 5.12 спецификацииOpenFlow v 1.4