今天就是簡單的SDN code的使用,以及一些ONOS的操作。ps:code的部分為java,因此需要一點java的概念。
git clone https://gerrit.onosproject.org/onos
cd onos
第一個foo-app為檔案目錄 第二個1.0-SNAPSHOT 指的是在onos內Applications的版本(可以隨便定 在project內的pom.xml也可以改)
第三個 org.foo.app為appID
./tools/dev/bin/onos-create-app app org.foo foo-app 1.0-SNAPSHOT org.foo.app
創建好會在onos底下發現剛剛創建的project
<properties>
<onos.app.name>org.foo.app</onos.app.name>
<onos.app.title>Foo App</onos.app.title>
<onos.app.origin>Foo, Inc.</onos.app.origin>
<onos.app.category>default</onos.app.category>
<onos.app.url>http://onosproject.org</onos.app.url>
<onos.app.readme>ONOS OSGi bundle archetype.</onos.app.readme>
</properties>
的部分則為bulid時候會用的。
這個為主程式的部分,相當於一般看到的main的檔案。
@Activate
protected void activate() {
cfgService.registerProperties(getClass());
log.info("Started");
}
@Deactivate
protected void deactivate() {
cfgService.unregisterProperties(getClass(), false);
log.info("Stopped");
}
project創建在這之後會比較會用到的部分在這裡先了解一下,之後會有實作的紀錄,會更有感覺。
export ONOS_ROOT=~/onos
source $ONOS_ROOT/tools/dev/bash_profile
mvn clean install
執行後會發現project內新增了一個target的資料夾。
#10.0.0.84為我開的onos server
#test-app-1.0-SNAPSHOT 這為一開始建立時說的Applications的版本,這是可以改的,因此如果直接複製會出錯是正常的,要看自己target內有檔名為什麼。
onos-app 10.0.0.84 reinstall target/test-1.0-SNAPSHOT.oar
ONOS的功能列表
如果剛剛有推成功,可以在搜尋找到自己的project。而在pom.xml寫的一些資訊也會在這邊看到(onos.app開頭的部分)。
執行的部分,activate()會馬上有動作,而停止部分則會執行deactivate()。
之後的範例基本上會使用到這幾個部分,如果還對其他功能有興趣的可以自行去了解。
sudo mn --controller=remote,ip=10.0.0.84 --mac --topo=single,3 --switch ovsk,protocols=OpenFlow13
ps:這是一個沒有建立任何規則的SDN project,因此pingall會ping不通是很正常的,因為根本沒有對switch做任何規則設定。