Open Routing, или OpenR, — это внутренне спроектированный и реализованный платформой протокол маршрутизации. OpenR был создан сначала для маршрутизации в сетях Terragraph. Гибкая архитектура OpenR привела к его использованию в других сетях, включая новую WAN-сеть Express Backbone компании Facebook.
Для начала работы с OpenR обратитесь к нашей подробной [документации](https://openr.readthed Yönters.io/).
Для просмотра полезных способов использования библиотек для создания программ, работающих с OpenR, обратитесь к директории examples
.
Чтобы начать вкладывать, ознакомьтесь с Developer Guide
и CONTRIBUTING.md
. Разработчики-руководство описывает лучшие практики для внесения изменений в код и тестирования. Любое одно изменение должно быть тщательно протестировано на наличие регрессий и совместимости версий.## Код поведения
Код поведения описан в CODE_OF_CONDUCT.md
Мы протестировали OpenR
на Ubuntu-16.04, Ubuntu-18.04 и CentOS 7/8. OpenR должен работать на всех платформах на основе Linux.
На верхнем уровне этого репозитория находятся директории build
и openr
. Под первым находится инструмент gen
, содержащий скрипты для сборки проекта. Директория openr
содержит исходный код проекта.
OpenR требует этих зависимостей для вашей системы и следует традиционным шагам сборки cmake ниже.
cmake
gflags
gtest
libsodium
zstd
folly
fbthrift
re2-devel
Мы предоставили скрипт build/build_openr.sh
, который был протестирован на LTS-версиях Ubuntu.
Скрипт использует gendeps.py
для установки всех необходимых зависимостей, компиляции OpenR и установки C++-библиотек, а также python-инструментов. Пожалуйста, модифицируйте скрипт в соответствии с вашей платформой. Также обратите внимание, что некоторые библиотечные зависимости требуют более новой версии, чем та, которая предоставляется стандартным менеджером пакетов системы, поэтому мы компилируем их из исходников вместо установки через менеджер пакетов. Пожалуйста, обратитесь к скрипту для этих случаев и необходимых версий.### Шаги сборки
# Установка зависимостей и сборка openr
bash ./build/build_openr.sh
# Для запуска тестов (некоторые тесты требуют привилегий sudo)
python3 build/fbcode_builder/getdeps.py test \
--src-dir=. \
--project-install-prefix openr:/opt/facebook \
openr
Если вы внесли какие-либо изменения, вы можете запустить cmake ../openr
и make
из каталога сборки, чтобы собрать openr с вашими изменениями.
openr
собирает как статические, так и динамические библиотеки, и шаг установки устанавливает библиотеки и все заголовочные файлы в /opt/facebook/openr/lib
и /opt/facebook/openr/include/
, а также python-модули в вашем каталоге site-packages
.
Примечание: скрипт build_openr.sh
выполнит этот шаг за вас.
getdeps.py
для установки в другое место
build_openr.sh
Для сборки и установки python-модулей вам потребуется python pip
или setuptools
.
Все библиотечные зависимости будут автоматически установлены, кроме модуля fbthrift-python
, который вам потребуется установить вручную с помощью шагов, аналогичных тем, которые описаны ниже. Это установит breeze
, консольный инструмент для взаимодействия с OpenR.
fbthrift
/ thrift1
, который должен быть установлен и доступен в PATHcd openr/openr/py
python setup.py build
sudo python setup.py install
У OpenR теперь есть Dockerfile
. Он использует gendeps.py
для сборки всех зависимостей + OpenR.```console
docker build --network host .
#### Запуск
Вы можете указать файл конфигурации путём привязки каталога с файлом `openr.cfg` в /config
```console
docker run --name openr --network host openr_ubuntu
/config
в контейнер
/config/openr.conf
OpenR распространяется с лицензией MIT.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )