OpenFlow 13, контроллер SDN RYU, что такое buffer_id?

Я уже довольно давно борюсь с контроллером RYU SDN, работающим на OpenFlow13. И я не понимаю, для чего нам нужен buffer_id.

Я пытаюсь написать прокси-приложение, поэтому, когда я получаю 192.168.2.2 как ipv4.dst, я изменяю его на 172.10.2.2.

Я делаю это с помощью команды

actions = [parser.OFPActionSetField(eth_dst=pkt_ethernet.dst),parser.OFPActionSetField(ipv4_dst=pkt_ipv4.dst),parser.OFPActionOutput(2)]

out = parser.OFPPacketOut(datapath=datapath, buffer_id=msg.buffer_id,
                              in_port=in_port, actions=actions, data=data)
    datapath.send_msg(out)

pkt_ipv4.dst имеет новый IP-адрес.

Я получаю неверный запрос, OFPBRC_BUFFER_EMPTY(7)

Я пытаюсь отправить пакет, пока не добавляя потоки к контроллеру. Но я планирую добавить потоки позже.


person XChikuX    schedule 28.04.2018    source источник


Ответы (1)


«В большинстве случаев коммутаторы и маршрутизаторы настроены на пересылку пакетов с максимальной эффективностью».

https://fasterdata.es.net/network-tuning/router-switch-buffer-size-issues/

Если коммутатор не может немедленно переслать пакет, его необходимо поставить в очередь и сохранить в буфере, чтобы предотвратить его отбрасывание.

buffer_id просто однозначно идентифицирует и отслеживает пакет, если он находится в буфере. Если он не находится в буфере, идентификатор буфера не указывается и устанавливается равным OFP_NO_BUFFER.

Вы пытаетесь отправить OFPacketOut, который содержит buffer_id, ссылающийся на пустой буфер. Вам нужно указать буфер только один раз для любого входящего OFPacketIn, а в противном случае установить buffer_id на OFPacketOut.BUFFER_ID_NONE.

person HCF3301    schedule 23.01.2019