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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM