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

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

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

Для каждого ПЕРЕКЛЮЧАТЕЛЯ я хочу

        - DPID
        - STATE   (ACTIVE/INACTIVE)

Для каждого ПОРТА я хочу

         - DPID
         - PORT_NUMBER
         - STATE
         - PORT_STATE

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

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

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

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


person liv2hak    schedule 23.05.2014    source источник


Ответы (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)        
person Prasanna    schedule 17.07.2014