zoukankan      html  css  js  c++  java
  • RYU OFPMatch 的使用方法

    今天搞了我一天的错误,好在现在解决了:

    问题介绍:

    我想使用下面的代码来设置一条流,匹配从地址10.0.0.1到10.0.04的流量

    datapath = switch.dp
                
    ofproto = datapath.ofproto
    parser = datapath.ofproto_parser
                    
    match = parser.OFPMatch(
        ipv4_src = ('10.0.0.1'),
        ipv4_dst = ('10.0.0.2')
    )
                
    actions = [parser.OFPActionOutput(ofproto.OFPP_CONTROLLER,
                                              ofproto.OFPCML_NO_BUFFER)]
    nst = [parser.OFPInstructionActions(ofproto.OFPIT_APPLY_ACTIONS,
                                                 actions)]
    mod = parser.OFPFlowMod(datapath=datapath,cookie=COOKIE_ADMIN_RULE,
                 priority=ADMIN_PRIORITY+1,match=match,
                                            instructions=inst)
    datapath.send_msg(mod)

    但是,使用了之后,没有办法添加到OVS上。

    然后下面的网页给我找到了解决方法:

    https://sourceforge.net/p/ryu/mailman/message/35091288/

    这里面虽然问题不是我的问题,但是我看了很多个帖子,很多设置流的,都没有设置IP地址的。有设置的,都设置了很多其他的属性,包括了包的类型什么的。所以,我想这可能是我的错误原因。然后,添加之后,确实可以了。而且,学习了一种优美一点的写法

    from ryu.lib.packet import ether_types
    from ryu.lib.packet import  in_proto as inet
    
    
    kwargs = dict(in_port=1, eth_type=ether_types.ETH_TYPE_IP,
                  ipv4_src='10.0.0.1', ipv4_dst='10.0.0.2',
                  ip_proto=inet.IPPROTO_UDP, udp_dst=5555)
    match1 = parser.OFPMatch(**kwargs)
    kwargs['in_port'] = 2
    match2 = parser.OFPMatch(**kwargs)
  • 相关阅读:
    Perl 简介
    一定时间后延时变长问题
    CPAN常见问题集
    J2SE简介
    brian的Perl问题之万能指南
    清洁工 VS 亿万富翁
    关于VC中的"stdafx.h"
    Perl模式匹配
    wiki介绍
    生活中10大省钱小秘诀 白领一族"必备诀窍"
  • 原文地址:https://www.cnblogs.com/hwy89289709/p/6882237.html
Copyright © 2011-2022 走看看