Информация о коммутаторах и портах от OpenFlow (контроллер RYU)

Я пытаюсь получить некоторую информацию от OpenFlow для моего приложения OpenFlow на RYU.

Информация, которую я хочу получить, приведена ниже.

Для каждого переключателя я хочу

        - DPID
        - STATE   (ACTIVE/INACTIVE)

Для каждого порта я хочу

         - DPID
         - PORT_NUMBER
         - STATE
         - PORT_STATE

Состояние порта - отслеживает сообщение о статусе порта от OF. 1 - АКТИВНЫЙ. 0 - INACTIVE.OpenFlow 1.0 имеет 2 типа состояния порта из памяти: один относительно того, имеет ли порт связь, и другой относительно того, работает ли порт административно. Я полагаю, что это состояние порта отслеживает второй тип - то есть состояние порта должно быть 1, если порт административно работает, даже если у него нет связи.

Какие сообщения мне следует прослушать, чтобы получить вышеуказанную информацию. Также я попытался получить информацию о ofp_event.EventOFPStateChange.

Я попытался посмотреть на http://ryu.readthedocs.org/en/latest/genindex.html Я не смог найти информацию, связанную с ofp_event.EventOFPStateChange.

Любая помощь, чтобы указать мне в правильном направлении, будет принята с благодарностью.

1 ответ

Решение

Вы можете использовать следующий код. Я использую его для идентификации всех коммутаторов, подключенных к нему. Мне нужны были только DPID и выходные порты. Но вы можете использовать ev.link для другой информации. Надеюсь это поможет. `

class OF13(app_manager.RyuApp):
OFP_VERSIONS = [ofproto_v1_3.OFP_VERSION]

_CONTEXTS = {
    'dpset': dpset.DPSet,
}

def __init__(self, *args, **kwargs):
    super(OF13, self).__init__(*args, **kwargs)
    self.dpset = kwargs['dpset']     

def _get_hwaddr(self, dpid, port_no):
    return self.dpset.get_port(dpid, port_no).hw_addr

@handler.set_ev_cls(event.EventLinkAdd)
def link_add(self, ev):
    print ev.link.src, ev.link.dst
    print self._get_hwaddr(ev.link.src.dpid, ev.link.src.port_no)        
Другие вопросы по тегам