3. Компоненты RUNOS¶
3.1. Базовые¶
- Common.hh
- Подключает:
- Библиотеку логгирования GLOG
- QtCore
- LibFluidMsg
- Flow.hh
Представление потока.
- SwitchConnection.hh
Представление соединения с коммутатором.
- Decision.hh
Решения для PacketMissHandler.
- Controller.hh
- Application.hh
Базовый тип для приложений.
- Config.hh
Инструмент для работы с конфигурационном файлом.
- FluidOXMAdapter.hh
Связующее звено между RUNOS::OXM и LibFluid
- Loader.hh
Загрузчик приложений : Loader.
- PacketParser.hh
Разбор пакетов протоколов семейтсва TCP/IP.
3.2. Приложения¶
- ArpHandler.hh
- FlowManager.hh
- HostManager.hh
- LearningSwitch.hh
- LinkDiscovery.hh
- RestListener.hh
- SimpleLearningSwitch.hh
- StaticFlowPusher.hh
- Stats.hh
- STP.hh
STP.
- Switch.hh
Представление коммутатора и SwitchManager.
- Topology.hh
- WebUIManager.hh
- RestMultipart.hh
-
That module allows REST users to get switch statistics that can be delivered by MultipleRequest messages. Modify actions are implemented in RestFlowMod and StaticFlowPusher modules.
Handling of each GET consists of the following steps:
switching in handleGET method
calling
sendGetRequest(corresponding type, <params>)
and turning in event loopwaiting for the response from a switch and it’s handling
- handler (
onResponse
) updated variable that corresponds to the reply type(of13::MultipartReplyFlow replyFlow, for example) - handler wakes up
handleGET
method
- handler (
responding to the user
- RestFlowMod.hh
-
REST interface for flow enties construction and deletion of existing ones.
Allows to add new flow entries to a switch (to any already existing table excluding Maple’s one): You can use table numbers in range of [0, ctrl->handler_table() - 1]. POST request:
POST /api/rest-flowmod/flow/<switch_id> body of the request: JSON description of a new flow
Imlemantation logic is the same as in RestMultipart.
If you want to add new handler, you need to go trouth the following steps:
- add new path to be handeled: init: acceptPath(Method::POST, “flowentry”);
- implement your logic in a “case” of handlePOST (GET, DELETE, etc)
RestStringProcessing.hh
В данном модуле содержатся функции и макросы, призванные автоматизировать рутинные действия при работе с json11::Json и строками. Используется в ref-restMultipart-class и ref-restFlowMod-class.
3.3. Инструменты¶
- AppObect.hh
Базовый класс для объектов event-модели
- Event.hh
event-модель
- ILinkDiscovery.hh
Интерфейс приложения LinkDiscovery.
- json11.hpp
- LLDP.hh
описание LLDP заголовка пакета.
- OFMsgUnion.hh
OpenFlow сообщения.
- ORTransaction.hh
Канал для общения с коммутаторами.
- Rest.hh
Базовый класс для приложений, поддерживающих REST
3.4. Библиотеки¶
3.4.1. api¶
Интерфейс для некоторых компонентов RUNOS
- api/Packet.hh
Интерфейс для чтения и изменения полей пакета протоколов семейтсва TCP/IP.
- api/PacketMissHandler.hh
Интерфейс для функций обработчиков в PacketMissHandler.
- api/SerializablePacket.hh
Интерфейс для сериализации пакетов протоколов семейства TCP/IP.
- api/TraceablePacket.hh
Интерфейс для Packet, работающим с runos::maple
3.4.2. maple¶
Реализация ядра maple.
- maple/Backend.hh
Интерфейс для maple, для работы с сетью
- maple/Flow.hh
Представление потока для maple
- maple/Tracer.hh
Трассировка PacketMissHandler’ов
- maple/TraceTree.hh
Релазиация TraceTree
- maple/TraceablePacketImpl.hh
Реализация Packet, работающим с maple
- maple/LoggableTracer.hh
Tracer с логированием.
- maple/Runtime.hh
Интерфейс maple.
3.4.3. openflow¶
- openflow/common.hh
база openflow
- openflow/openflow-1.0.h
OpenFlow1 definitions
- openflow/openflow-1.3.5.h
OpenFlow1.3 definitions
- openflow/openflow-1.5.1.h
OpenFlow1.5 definitons.
3.4.4. oxm¶
Библиотека реализующая oxm поля OpenFlow.
- oxm/bit_traits.hh
Размеры типов в битах.
- oxm/errors.hh
Возможные exceptions.
- oxm/field.hh
filed, value and mask
- oxm/field_set.hh
Наборы полей.
- oxm/openflow_basic.hh
Основные поля TCP/IP.
3.4.5. types¶
- types/ethaddr.hh
обретка для ethernet адреса
- types/IPv6Addr.hh
обертка для IPv6 адреса
- types/exception.hh
Базовый тип для exception