欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SDN-流表分析与增删改查

程序员文章站 2022-07-06 18:12:28
...

目录

基于OpenFlow的SDN网络

拓扑代码——mytopo.py

流表操作

查看流表

删除流表

添加流表


基于OpenFlow的SDN网络

SDN-流表分析与增删改查
基于OpenFlow的SDN网络

上图以主机h1向网络发送数据包时的情况为例,若发送给主机h2,则路线为①②③⑥,每条路径的解释见图注。若读者没有了解过OpenFlow协议,请参考下面的文章,可以看看里面的数据结构,以及Packetin、Packetout、Flow-Mod消息、流表的字段等。

SDN-OpenFlow1.0协议分析

 

拓扑代码——mytopo.py

from mininet.topo import Topo
 
class MyTopo( Topo ):
 
    def __init__( self ):
 
        # initilaize topology   
        Topo.__init__( self )
 
        # add hosts and switches
        h1 = self.addHost( 'h1' )
        h2 = self.addHost( 'h2' )
        h3 = self.addHost( 'h3' )
        s1 = self.addSwitch( 's1' )
        s2 = self.addSwitch( 's2' )
 
        # add links
        self.addLink(h1,s1,1,1)
        self.addLink(h2,s1,1,3)
        self.addLink(h3,s2,1,1)
        self.addLink(s1,s2,2,2)
 
topos = { 'mytopo': ( lambda: MyTopo() ) }

你也可以使用图形化界面miniedit进行网络构建

SDN-Mininet安装使用

启动控制器,博主使用的是OpenDaylight

启动mininet

SDN-流表分析与增删改查
标题

流表操作

查看流表

查看所有流表

dpctl dump-flows

删除流表

删除所有流表命令

dpctl del-flows

 在SDN-OpenFlow1.0协议分析中的控制器配置流表(Flow-Mod消息)部分是不是还提到了删除部分流表呀,我们也可以根据条件进行删除。

删除入端口号为1和2的流表项命令

dpctl del-flows in_port=1
dpctl del-flows in_port=2

上面的dpctl命令是针对所有流表的,那么针对某个交换机的流表如何删除呢?

对某个交换机的流表进行删除命令(删除交换机s1流表中入端口号为2的流表项)

sh ovs-ofctl del-flows s1 in_port=2

添加流表

添加入端口为1,出端口为2及入端口为2,出端口为1的流表项

dpctl add-flow in_port=1,actions=output:2
dpctl add-flow in_port=2,actions=output:1

添加丢弃数据包的流表,丢弃入端口为2的数据包

dpctl add-flow in_port=2,actions=drop

流表实践

SDN-流表分析与增删改查
添加流表项

我们查看流表,刚开始为空,当然也就ping不通。接下来添加了两个流表项,再次ping,可以看到h1与h3之间可以ping通。

cookie为控制器定义的流表项标识符

duration是持续时间

table是流表的id

n_packets大概是缓冲的数据包数(不太清楚,有读者知道,请下方评论)

n_bytes大概是缓冲的字节数(不太清楚,有读者知道,请下方评论)

in _port是入端口

actions是动作列表

output是动作,意思是输出

可以看到两个交换机的1、2端口均打开,而在构建网络时主机h2是3号端口,所以ping不通。

SDN-流表分析与增删改查
条件删除

接下来我们删除交换机s1中入端口为2的流表项,h1与h3就无法ping通了。

SDN-流表分析与增删改查
删除流表项,添加丢弃流表项

 接下来,我删除了所有流表,重新添加端口1、2的流表项,使之可以ping通,再添加丢弃流表项,使通过端口2的数据包丢弃,最后h1与h3之间无法ping通。

SDN-流表分析与增删改查
添加丢弃流表项后的流表

查看流表可以看出,每个交换机均添加了一条action为drop的流表项。

更多SDN相关内容,请查看:SDN-自学笔记

有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。

 

相关标签: SDN