学习材料:http://noxrepo.org/noxwiki/index.php/NOX_Installation#Installation

Q&A:

NOX runs, now what?

Many users start by playing around with the pyswitch component as is it a simple example written in python only, and it is a good start to get a feeling of the framework. Look at the code, see how it utilizes the python core API (defined in src/nox/lib/core.py) and maybe start experimenting with it using a single Openflow switch as the controlled entity. For a more challenging step, look at the Routing module, which makes use of the Authenticator, Topology and Discovery components, to see how you can start building bigger, multi-component applications.

However, keep in mind that what you just installed is merely a framework for programming network behaviours. The included Components are there to set a foundation and give examples of how NOX can be used. From know on, what happens with NOX and your network is what you want (and program) it to do.

How can I edit the flow table of a switch?

In order to see an example of setting up flows through a NOX component written in python, you can look at /src/nox/coreapps/examples/pyswitch.py The idea is that you need to construct the openflow packet manually, filling out the flow description and the actions, and then send it to the desired switch. Deleting flows works in the same way. The process is the same in a C++ component, just the API differs a bit.

========================================================================

Using NOX:

NOX must be invoked by the command line within the build/src directory. Generally, the command that starts the controller looks like this:

   ./nox_core [OPTIONS] [APP[=ARG[,ARG]...]] [APP[=ARG[,ARG]...]]...

Normally, NOX listens on a TCP port (SSL is supported though poorly documented at the moment) waiting for switches to connect. Once switches connect, NOX will dispatch network packets to the running components, and send OpenFlow messages to the switches on behalf of the components.

For instance, the following will initiate NOX, listening for incoming connections from Openflow switches on port 6633 (the Openflow protocol port):

   ./nox_core -v -i ptcp:6633

At this point, the core of NOX is running. However, while switches can now connect to the controller, no behaviour will be imposed on them by NOX. Recall that NOX is intended to provide the control logic for an entire network. This can mean many things, including: handling traffic engineering; routing; authentication; access control; virtual network creation; monitoring; and diagnostics. However, NOX itself does none of these things. Rather, it provides a programmatic interface to network components which perform the useful functionality. So, what is missing from the above command in order to give life to a NOX network is the Components NOX should run. These are passed as arguments to the above command.

=====================================================================

NOX componets:

Network apps

This is the list of network applications that actually manage the network:

  • Discovery keeps track of links between controlled switches.
  • Topology provides an in-memory record of all links currently up in the network.
  • Authenticator keeps track of the location of hosts and switches on the network.
  • Routing is the component responsible for path calculation.

Net components are located in src/nox/netapps/

Web apps

NOX Web applications are used for managing NOX through web services.

  • Webservice provides the web services interface for NOX applications.
  • Webserver is the app hosting the control interface.
  • Webserviceclient .

Web components are located in src/nox/webapps/

Third-party extensions

The components listed above are only those that come with the current NOX packaging. However it should be clear that NOX core is only the platform for programming network behaviour, and its power lies in its extensibility. The network behaviour itself is defined by the applications that NOX runs. Many extensions to NOX have been developed by various developers and researchers. Below is a non-extensive list with examples of third party NOX applications and projects that utilize NOX:

  • OVN is a network virtualization framework based on NOX/Openflow.
  • Basic Spanning Tree is a NOX module that constructs a spanning-tree for an OpenFlow network
  • Mobile VMs is a demo application that won the award for best demonstration at SIGCOMM 2008
  • RipCord is a modular platform for datacenter networking

The following extensions have since been incorporated into NOX.

  • LAVI is a backend for network visualization.
  • OpenRoads is a platform for innovation on SDN in mixed environments (fixed and wireless networks).

=====================================================================

NOX events:

Core Events

NOX contains a number of built-in events which map directly to OpenFlow messages received by controlled switches. These include:

  • Datapath_join_event : Issued whenever a new switch is detected on the network.
  • Datapath_leave_event : Issued whenever a switch has left the network.
  • Packet_in_event : Called for each new packet received by NOX. The event includes the switch ID, the incoming port, and the packet buffer.
  • Flow_mod_event : Issued when a flow has been added or modified by NOX.
  • Flow_removed_event : Raised when a flow in the network expires or has been removed.
  • Port_status_event : Indicates a change in port status. Contains the current port state including whether it is disabled, speed, and the port name.
  • Port_stats_in : Raised when a Port_stats message is received by a controlled switch in response to a Port_stats_request message and includes the current counter values for a given port (such as rx,tx, and errors).

Application Events

In addition, components themselves may define and throw higher level events which may be handled by any other events. The following events are thrown by existing NOX components.

  • Host_event : Raised by the Authenticator whenever a new host has joined the network or a host leaves the network (generally due to timeout).
  • Flow_in_event : Raised by the Authenticator whenever a Packet_in_event is received from the network. The Flow_in_event is then handled by the Routing application.
  • Link_event : Raised by Discovery for each link discovery/change on the network. This can be used to reconstruct the network topology if the discovery application is being run.

NOX的使用之学习篇【一】相关推荐

  1. NOX的使用之学习篇【三】

    资料来源:http://noxrepo.org/noxwiki/index.php/Special:AllPages Topology From Wikidb Jump to: navigation, ...

  2. 阿里云天池大赛赛题解析――深度学习篇

    作者:天池平台 出版社:电子工业出版社 品牌:电子工业出版社 出版时间:2021-09-01 阿里云天池大赛赛题解析――深度学习篇

  3. 拒绝从入门到放弃_《鸟哥的 Linux 私房菜 — 基础学习篇(第三版)》必读目录

    目录 目录 前言 关于这本书 必看知识点 最后 前言 相信部分刚进入这个行业的新同学会对一个问题感到疑惑,为什么从培训学校出来的学员不被欢迎? 这里记录下一些我个人的看法(博主也曾有面试新员工的经历) ...

  4. 机器学习 集成学习篇——python实现Bagging和AdaBOOST算法

    机器学习 集成学习篇--python实现Bagging和AdaBOOST算法 摘要 Bagging算法 Adaboost算法 摘要 本文通过python实现了集成学习中的Bagging和AdaBOOS ...

  5. .net ajax 怎么写,.NET学习篇--Ajax中Url的写法

    .NET学习篇--Ajax中Url的写法 什么是Ajax AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的 ...

  6. python基础代码的含义_Python基础学习篇

    原标题:Python基础学习篇 1.编码 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是unicode 字符串. 当然你也可以为源码文件指定不同的编码:# -*- codi ...

  7. Java NIO学习篇之直接缓冲区和非直接缓冲区

    定义 以上是书深入理解java虚拟机对直接内存的描述.直接缓冲区用的就是直接内存. java nio字节缓冲区要么是直接的,要么是非直接的.如果为直接字节缓冲区,则java虚拟机会尽最大努力直接在此缓 ...

  8. Java NIO学习篇之通道FileChannel详解

    定义: FileChannel是Java NIO对应于磁盘等存储设备文件操作的通道. 常用API详解: 获取FileChannel的API /** * 打开一个与文件的连接通道,用于进行文件操作. * ...

  9. Java NIO学习篇之缓冲区ByteBuffer详解

    定义: ByteBuffer是Buffer的实现类之一,是一个通用的缓冲区,功能要比其他缓冲区子类多.支持直接内存.是一个抽象类.子类实现是HeapByteBuffer(非直接缓冲区子类),Direc ...

最新文章

  1. 通过解决“构造包含所有给定子串的最短字符串”问题思考算法优化
  2. AVL树和红黑树区别
  3. 使用XML方式进行AOP编程(代码)
  4. Leetcode PHP题解--D6 595. Big Countries
  5. 乱码问题产生的原因与解决方案---UTF-8
  6. 跳过微信内置浏览器缓存
  7. Mybatis Plus简介_代码_以及文档地址_以及前置知识---Mybatis Plus工作笔记001
  8. AIoT 又迎一利器,涂鸦云开发平台来了!
  9. 微信小程序调查报告(二)-账号注册篇
  10. 绝地求生更新完后显示服务器忙,绝地求生2月1日更新好了吗?更新后提示服务器繁忙怎么办?...
  11. 苏神吐槽 | 开局一段扯,数据全靠编?真被一篇“神论文”气到了
  12. windows做软件界面
  13. 云课堂智慧职教计算机作业答案,云课堂智慧职教毛概作业答案
  14. 基于移动互联网的交互式卫星地面管理终端
  15. 如何锁定win10笔记本键盘
  16. python圣斗士修炼(十八):访问mysql数据库
  17. word2016使用Latex编辑公式
  18. 计算机网络隧道工程,隧道工程
  19. Opencv c++从影像分帧开始,制作数据集
  20. 佟年计算机天才不会打游戏,亲爱的热爱的:Gun神带佟年开黑,网友:甜蜜游戏时间...

热门文章

  1. 2018杭电多校第二场1006(容斥原理,组合数学)
  2. Uniform Distribution均匀分布
  3. 高性能web系统的架构和系统优化
  4. 【软件领域知识整理】贵金属交易的K线图解释(二)
  5. asp.net文本编辑器FCKeditor使用方法详解 - 橙色大地 - 博客园
  6. MYSQL远程登录报错: Error No. 2003
  7. php算法和数据结构
  8. 20-spring学习-Spring MVC基本操作
  9. HDU 5769 Substring(后缀数组)
  10. 文本文件与二进制文件