Re: Making controller compatible with multicast.


Jensen Zhang
 

Hi Dario,

I think the document of openflowplugin has some typos. Obviously, "<ipv4-destination>200.71.9.5210</ipv4-destination>" is not a valid IP address. And from the YANG model [1], the value of this field should be an IP prefix.

I just tested this API with correct IP prefixes on OpenDaylight Carbon SR1. It works. I think the related YANG model never changed since Boron release or even earlier. So it should also work on Nitrogen and Oxygen. Not sure which release you are using.

Add openflowplugin team and documentation team into this thread.

Hi OpenFlow Plugin team,

Can someone take a look at this issue? I think somebody should update the document to fix this typo at least. Because the same typo also appears in the user guide [2], which is a part of the release.


Best,
Jensen


On Sun, Apr 8, 2018 at 12:29 AM Darío César Luzuriaga Sorribes <darioluzuriaga@...> wrote:
Hi, Kai.
Thanks for your feedback.
I'm getting the same error with "100.1.1.1/32" and other
variations.I've been following all the steps from
https://wiki.opendaylight.org/view/OpenDaylight_OpenFlow_Plugin:End_to_End_Groups.
It looks like the previous set ups are okay (in the right directories) as well.
./karaf
sudo mn --custom topology.py --topo mytopo
--controller=remote,ip=192.168.56.101         xterm h1 h3 h5
Is there's something else for me to do? Otherwise, I'll have to look
for other alternatives (if any).
Have a great day.

Dario.


On Sat, Apr 7, 2018 at 2:41 AM, Kai GAO <godrickk@...> wrote:
> Hello Dario,
>
> It seems that it's the <ipv4-source>100.1.1.1</ipv4-source> tag. It requires
> an IPv4 prefix (from the regular expression) instead of an IPv4 address.
>
> You can try "100.1.1.1/32" instead.
>
> Good luck!
>
> Best,
> Kai
>
>
> On Sat, Apr 7, 2018 at 3:20 AM, Darío César Luzuriaga Sorribes
> <darioluzuriaga@...> wrote:
>>
>> I’m working on a multicast project. It requieres simulation of data flow
>> over an SDN controller. Unfortunately most controller simulators do not
>> support multicast.
>> I followed the instructions on https://pymotw.com/2/socket/multicast.html
>> on how to make OpenDayLight controllers able to manage multicast flux.
>> While following the procedure over Postman, I found the errors indicated
>> on the bottom. The code used is the same proposed on the link.
>> Do you have any idea about how to fix this problem?
>> Thanks.
>>
>> Dario.
>>
>>
>> CODE:
>>
>> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
>> <group xmlns="urn:opendaylight:flow:inventory">
>>    <group-type>group-all</group-type>
>>    <buckets>
>>        <bucket>
>>            <action>
>>                <pop-vlan-action/>
>>                <order>0</order>
>>            </action>
>>            <bucket-id>12</bucket-id>
>>            <watch_group>14</watch_group>
>>            <watch_port>1234</watch_port>
>>        </bucket>
>>        <bucket>
>>            <action>
>>                <set-field>
>>                    <ipv4-source>100.1.1.1</ipv4-source>
>>                </set-field>
>>                <order>0</order>
>>            </action>
>>            <action>
>>                <set-field>
>>                    <ipv4-destination>200.71.9.5210</ipv4-destination>
>>                </set-field>
>>                <order>1</order>
>>            </action>
>>            <bucket-id>13</bucket-id>
>>            <watch_group>14</watch_group>
>>            <watch_port>1234</watch_port>
>>        </bucket>
>>    </buckets>
>>    <barrier>false</barrier>
>>    <group-name>Foo</group-name>
>>    <group-id>1</group-id>
>> </group>
>>
>>
>> ERRORS:
>>
>> {
>>    "errors": {
>>        "error": [
>>            {
>>                "error-type": "protocol",
>>                "error-tag": "malformed-message",
>>                "error-message": "Error parsing input: Supplied value
>> does not match the regular expression
>>
>> ^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])/(([0-9])|([1-2][0-9])|(3[0-2]))$.
>> [100.1.1.1]",
>>                "error-info": "java.lang.IllegalArgumentException:
>> Supplied value does not match the regular expression
>>
>> ^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])/(([0-9])|([1-2][0-9])|(3[0-2]))$.
>> [100.1.1.1]\n\tat
>>
>> com.google.common.base.Preconditions.checkArgument(Preconditions.java:203)\n\tat
>>
>> org.opendaylight.yangtools.yang.data.impl.codec.CompiledPatternContext.validate(CompiledPatternContext.java:36)\n\tat
>>
>> org.opendaylight.yangtools.yang.data.impl.codec.StringPatternCheckingCodec.validate(StringPatternCheckingCodec.java:39)\n\tat
>>
>> org.opendaylight.yangtools.yang.data.impl.codec.StringStringCodec.deserialize(StringStringCodec.java:62)\n\tat
>>
>> org.opendaylight.yangtools.yang.data.impl.codec.StringStringCodec.deserialize(StringStringCodec.java:26)\n\tat
>>
>> org.opendaylight.yangtools.yang.data.codec.xml.AbstractXmlCodec.parseValue(AbstractXmlCodec.java:36)\n\tat
>>
>> org.opendaylight.yangtools.yang.data.codec.xml.AbstractXmlCodec.parseValue(AbstractXmlCodec.java:21)\n\tat
>>
>> org.opendaylight.yangtools.yang.data.codec.xml.XmlParserStream.translateValueByType(XmlParserStream.java:453)\n\tat
>>
>> org.opendaylight.yangtools.yang.data.codec.xml.XmlParserStream.setValue(XmlParserStream.java:435)\n\tat
>>
>> org.opendaylight.yangtools.yang.data.codec.xml.XmlParserStream.read(XmlParserStream.java:279)\n\tat
>>
>> org.opendaylight.yangtools.yang.data.codec.xml.XmlParserStream.read(XmlParserStream.java:373)\n\tat
>>
>> org.opendaylight.yangtools.yang.data.codec.xml.XmlParserStream.read(XmlParserStream.java:373)\n\tat
>>
>> org.opendaylight.yangtools.yang.data.codec.xml.XmlParserStream.read(XmlParserStream.java:297)\n\tat
>>
>> org.opendaylight.yangtools.yang.data.codec.xml.XmlParserStream.read(XmlParserStream.java:373)\n\tat
>>
>> org.opendaylight.yangtools.yang.data.codec.xml.XmlParserStream.read(XmlParserStream.java:297)\n\tat
>>
>> org.opendaylight.yangtools.yang.data.codec.xml.XmlParserStream.read(XmlParserStream.java:373)\n\tat
>>
>> org.opendaylight.yangtools.yang.data.codec.xml.XmlParserStream.read(XmlParserStream.java:373)\n\tat
>>
>> org.opendaylight.yangtools.yang.data.codec.xml.XmlParserStream.read(XmlParserStream.java:297)\n\tat
>>
>> org.opendaylight.yangtools.yang.data.codec.xml.XmlParserStream.parse(XmlParserStream.java:191)\n\tat
>>
>> org.opendaylight.yangtools.yang.data.codec.xml.XmlParserStream.traverse(XmlParserStream.java:220)\n\tat
>>
>> org.opendaylight.netconf.sal.rest.impl.XmlNormalizedNodeBodyReader.parse(XmlNormalizedNodeBodyReader.java:170)\n\tat
>>
>> org.opendaylight.netconf.sal.rest.impl.XmlNormalizedNodeBodyReader.readFrom(XmlNormalizedNodeBodyReader.java:115)\n\tat
>>
>> org.opendaylight.netconf.sal.rest.impl.XmlNormalizedNodeBodyReader.readFrom(XmlNormalizedNodeBodyReader.java:93)\n\tat
>>
>> org.opendaylight.netconf.sal.rest.impl.XmlNormalizedNodeBodyReader.readFrom(XmlNormalizedNodeBodyReader.java:66)\n\tat
>>
>> com.sun.jersey.spi.container.ContainerRequest.getEntity(ContainerRequest.java:488)\n\tat
>>
>> com.sun.jersey.server.impl.model.method.dispatch.EntityParamDispatchProvider$EntityInjectable.getValue(EntityParamDispatchProvider.java:123)\n\tat
>>
>> com.sun.jersey.server.impl.inject.InjectableValuesProvider.getInjectableValues(InjectableValuesProvider.java:46)\n\tat
>>
>> com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$EntityParamInInvoker.getParams(AbstractResourceMethodDispatchProvider.java:153)\n\tat
>>
>> com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:203)\n\tat
>>
>> com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)\n\tat
>>
>> com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)\n\tat
>>
>> com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)\n\tat
>>
>> com.sun.jersey.server.impl.uri.rules.ResourceObjectRule.accept(ResourceObjectRule.java:100)\n\tat
>>
>> com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)\n\tat
>>
>> com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)\n\tat
>>
>> com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1511)\n\tat
>>
>> com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1442)\n\tat
>>
>> com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1391)\n\tat
>>
>> com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1381)\n\tat
>>
>> com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)\n\tat
>>
>> com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)\n\tat
>>
>> com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)\n\tat
>> javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat
>>
>> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)\n\tat
>>
>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)\n\tat
>>
>> org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:201)\n\tat
>>
>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)\n\tat
>>
>> org.eclipse.jetty.servlets.CrossOriginFilter.handle(CrossOriginFilter.java:257)\n\tat
>>
>> org.eclipse.jetty.servlets.CrossOriginFilter.doFilter(CrossOriginFilter.java:220)\n\tat
>>
>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)\n\tat
>>
>> org.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.java:83)\n\tat
>> org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:301)\n\tat
>>
>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)\n\tat
>>
>> org.opendaylight.aaa.filterchain.filters.CustomFilterAdapter.doFilter(CustomFilterAdapter.java:83)\n\tat
>>
>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)\n\tat
>>
>> org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)\n\tat
>>
>> org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)\n\tat
>>
>> org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)\n\tat
>>
>> org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)\n\tat
>>
>> org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)\n\tat
>>
>> org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)\n\tat
>>
>> org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)\n\tat
>>
>> org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)\n\tat
>>
>> org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)\n\tat
>>
>> org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)\n\tat
>>
>> org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)\n\tat
>>
>> org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)\n\tat
>>
>> org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)\n\tat
>>
>> org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)\n\tat
>>
>> org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)\n\tat
>>
>> org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)\n\tat
>>
>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)\n\tat
>>
>> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)\n\tat
>>
>> org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:72)\n\tat
>>
>> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)\n\tat
>>
>> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)\n\tat
>>
>> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)\n\tat
>>
>> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)\n\tat
>>
>> org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:287)\n\tat
>>
>> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)\n\tat
>>
>> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)\n\tat
>>
>> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)\n\tat
>>
>> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)\n\tat
>>
>> org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80)\n\tat
>>
>> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)\n\tat
>> org.eclipse.jetty.server.Server.handle(Server.java:499)\n\tat
>> org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)\n\tat
>>
>> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:258)\n\tat
>>
>> org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)\n\tat
>>
>> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)\n\tat
>>
>> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)\n\tat
>> java.lang.Thread.run(Thread.java:748)\n"
>>            }
>>        ]
>>    }
>> }
>>
>> _______________________________________________
>> alto-dev mailing list
>> alto-dev@...
>> https://lists.opendaylight.org/mailman/listinfo/alto-dev
>>
>
>
>
> --
> Kai Gao
> PhD Candidate at Institute of Network Science and Cyberspace
> Department of Computer Science and Technology
> Tsinghua University, Beijing, China
_______________________________________________
alto-dev mailing list
alto-dev@...
https://lists.opendaylight.org/mailman/listinfo/alto-dev

Join z.archive.alto-dev@lists.opendaylight.org to automatically receive all group messages.