ryu控制器安装在arch linux的什么目录?
/usr/lib/python3.6/site-packages/ryu/
如何显示mininetCLI的帮助命令?
mininet> help
如何显示mininet的结点?
mininet> nodes
如何显示mininet的连接?
mininet> net mininet>links
如何在某一个虚拟中段中建立一个简单的HTTP服务器,并且从另外一个终端中对它进行访问?
mininet> h1 python -m SimpleHTTPServer 80 & mininet> h2 wget -O -h1 ... mininet> h1 kill %python
如何运行一个递归的测试? sudo mn --test pingpair (测试) sudo mn --test iperf (测试带宽)
如何梗概网络的拓扑和类型?
sudo mn --test pingall --topo single,3 sudo mn --test pingall --topo linear,4
如何设置连接的属性,包括贷款和延迟?
sudo mn --link tc,bw=10,delay=10ms
如何设置调试模式?
sudo mn -v debug
如何自定义一个拓扑,请附上相关的python文件写法?
应用的语句如下:
sudo mn --custom ~/mininet/custom/topo-2sw-2host.py --topo mytopo --test pingall
相应的脚本如下:
topo-2sw-2host.py:
"""Custom topology example Two directly connected switches plus a host for each switch: host --- switch --- switch --- host Adding the ‘topos‘ dict with a key/value pair to generate our newly defined topology enables one to pass in ‘--topo=mytopo‘ from the command line. """ from mininet.topo import Topo class MyTopo( Topo ): "Simple topology example." def __init__( self ): "Create custom topo." # Initialize topology Topo.__init__( self ) # Add hosts and switches leftHost = self.addHost( ‘h1‘ ) rightHost = self.addHost( ‘h2‘ ) leftSwitch = self.addSwitch( ‘s3‘ ) rightSwitch = self.addSwitch( ‘s4‘ ) # Add links self.addLink( leftHost, leftSwitch ) self.addLink( leftSwitch, rightSwitch ) self.addLink( rightSwitch, rightHost ) topos = { ‘mytopo‘: ( lambda: MyTopo() ) }
如何改变相应的mac地址?
sudo mn --mac
如何直接打开终端?
sudo mn -x
如何使用dpctl来查看某个交换机的流表?
dpctl dump-flows的格式如下:
[-m | --more] dump-flows [dp] [filter=filter]
mininet?
如何使用其他类型的交换机?
sudo mn --switch ovsk --test iperf
如何设置所有东西都有它各自的命名空间?
sudo mn --innamespace --switch user
如何设置链接的属性?比如说打开和关闭。
mininet> link s1 h1 down mininet> link s1 h1 up
如何显示某个网络内的主机?
mininet> xterm h1 h2
如何设置远程的控制器?
$ sudo mn --controller=remote,ip=[controller IP],port=[controller listening port] sudo mn --controller=remote,ip=192.168.1.150,port=6633
如何使用其他的OpenFlow协议?
--switch ovsk,protocols=OpenFlow13
参考网页:
http://fishcried.com/2016-02-09/openvswitch-ops-guide/
要想很好理解OVS的操作,必须要理解基本的概念:
Packet
网络转发的最小数据单元,每个包都来自某个端口,最终会被发往一个或多个目标端口,转发数据包的过程就是网络的唯一功能。
Bridge
OpenvSwitch中的网桥对应物理交换机,其功能是根据一定流规则,把从端口收到的数据包转发到另一个或多个端口。
Port
端口是收发数据包的单元。OpenvSwitch中,每个端口都属于一个特定的网桥。端口收到的数据包会经过流规则的处理,发往其他端口;也会把其他端口来的数据包发送出去.主要有
类型 | 说明 |
---|---|
Normal | 用户可以把操作系统中的网卡绑定到ovs上,ovs会生成一个普通端口处理这块网卡进出的数据包。 |
Internal | 端口类型为internal时,ovs会创建一块虚拟网卡,端口收到的所有数据包都会交给该网卡,发出的包会通过该端口交给ovs。当ovs创建一个新网桥时,默认会创建一个与网桥同名的Internal Port. |
Patch | 当机器中有多个ovs网桥时,可以使用Patch Port把两个网桥连起来。Patch Port总是成对出现,分别连接在两个网桥上,在两个网桥之间交换数据。 |
Tunnel | 隧道端口是一种虚拟端口,支持使用gre或vxlan等隧道技术与位于网络上其他位置的远程端口通讯。 |
Interface
接口是ovs与外部交换数据包的组件。一个接口就是操作系统的一块网卡,这块网卡可能是ovs生成的虚拟网卡,也可能是物理网卡挂载在ovs上,也可能是操作系统的虚拟网卡(TUN/TAP)挂载在ovs上。
FlowTable
流定义了端口之间数据包的交换规则.下面会对FlowTable做了详细的说明.
OVS命令的结构:
ovs-dpctl | datapath控制器,可以创建删除DP,控制DP中的FlowTables,最常使用show 命令,其他很少手动操作 |
ovs-ofctl | 流表控制器,控制bridge上的流表,查看端口统计信息等 |
ovsdb-tool | 专门管理ovsdb的client |
ovs-vsctl | 最常用的命令,通过操作ovsdb去管理相关的bridge,ports什么的 |
ovs-appctl | 这个可以直接与openvswitch daemon进行交互,上图中没有列出来,这么命令较少使用 |
对下面这些命令的一个简要记录:
- ovs-dpctl
show -s
- ovs-ofctl
show, dump-ports, dump-flows, add-flow, mod-flows, del-flows
- ovsdb-tools
show-log -m
- ovs-vsctl
- show 显示数据库内容
- 关于桥的操作
add-br, list-br, del-br, br-exists
. - 关于port的操作
list-ports, add-port, del-port, add-bond, port-to-br
. - 关于interface的操作
list-ifaces, iface-to-br
ovs-vsctl list/set/get/add/remove/clear/destroy table record column [value]
, 常见的表有bridge, controller,interface,mirror,netflow,open_vswitch,port,qos,queue,ssl,sflow.
- ovs-appctl
list-commands, fdb/show, qos/show
如何显示bridge,显示它与Port等概念的关系?
# ovs-vsctl show
如何查看有哪些Bridge,哪些ports,哪些interface?
[email protected]1:~# ovs-vsctl list-br br-ex br-int br-tun [email protected]-network-1:~# ovs-vsctl list-ports br-tun patch-int vxlan-ac1c0509 vxlan-ac1c050d vxlan-ac1c051c vxlan-ac1c053f [email protected]-network-1:~# ovs-vsctl list-ifaces br-tun patch-int vxlan-ac1c0509 vxlan-ac1c050d vxlan-ac1c051c vxlan-ac1c053f # iface与ports同名.
如何查看哪个port,interface属于哪个bridge?
[email protected]1:~# ovs-vsctl port-to-br vxlan-ac1c0509 br-tun [email protected]-network-1:~# ovs-vsctl iface-to-br vxlan-ac1c0509 br-tun
如何查看某个Bridge的流表,如果不是默认的of协议,那么如何显示?
[email protected]1:# ovs-ofctl dump-flows br-ex
sudo ovs-ofctl -O Openflow13 dump-flows <switch>
如何显示某个Bridge的流表?
# ovs-ofctl show br-ex
如何显示隐藏流表规则?
# ovs-appctl bridge/dump-flows br-ex
如何查看datapath的统计规则?
# ovs-dpctl show # ovs-dpctl show -s
## 查看某个端口的统计信息ovs-ofctl dump-ports br [port] # ovs-ofctl dump-ports br-ex 1
如何查看转发表?
# ovs-appctl fdb/show br-ex
OVS的相关设置
设置sFlow,相关网页:
http://docs.openvswitch.org/en/latest/howto/sflow/
http://www.sdnlab.com/3760.html
sudo ovs-vsctl -- --id[email protected]_1 create sflow agent=s4 target=\"10.0.0.2:6343\" \ header=128 sampling=64 polling=10 -- set bridge s4 [email protected]_1
如何设置qos?
参考网页:
http://docs.openvswitch.org/en/latest/howto/qos/
http://fishcried.com/2016-02-09/openvswitch-ops-guide/
ovs-vsctl set Interface tap0 ingress_policing_rate=100000 ovs-vsctl set Intervace tap ingress_policing_burst=10000 ovs-appctl qos/show <iface>
如何查看流规则的匹配?
watch -d -n 1 "sudo ovs-ofctl dump-flows <bridge>"
如何使用tcpdump抓包?
需要设置端口的镜像。
ip link add name snooper0 type dummy ip link set dev snooper0 up ovs-vsctl add-port br-int snooper0 # ovs-vsctl -- set Bridge br-int [email protected] -- --id=@snooper0 get Port snooper0 -- --id[email protected] get Port patch-tun -- --id[email protected] create Mirror name=mymirror select[email protected]tun select[email protected] [email protected] select_all=1 tcpdump -i snooper0 ovs-vsctl clear Bridge br-int mirrors ovs-vsctl del-port br-int snooper0 ip link delete dev snooper0
如何查看OVS的日志?
# cat /var/log/openvswitch/*.log # ovsdb-tool show-log -m
如何发送某个包去测试匹配?
# ovs-appctl ofproto/trace br-ex in_port=10,dl_src=66:4e:cc:ae:4d:20,dl_dst=46:54:8a:95:dd:f8 -generate Bridge: br-ex
变更记录:
变更说明 | 变更人 | 时间 |
---|---|---|
整理mininet笔记和部分OVS记录 | andrew | 2016-04-18 |
整理fishcired的笔记的OVS部分,添加到我自己的OVS部分 | andrew | 2016-05-12 |