Как я могу включить уменьшение ttl на коммутаторах OpenFlow?
Я использую Mininet с пользовательской топологией и контроллером RYU-REST "ofctl-rest.py". После установки некоторых потоков в коммутаторах, отправки некоторых пакетов по сети и захвата трафика я обнаружил, что коммутаторы не уменьшают поле ttl в слое ip. Я выяснил, что я должен сказать переключателям уменьшить поле ttl (это возможно начиная с OpenFlow - версия 1.1). Для этого я пробую строку "type": "DEC_NW_TTL", но она не работает. Моя завершенная команда выглядит так:
curl -X POST -d '{
"dpid": 1,
"cookie": 1,
"cookie_mask": 1,
"table_id": 0,
"idle_timeout": 3600,
"hard_timeout": 3600,
"priority": 0,
"flags": 1,
"match":{
"in_port": 1
},
"actions":[
{
"type":"OUTPUT",
"port": 4,
"type":"DEC_NW_TTL"
}
]
}' http://localhost:8080/stats/flowentry/add
Что я не прав? Как мне изменить команду, чтобы коммутатор уменьшил ttl? Пожалуйста, помогите мне. Заранее спасибо.
2 ответа
Ответ Аббадона должен работать. Вы должны поместить каждое действие в пару скобок. Однако порядок различных действий в почтовом запросе не имеет значения. OpenFlow имеет порядок по умолчанию для различных типов действий.
- копировать TTL внутрь: применить копировать внутренние действия TTL к пакету
- pop: применить все действия с тегами pop к пакету
- push-MPLS: применить действие push метки MPLS к пакету
- push-PBB: применить к пакету push-метку PBB
- push-VLAN: применить действие push-метки VLAN к пакету
- копировать TTL наружу: применить действие копирования TTL наружу к пакету
- уменьшение TTL: применить действие уменьшения TTL к пакету
- set: применить все действия set-field к пакету
- qos: применить все действия QoS, такие как установка очереди для пакета
- group: если указано групповое действие, примените действия соответствующих групповых групп (ы) в порядке, указанном в этом списке
- вывод: если не указано групповое действие, переслать пакет на порт, указанный в выходном действии
Я думаю, что вы должны указать более одного действия. Также вам следует изменить порядок действий. Во-первых, вам нужно уменьшить TTL, а затем отправить пакет. Отправка пакета сначала, а затем уменьшение не работает.
Я бы попробовал это так:
curl -X POST -d '{
"dpid": 1,
"cookie": 1,
"cookie_mask": 1,
"table_id": 0,
"idle_timeout": 3600,
"hard_timeout": 3600,
"priority": 0,
"flags": 1,
"match":{
"in_port": 1
},
"actions":[
{
"type":"DEC_NW_TTL"
},
{
"type":"OUTPUT",
"port": 4
}
]
}' http://localhost:8080/stats/flowentry/add