Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Основы программно-конфигурируемых сетей. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
sw1 = switches[l.dpid1]
sw2 = switches[l.dpid2]
# Валидация всех потоков и путей информации
clear = of.ofp_flow_mod(match=of.ofp_match(),command=of.OFPFC_DELETE)
for sw in switches.itervalues():
if sw.connection is None: continue
sw.connection.send(clear)
path_map.clear()
if event.removed:
if sw2 in adjacency[sw1]: del adjacency[sw1][sw2]
if sw1 in adjacency[sw2]: del adjacency[sw2][sw1]
for ll in core.openflow_discovery.adjacency:
if ll.dpid1 == l.dpid1 and ll.dpid2 == l.dpid2:
if flip(ll) in core.openflow_discovery.adjacency:
adjacency[sw1][sw2] = ll.port1
adjacency[sw2][sw1] = ll.port2
break
else:
if adjacency[sw1][sw2] is None:
if flip(l) in core.openflow_discovery.adjacency:
adjacency[sw1][sw2] = l.port1
adjacency[sw2][sw1] = l.port2
bad_macs = set()
for mac,(sw,port) in mac_map.iteritems():
if sw is sw1 and port == l.port1:
if mac not in bad_macs:
log.debug("Unlearned %s", mac)
bad_macs.add(mac)
if sw is sw2 and port == l.port2:
if mac not in bad_macs:
log.debug("Unlearned %s", mac)
bad_macs.add(mac)
for mac in bad_macs:
del mac_map[mac]
def _handle_ConnectionUp (self, event):
sw = switches.get(event.dpid)
if sw is None:
# Новыйкоммутатор
sw = Switch()
switches[event.dpid] = sw
sw.connect(event.connection)
else:
sw.connect(event.connection)
def launch ():
if 'openflow_discovery' not in core.components:
import nox.openflow.discovery as discovery
core.registerNew(discovery.Discovery)
core.registerNew(l2_multi)
111
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]