Пытаюсь заставить H1 пинговать h2Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Пытаюсь заставить H1 пинговать h2

Сообщение Anonymous »

Я пытаюсь разрешить H1 пинговать H2, однако когда я запускаю Pingalll, я получаю X на каждом порту. H1 не может выполнить пинг H2. H1 подключается к s1 через порт 1 к порту 1, H2 подключается к s2 через порт 1 к порту 1, s1 подключается к s2 через порт 2 к порту 2. Я не понимаю, почему код не позволяет H2 отвечать на запрос H1
Вот мой icmp-код

Код: Выделить всё

import eventlet
eventlet.monkey_patch()

from ryu.base import app_manager
from ryu.controller import ofp_event
from ryu.controller.handler import MAIN_DISPATCHER
from ryu.controller.handler import set_ev_cls
from ryu.ofproto import ofproto_v1_0
from ryu.ofproto import ether
from ryu.lib.packet import packet, arp, ethernet

class DataCentre(app_manager.RyuApp):
OFP_VERSIONS = [ofproto_v1_0.OFP_VERSION]

def __init__(self, *args, **kwargs):
super(DataCentre, self).__init__(*args, **kwargs)
self.switch_dps = {}  # Dictionary to store switch datapaths

@set_ev_cls(ofp_event.EventOFPStateChange, [MAIN_DISPATCHER])
def switch_join(self, ev):
# Save the datapath when a switch joins
dp = ev.datapath
self.switch_dps[dp.id] = dp
self.logger.info(f"Switch {dp.id} joined the topology.")

def add_flow(self, dp, priority, match, actions):
ofp = dp.ofproto
ofp_parser = dp.ofproto_parser
mod_msg = ofp_parser.OFPFlowMod(
datapath=dp,
match=match,
command=ofp.OFPFC_ADD,
actions=actions,
priority=priority
)
dp.send_msg(mod_msg)

def setup_icmp(self, dp, port, nw_src, nw_dst):
ofp = dp.ofproto
ofp_parser = dp.ofproto_parser

# Allow ICMP from h1 to h2
if nw_src == '10.1.1.1' and nw_dst == '10.1.1.2':
match = ofp_parser.OFPMatch(
dl_type=0x0800,
nw_src='10.1.1.1',
nw_dst='10.1.1.2',
nw_proto=1
)
actions = [ofp_parser.OFPActionOutput(port)]
self.add_flow(dp, 5, match, actions)

# Block ICMP from h1 to h3, h4, h5
elif nw_src == '10.1.1.1' and nw_dst in ['10.1.1.3', '10.1.1.4', '10.1.1.5']:
match = ofp_parser.OFPMatch(
dl_type=0x0800,
nw_src='10.1.1.1',
nw_dst=nw_dst,
nw_proto=1
)
self.add_flow(dp, 10, match, [])

@set_ev_cls(ofp_event.EventOFPPacketIn, MAIN_DISPATCHER)
def packet_in_handler(self, ev):
# ARP resolution implementation
msg = ev.msg
dp = msg.datapath
ofp = dp.ofproto
ofp_parser = dp.ofproto_parser

Я изменил каждую часть этого кода и скопировал пример кода в Интернете, и он не допускает никаких пингов ни с одного хоста.

Подробнее здесь: https://stackoverflow.com/questions/791 ... to-ping-h2
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»