2016-11-30 11 views
2

В контроллере Ryu для выбранного датапата, как я могу получить правила OpenFlow от коммутатора? Например, для ниже правила:Получение правил OpenFlow из datapath

печенья = 0x0, длительность = 18575.528s, таблицы = 0, n_packets = 1, n_bytes = 98, приоритета = 1, IP, in_port = 3, nw_dst = 10,0. 0,1 действия = выход: 1

Я хочу получить поля nw_dst и действия.

ответ

1

Используйте OFPTableStatsRequest объект. Он вернет список со всеми установленными потоками.

примечание есть OFPGroupStatsRequest, который делает то же самое для групп.

Непроверенный пример, который опирается на переменную экземпляра datapath.

import ryu.app.ofctl.api as api 

def ofdpaTableStatsRequest(datapath): 
    parser = datapath.ofproto_parser 
    return parser.OFPTableStatsRequest(datapath) 

def getFlows(self): 
    """ 
    Obtain a list of Flows loaded on the switch 
    ` 
    :return: A list of Flow Entires 
    """ 
    msg = ofdpaTableStatsRequest(self.datapath) 
    reply = api.send_msg(self.ryuapp, msg, 
         reply_cls=self.parser.OFPTableStatsReply, 
         reply_multi=True) 
    // the flow entries you are looking for will be in the reply 

Позвольте мне знать, если это работает для вас

+0

Да это работает, спасибо. Также я решил это внутри обработчика событий. Например: @set_ev_cls (ofp_event.EventOFPFlowStatsReply, MAIN_DISPATCHER) Защиту flowStatsHandler (само, эв): тела = ev.msg.body для потока в теле: self.ipv4Dest = flow.match [ 'ipv4_dst'] – Anamort

 Смежные вопросы

  • Нет связанных вопросов^_^