Re: Making controller compatible with multicast.


Gao Kai
 

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@....org
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

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