
문제 현상 ONOS 컨테이너에서, 서로 다른 컨테이너가 관리하는 device 사이의 link가 없는 것으로 나타나고, 주기적으로 LLDP Packet failed to validate!라는 warn 수준의 로그가 발생한다. 문제 현상 재현 Ubuntu에서 Docker로 ONOS 컨테이너를 2개 실행한다. $ sudo docker run -it --rm --name onos1 onosproject/onos:2.2.0 $ sudo docker run -it --rm --name onos2 onosproject/onos:2.2.0 두 ONOS에서 org.onosproject.openflow 애플리케이션을 활성화한다. $ onos-app 172.17.0.2 activate org.onosproject.openf..
작성 계기 작년 졸업 프로젝트에서, REST를 이용한 ONOS to ONOS orchestration을 구현해야 했었다. 이걸 위해서는 child ONOS에 REST로 요청하여 받은 device, link, host 정보를 parent ONOS의 코어에 반영해야 했었다. 일단 link와 host를 추가하기 전에, device가 어떻게 추가되는지부터 알아야 했다. 그래서 device가 추가되는 과정에서 찍히는 로그를 직접 따라가서, 코드와 함께 분석해 보았다. 그 내용은 다음과 같다. (사실 이 과정은 ONOS Wiki에 그림과 함께 잘 나와 있다. 전반적으로는 System Components 문서의 Subsystem Structure 문단에 잘 나와 있고, OpenFlow southbound 관점에서의 ..
이 글에서는 onos-create-app으로 템플릿 애플리케이션을 생성하여, 이를 기반으로 새 ONOS 애플리케이션을 만드는 방법을 다룬다. ONOS 애플리케이션 개발 환경 세팅 템플릿 애플리케이션을 생성하기 전에, ONOS 애플리케이션 개발 환경을 세팅한다. 먼저, ~/.bashrc에서 Java 관련 환경 변수가 올바르게 설정되었는지 다시 확인한다. 템플릿 애플리케이션의 target ONOS 버전에 따라서 애플리케이션 개발 시 사용하는 Java 버전이 달라지기 때문이다. ONOS archetype 2.2.x 버전부터는 Java 11을 사용하여 ONOS 애플리케이션을 빌드하도록 강제되어 있다. 그 아래 버전까지는 Java 8을 사용하여 빌드한다. Archetype 관련 세팅을 진행한다. Target ON..
하필 Ubuntu에서 ONOS 빌드하고 실행하기를 게시한 바로 다음 날부터 기존 ONOS 빌드에 문제가 생겼다. 2020년 1월 15일부터 Maven Central Repository에서 HTTP의 지원을 종료하고 HTTPS를 사용하도록 변경했는데, 그렇게 변경하기 전의 ONOS는 Bazel이나 Buck으로 빌드할 때 HTTP를 사용하여 Maven Central Repository에 접근하기 때문이다. Central 501 HTTPS Required The Central Repository is Moving to HTTPS 따라서 이제는 다음 두 가지 방법 중 하나를 선택하여 ONOS를 빌드해야 한다. 2020년 1월 15일 이후 업데이트된 ONOS를 빌드한다. 일부 파일을 직접 수정하여 빌드한다. 20..

여기서는 Ubuntu에서 ONOS를 빌드하고 실행하는 방법을 다룬다. ONOS 빌드 Dependency 설치 ONOS는 버전에 따라 빌드 도구가 다르다. onos-build로 빌드하면, 1.7까지는 Maven, 1.8부터 1.13까지는 Buck, 1.14부터는 Bazel을 사용하여 빌드한다. 먼저 ONOS를 받아서 빌드하기 위한 dependency를 설치한다. $ sudo apt-get update $ sudo apt-get install -y ca-certificates zip python python3 git bzip2 build-essential curl unzip net-tools maven JDK 설치 및 Java 관련 환경 변수 설정 원하는 JDK 구현체를 선택하여 JDK를 설치한다. Targ..
2019년 1년 동안, REST 기반의 SDN 오케스트레이션(orchestration)을 주제로 졸업 프로젝트를 2인 팀으로 진행했다. 처음 보는 오픈소스 프로젝트를 지지고 볶으면서 경험한 것을 학교와 내 머리와 컴퓨터에 썩혀 두기는 너무 아까웠기에, 정리해서 공유하려 한다. 배경 내가 SDN에 대해 이해한 간략한 배경은 다음과 같다. 레거시 네트워크는 control plane과 data plane이 결합된 구조이다. Control plane이 여기저기 분산되어 있으므로, 규모가 커지면 관리가 복잡해지고 그 비용도 증가한다. SDN(Software Defined Networking)은 프로그래밍을 통해 중앙에서 네트워크 자원을 관리하는 것을 말한다. Control plane이 data plane과 분리되..