OpenFlow 13, контроллер RYU SDN, что именно является buffer_id? - PullRequest
0 голосов
/ 28 апреля 2018

Я уже давно борюсь с контроллером 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)

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

1 Ответ

0 голосов
/ 24 января 2019

"В большинстве случаев коммутаторы и маршрутизаторы настроены на переадресацию пакетов" по возможности "."

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.

...