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)
  • 相关阅读:
    contest hunter5105 Cookies
    bzoj2599: [IOI2011]Race
    poj1741 Tree
    bzoj2527: [Poi2011]Meteors
    bzoj3673: 可持久化并查集 by zky&&3674: 可持久化并查集加强版
    bzoj2741: 【FOTILE模拟赛】L
    bzoj3110: [Zjoi2013]K大数查询
    bzoj1901: Zju2112 Dynamic Rankings
    bzoj2821: 作诗(Poetize)
    poj1417 True Liars
  • 原文地址:https://www.cnblogs.com/hwy89289709/p/6882237.html
Copyright © 2011-2022 走看看