Информация о коммутаторах и портах от 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)