0
votes

I'm using OpenDayLight to be OpenFlow controller, i have 2 hosts that connect to the OpenFlow-enabled router (wr1043ndv4), the controller works fine to see the topology inventory, but when i want to try ping from one host to another i can't. i already made the flow according to the ICMPv4 guide

According to some post in here, the subnet mask for the destination address must /32, so i put the flow and it's in the flow table but the hosts can't ping to one another, i even try to make the subnet mask on the host to /32 to match what i put in the flow but still didn't work.

here my xml code that i changed a bit from the guide site:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<flow xmlns="urn:opendaylight:flow:inventory">
    <strict>false</strict>
    <instructions>
        <instruction>
            <order>0</order>
            <apply-actions>
                <action>
                    <order>0</order>
                    <dec-nw-ttl/>
                </action>
            </apply-actions>
        </instruction>
    </instructions>
    <table_id>235</table_id>
    <id>100</id>
    <cookie_mask>255</cookie_mask>
    <match>
        <ethernet-match>
            <ethernet-type>
                <type>2048</type>
            </ethernet-type>
            <ethernet-destination>
                <address>e8:06:88:xx:xx:xx</address>
            </ethernet-destination>
            <ethernet-source>
                <address>e8:06:88:xx:xx:xx</address>
            </ethernet-source>
        </ethernet-match>
        <ipv4-source>192.168.1.100/32</ipv4-source>
        <ipv4-destination>192.168.5.100/32</ipv4-destination>
        <ip-match>
            <ip-protocol>1</ip-protocol>
            <ip-dscp>27</ip-dscp>
            <ip-ecn>3</ip-ecn>
        </ip-match>
        <icmpv4-match>
            <icmpv4-type>6</icmpv4-type>
            <icmpv4-code>3</icmpv4-code>
        </icmpv4-match>
        <in-port>3</in-port>
    </match>
    <hard-timeout>1200</hard-timeout>
    <cookie>11</cookie>
    <idle-timeout>3400</idle-timeout>
    <flow-name>flowicmp1</flow-name>
    <priority>2</priority>
</flow>

and here the result that shown on the flow table:

{
    "flow-node-inventory:table": [
        {
            "id": 235,
            "opendaylight-flow-table-statistics:flow-table-statistics": {
                "active-flows": 3,
                "packets-looked-up": 0,
                "packets-matched": 0
            },
            "flow": [
                {
                    "id": "100",
                    "priority": 2,
                    "opendaylight-flow-statistics:flow-statistics": {
                        "packet-count": 0,
                        "byte-count": 0,
                        "duration": {
                            "nanosecond": 589000000,
                            "second": 12
                        }
                    },
                    "table_id": 235,
                    "cookie_mask": 0,
                    "hard-timeout": 1200,
                    "match": {
                        "ethernet-match": {
                            "ethernet-source": {
                                "address": "e8:06:88:xx:xx:xx"
                            },
                            "ethernet-type": {
                                "type": 2048
                            },
                            "ethernet-destination": {
                                "address": "e8:06:88:xx:xx:xx"
                            }
                        },
                        "icmpv4-match": {
                            "icmpv4-code": 3,
                            "icmpv4-type": 6
                        },
                        "ip-match": {
                            "ip-dscp": 27,
                            "ip-protocol": 1,
                            "ip-ecn": 3
                        },
                        "ipv4-destination": "192.168.5.100/32",
                        "ipv4-source": "192.168.1.100/32",
                        "in-port": "3"
                    },
                    "cookie": 11,
                    "flags": "",
                    "instructions": {
                        "instruction": [
                            {
                                "order": 0,
                                "apply-actions": {
                                    "action": [
                                        {
                                            "order": 0,
                                            "dec-nw-ttl": {}
                                        }
                                    ]
                                }
                            }
                        ]
                    },
                    "idle-timeout": 3400
                },

What did i do wrong? i expect the hosts to be able to ping each other after i made that flow push.

1

1 Answers

0
votes

the action of your flow seems to be to just decrement the ttl. do you want the action to be to forward out of another port?

also, is the output you gave for the flow table coming from the config datastore or operational? if you add a flow (e.g. via REST) it will end up in the config datastore. However, if the flow never gets programmed on the openflow switch it will not end up in the operational datastore. The operational datastore reflects the actual state of the network, whereas the config datastore reflects the "desired" state.