YAMAMOTO Takashi | 23 Jan 03:16 2015
Picon

[PATCH 1/6] nx_actions: Remove redundant initializations

Signed-off-by: YAMAMOTO Takashi <yamamoto@...>
---
 ryu/ofproto/nx_actions.py | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/ryu/ofproto/nx_actions.py b/ryu/ofproto/nx_actions.py
index b8879e6..dbe7c8a 100644
--- a/ryu/ofproto/nx_actions.py
+++ b/ryu/ofproto/nx_actions.py
 <at>  <at>  -64,7 +64,6  <at>  <at>  def generate(ofp_name, ofpp_name):
     class NXActionUnknown(NXAction):
         def __init__(self, subtype, data=None,
                      type_=None, len_=None, experimenter=None):
-            self.subtype = subtype
             super(NXActionUnknown, self).__init__()
             self.data = data

 <at>  <at>  -93,8 +92,6  <at>  <at>  def generate(ofp_name, ofpp_name):
         def __init__(self, src_field, dst_field, n_bits, src_ofs=0, dst_ofs=0,
                      type_=None, len_=None, experimenter=None, subtype=None):
             super(NXActionRegMove, self).__init__()
-            self.experimenter = ofproto_common.NX_EXPERIMENTER_ID
-            self.subtype = self.subtype
             self.n_bits = n_bits
             self.src_ofs = src_ofs
             self.dst_ofs = dst_ofs
--

-- 
2.1.0

------------------------------------------------------------------------------
(Continue reading)

Jordi Baranda | 22 Jan 15:00 2015
Picon

Ryu integration with OpenStack

Dear all,


For a project in my organization they have asked me to integrate a SDN controller with OpenStack.
I have thought about Ryu due to the support of the different versions of Open Flow protocol and in fact I have seen that there is already an integration with OpenStack.

Nevertheless, making a more specific search, I have realised that the Ryu plug-in is going to dissappear in next release of OpenStack (kilo), but this is going to be replaced.
-What are the implications?
-Could we still use Ryu as SDN controller with OpenStack (and future releases)?
-Is it the valid way to configure the "Ryu plugin" as it is described in (https://github.com/osrg/ryu/wiki/Configuration-OpenStack-OFAgent-agent )?

-Could anyone share its experiences while integrating Ryu with OpenStack?

Thank you very much for your time and attention

With kind regards,

Jordi
------------------------------------------------------------------------------
New Year. New Location. New Benefits. New Data Center in Ashburn, VA.
GigeNET is offering a free month of service with a new server in Ashburn.
Choose from 2 high performing configs, both with 100TB of bandwidth.
Higher redundancy.Lower latency.Increased capacity.Completely compliant.
http://p.sf.net/sfu/gigenet
_______________________________________________
Ryu-devel mailing list
Ryu-devel@...
https://lists.sourceforge.net/lists/listinfo/ryu-devel
ZHAO Mingyu | 22 Jan 10:18 2015
Picon

issues about linc-swith and Ryu

Hi, Dear all,

 

I have two issues about linc-swtich and Ryu.

1.       I installed linc-switch in the Raspberry pi devices in Dec. 2013, and Ryu controller in a PC. The linc-switch can connect to the controller, and the Ryu controlled the linc-switch well.

I connected a host to a server through the linc-switch, and added the flow table to the linc-swith by the Ryu controller. The commands are as follows:

curl -X POST -d '{

    "dpid": 202481586003128,

    "cookie": 1,

    "cookie_mask": 1,

    "table_id": 0,

    "priority": 11111,

    "flags": 1,

    "match":{

        "in_port":3

    },

    "actions":[

        {

            "type":"OUTPUT",

            "port": 2

        }

    ]

}' http://localhost:8080/stats/flowentry/add

 

curl -X POST -d '{

    "dpid": 202481586003128,

    "cookie": 1,

    "cookie_mask": 1,

    "table_id": 0,

    "priority": 111111,

    "flags": 1,

    "match":{

        "in_port":2

    },

    "actions":[

        {

            "type":"OUTPUT",

            "port": 3

        }

    ]

}' http://localhost:8080/stats/flowentry/add

 

I can ping the host and server each other. But when I accessed the server, it always automatically downloaded the html file. If I connected directly the host to the server, it worked well.

 

2.       I’m not sure if the reason is that the linc-switch version is old, so I want to update it. While I updated(reinstalled) the latest linc-switch in the Raspberry pi in Jan. 2015, there is an error like this:

pi <at> raspberrypi ~/LINC-Switch $ sudo rel/linc/bin/linc console

Exec: /home/pi/LINC-Switch/rel/linc/erts-5.9.3.1/bin/erlexec -boot /home/pi/LINC-Switch/rel/linc/releases/1.0/linc -mode embedded -config /home/pi/LINC-Switch/rel/linc/releases/1.0/sys.config -args_file /home/pi/LINC-Switch/rel/linc/releases/1.0/vm.args -- console

Root: /home/pi/LINC-Switch/rel/linc

Erlang R15B03 (erts-5.9.3.1) [source] [async-threads:0] [kernel-poll:false]

 

18:18:55.861 [info] Application lager started on node linc <at> raspberrypi

18:18:55.870 [info] Application ssh started on node linc <at> raspberrypi

18:18:55.926 [info] Application enetconf started on node linc <at> raspberrypi

18:18:55.948 [error] CRASH REPORT Process <0.129.0> with 0 neighbours exited with reason: bad argument in call to lists:keyfind(port_no, 1, {queues,[]}) in linc_capable_sup:'-create_mapping_between_capable_and_logical_ports/2-lc$^0/1-0-'/2 line 164 in application_master:init/4 line 138

18:18:56.073 [info] Application linc exited with reason: bad argument in call to lists:keyfind(port_no, 1, {queues,[]}) in linc_capable_sup:'-create_mapping_between_capable_and_logical_ports/2-lc$^0/1-0-'/2 line 164

Eshell V5.9.3.1  (abort with ^G)

(linc <at> raspberrypi)1> {"Kernel pid terminated",application_controller,"{application_start_failure,linc,{bad_return,{{linc,start,[normal,[]]},{'EXIT',{badarg,[{lists,keyfind,[port_no,1,{queues,[]}],[]},{linc_capable_sup,'-create_mapping_between_capable_and_logical_ports/2-lc$^0/1-0-',2,[{file,[115,114,99,47,108,105,110,99,95,99,97,112,97,98,108,101,95,115,117,112,46,101,114,108]},{line,164}]},{linc_capable_sup,'-create_mapping_between_capable_and_logical_ports/0-lc$^0/1-0-',1,[{file,[115,114,99,47,108,105,110,99,95,99,97,112,97,98,108,101,95,115,117,112,46,101,114,108]},{line,159}]},{linc_capable_sup,start_link,0,[{file,[115,114,99,47,108,105,110,99,95,99,97,112,97,98,108,101,95,115,117,112,46,101,114,108]},{line,61}]},{application_master,start_it_old,4,[{file,[97,112,112,108,105,99,97,116,105,111,110,95,109,97,115,116,101,114,46,101,114,108]},{line,274}]}]}}}}}"}

 

Crash dump was written to: erl_crash.dump

Kernel pid terminated (application_controller) ({application_start_failure,linc,{bad_return,{{linc,start,[normal,[]]},{'EXIT',{badarg,[{lists,keyfind,[port_no,1,{queues,[]}],[]},{linc_capable_sup,'-

pi <at> raspberrypi ~/LINC-Switch $

 

Could you give some support?

thanks a lot!

 

Best regards

ZHAO Mingyu

 

------------------------------------------------------------------------------
New Year. New Location. New Benefits. New Data Center in Ashburn, VA.
GigeNET is offering a free month of service with a new server in Ashburn.
Choose from 2 high performing configs, both with 100TB of bandwidth.
Higher redundancy.Lower latency.Increased capacity.Completely compliant.
http://p.sf.net/sfu/gigenet
_______________________________________________
Ryu-devel mailing list
Ryu-devel@...
https://lists.sourceforge.net/lists/listinfo/ryu-devel
Jordi Baranda | 22 Jan 07:58 2015
Picon

Re: Avoid ARP flooding storm in a multipath topology

Hi Li Cheng,

Thank you very much for your contribution!
In fact, in my previous answer I was pointing out at your solution. Nevertheless, thanks for the link because I will have access to the latest version of the code.
Regarding your code, I have some doubts and I am afraid that I am not running it properly. Could you provide some hints about how to execute it?
For instance, have you tested in a loop topology? If that case we should add some module to compute routes, isn't it? How is the app to determine the path if there are multiples? Or do you insert the rules manually?

Regarding the LLDP storm I was commenting previously.... I want to mention that was a storm of packet-in requests generated by LLDP multicast messages, so in order to avoid this problem what I have done is to make a rule in my app to drop these packets. Similar to what you did Li Cheng for Ipv6 packets in the ARP proxy application. My idea is to get the topology information from the LinkAdd and LinkDelete events.What do you think?

Thanks again for your hints!

RyuJordiSDN

2015-01-22 3:15 GMT+01:00 李呈 <15116983550-9uewiaClKEY@public.gmane.org>:
Hi, long time ago, I had finished a simple application of avoiding ARP strom by ARP-PROXY, you can get it at:https://github.com/muzixing/ryu/blob/master/ryu/app/arp_proxy_13.py

 
------------------
Li Cheng 李呈
_____________________________________________________
School of Information and Communication Engineering
Beijing University of Posts and Telecommunications
Beijing 100876, PR China

北京邮电大学·信息与通信工程学院·通信工程
_____________________________________________________
Mobile Phone: 
(+86) 151-1698-3550 Beijing 
E-mail:
Homepage:
 


------------------ 原始邮件 ------------------
发件人: "Jordi Baranda"<jordi.baranda <at> gmail.com>;
发送时间: 2015年1月20日(星期二) 下午4:59
主题: [Ryu-devel] Avoid ARP flooding storm in a multipath topology

Dear all,

I am new in this world of SDN and based upon some comments on the net and I decided to start by using the Ryu/mininet/ovs friendly environment to start with it. After reading the Ryubook I am trying to develop my own application which tries to exploit the redundancy in a multipath topology to perform load balancing in a round robin fashion.
Then, I create the topology the following topology in mininet (sorry for the ASCII type draw)

h3 --- s3 -------- s4 ------- h4
         |             | 
         |             |
h1----s1-----------s2 ------- h2

When I run the simple_switch Ryu app, I started to see a lot of packet-in events. There was a storm of ARP broadcast packets which are overloading the controller. Reading in the Ryubook I saw that the spanning tree protocol handles this, but as far as I have understood this is not suitable to exploit multipath topologies.

Does anyone have an idea on how to avoid this storm of broadcast ARP requests?
My first approach was to cache the appearance of broadcast ARP classifying them by [datapath id (switch), src_ip, dst_ip]  with the hope that they were only broadcast once at each switch but I think I have not been able to properly  implement it.
I think the other problem is that I have to provide a route, isn't it? I was thinking on using the NetworkX library for such purpose.

Any hint will be welcome

Thank you very much for your time and attention

Jordi

------------------------------------------------------------------------------
New Year. New Location. New Benefits. New Data Center in Ashburn, VA.
GigeNET is offering a free month of service with a new server in Ashburn.
Choose from 2 high performing configs, both with 100TB of bandwidth.
Higher redundancy.Lower latency.Increased capacity.Completely compliant.
http://p.sf.net/sfu/gigenet
_______________________________________________
Ryu-devel mailing list
Ryu-devel@...
https://lists.sourceforge.net/lists/listinfo/ryu-devel
Che-Wei Lin | 22 Jan 05:28 2015
Picon

PyCon APAC/Taiwan 2015 Call for Proposals

Hi,  everyone

PyCon APAC/Taiwan 2015 is now calling for proposals.

Ryu is an OpenFlow Network Controller written in Python, which provides a framework to build your own Software Defined Network (SDN).

Network Programming and SDN is a suitable topic for PyCon

Currently PyCon APAC 2015 is Calling for proposals

Important Dates
Jan 19, 2015: Opening of Call for Proposals
Mar 17, 2015: Deadline for Proposal Submissions
Apr 07, 2015: Notification of Proposal Acceptance

I'm looking forward to seeing someone come to PyCon APAC 2015 Introduction Ryu or advanced use, the PyCon APAC will be held on June 5-7 in Taipei Taiwan, I hope you can come join PyCon. :)

for more detail see: https://tw.pycon.org/2015apac/en/


PyCon APAC PR staff

Che-Wei Lin,  John Lin
Institute of Communication Engineering,
National Tsing Hua University

Mobile: +886-952-301-269
------------------------------------------------------------------------------
New Year. New Location. New Benefits. New Data Center in Ashburn, VA.
GigeNET is offering a free month of service with a new server in Ashburn.
Choose from 2 high performing configs, both with 100TB of bandwidth.
Higher redundancy.Lower latency.Increased capacity.Completely compliant.
http://p.sf.net/sfu/gigenet
_______________________________________________
Ryu-devel mailing list
Ryu-devel@...
https://lists.sourceforge.net/lists/listinfo/ryu-devel
Che-Wei Lin | 22 Jan 04:32 2015
Picon

[PATCH] Add parsing libpcap and reading/writing PCAP file

Add parsing libpcap and reading/writing PCAP file for debugging.
This patch can easily dump the PCAP file in ryu controller.




---

Che-Wei Lin,  John Lin
Institute of Communication Engineering,
National Tsing Hua University
------------------------------------------------------------------------------
New Year. New Location. New Benefits. New Data Center in Ashburn, VA.
GigeNET is offering a free month of service with a new server in Ashburn.
Choose from 2 high performing configs, both with 100TB of bandwidth.
Higher redundancy.Lower latency.Increased capacity.Completely compliant.
http://p.sf.net/sfu/gigenet
_______________________________________________
Ryu-devel mailing list
Ryu-devel@...
https://lists.sourceforge.net/lists/listinfo/ryu-devel
Minoru TAKAHASHI | 22 Jan 01:27 2015
Picon

Re: Problem of port

Hi,

Please don't drop the mailing list of Ryu-devel.

On 2015年01月21日 18:27, 林彥宏 wrote:
> Thanks your helps
> But I don't know which function I have to add the code you told me.
> When it run to "flow.match['tcp_src']", it will show me an error.
> Could you send me a complete code?

OK.
Please check the attached files.

> 
> Thank you a lot.
> 
> 2015-01-15 14:01 GMT+08:00 Minoru TAKAHASHI
<takahashi.minoru7@... <mailto:takahashi.minoru7@...>>:
> 
>     Hi,
> 
>     On 2015年01月09日 18:15, 林彥宏 wrote:
>     > Hi,
>     >
>     > We got a problem to ask you.
>     >
>     > If we want to know which port that data comes in, where can we find it?
>     > Is it wrapped in ev?
>     >
>     > We tested SimpleMonitor.py and simple_switch_13.py using iperf.
>     > We can see ip and port while running simple_switch_13.py.
>     > The output is like ip=10.0.0.1 port=5001.
>     >
>     > However, the result of ip and port in SimpleMonitor.py is not what we want.
>     > We also use iperf to throw some data to a specific ip and port.
>     > We print out body, then we get  flow information inside body.
>     > The outcome of ip is correct, but port is something like 1, 2, or 3, seem like its number.
>     > Is it possible to get the real port in SimpleMonitor.py?
>     > Like http is 80, HTTPS is 8080.
> 
>     Information that simple monitor to get is the flow statistics and port statistics.
>     Details are described in the following.
> 
>     OFSpec1.3.4
>       7.3.5.6 Port Statistics
>       7.3.5.2 Individual Flow Statistics
> 
>     These statistics do not include transfer packet own information (TCP/IP/ETH...).
> 
>     > We are making a monitor that can track traffic on http, ftp and bt three ports.
>     > Can SImpleMonitor do this job for us? Or is there any better suggestions?
> 
>     Just an idea, if you want to track a packet of TCP_SRC=5001/8080,
>     and Why not try adding the following code.
>     (Sorry, this code is quick and dirty.)
> 
>      <at>  <at>  -98,6 +98,12  <at>  <at>  class SimpleSwitch13(app_manager.RyuApp):
> 
>              # install a flow to avoid packet_in next time
>              if out_port != ofproto.OFPP_FLOOD:
>     +
>     +            tcp_port = [5001,8080]
>     +            for port in tcp_port:
>     +                match = parser.OFPMatch(in_port=in_port, eth_dst=dst, tcp_src=port, ip_proto=6, eth_type=2048)
>     +                self.add_flow(datapath, 2, match, actions)
>     +
>                  match = parser.OFPMatch(in_port=in_port, eth_dst=dst)
> 
>      <at>  <at>  -63,6 +63,22  <at>  <at>  class SimpleMonitor(simple_switch_13.SimpleSwitch13):
>                                   stat.instructions[0].actions[0].port,
> 
>                                   stat.packet_count, stat.byte_count)
> 
> 
> 
>     +        self.logger.info <http://self.logger.info>('datapath         '
> 
>     +                         'tcp-src  in-port  eth-dst           '
> 
>     +                         'out-port packets  bytes')
> 
>     +        self.logger.info <http://self.logger.info>('---------------- '
> 
>     +                         '-------- -------- ----------------- '
> 
>     +                         '-------- -------- --------')
> 
>     +        for stat in sorted([flow for flow in body if flow.priority == 2],
> 
>     +                           key=lambda flow: (flow.match['tcp_src'],
> 
>     +                                             flow.match['in_port'],
> 
>     +                                             flow.match['eth_dst'])):
> 
>     +            self.logger.info <http://self.logger.info>('%016x %8d %8x %17s %8x %8d %8d',
> 
>     +                             ev.msg.datapath.id <http://ev.msg.datapath.id>,
> 
>     +                             stat.match['tcp_src'], stat.match['in_port'], stat.match['eth_dst'],
> 
>     +                             stat.instructions[0].actions[0].port,
> 
>     +                             stat.packet_count, stat.byte_count)
> 
>     +
> 
>           <at> set_ev_cls(ofp_event.EventOFPPortStatsReply, MAIN_DISPATCHER)
> 
>     Execution results are as follows.
> 
>     $ ryu-manager ./ryu/app/SimpleMonitor.py
>     ...
> 
>     datapath         in-port  eth-dst           out-port packets  bytes
>     ---------------- -------- ----------------- -------- -------- --------
>     0000000000000001        1 00:00:00:00:00:02        2        4      168
>     0000000000000001        2 00:00:00:00:00:01        1  1208886 56447642468
>     datapath         tcp-src  in-port  eth-dst           out-port packets  bytes
>     ---------------- -------- -------- ----------------- -------- -------- --------
>     0000000000000001     5001        1 00:00:00:00:00:02        2   582162 38491340
>     0000000000000001     5001        2 00:00:00:00:00:01        1        0        0
>     0000000000000001     8080        1 00:00:00:00:00:02        2        0        0
>     0000000000000001     8080        2 00:00:00:00:00:01        1        0        0
>     ....
> 
> 
>     Thanks
> 
>     >
>     > Code and screenshots are attached.
>     >
>     > thanks for your help!
>     >
>     > Best regards,
>     > David Lin
>     >
>     >
>     > ------------------------------------------------------------------------------
>     > Dive into the World of Parallel Programming! The Go Parallel Website,
>     > sponsored by Intel and developed in partnership with Slashdot Media, is your
>     > hub for all things parallel software development, from weekly thought
>     > leadership blogs to news, videos, case studies, tutorials and more. Take a
>     > look and join the conversation now. http://goparallel.sourceforge.net
>     >
>     >
>     >
>     > _______________________________________________
>     > Ryu-devel mailing list
>     > Ryu-devel@... <mailto:Ryu-devel@...>
>     > https://lists.sourceforge.net/lists/listinfo/ryu-devel
>     >
> 
> 
Attachment (SimpleMonitor.py): text/x-python, 4358 bytes
Attachment (simple_switch_13.py): text/x-python, 4837 bytes
------------------------------------------------------------------------------
New Year. New Location. New Benefits. New Data Center in Ashburn, VA.
GigeNET is offering a free month of service with a new server in Ashburn.
Choose from 2 high performing configs, both with 100TB of bandwidth.
Higher redundancy.Lower latency.Increased capacity.Completely compliant.
http://p.sf.net/sfu/gigenet
_______________________________________________
Ryu-devel mailing list
Ryu-devel@...
https://lists.sourceforge.net/lists/listinfo/ryu-devel
Andrew Niteesh | 21 Jan 16:40 2015
Picon

Controller Re-routing

Hi,

I am new RYU Controller, please clarify,

If I have a custom topology in mininet as mentioned below. 



Let's say if I am continuously pinging from H1 to H3, and now if  I shutdown the interface between Switch-1 and switch-2.
Does the RYU Controller is capable of re-routing (install a new flow) the packet, when a link goes down (link between S1 and S2)?

Thanks & Regards,
Andrew Niteesh
University of Houston
------------------------------------------------------------------------------
New Year. New Location. New Benefits. New Data Center in Ashburn, VA.
GigeNET is offering a free month of service with a new server in Ashburn.
Choose from 2 high performing configs, both with 100TB of bandwidth.
Higher redundancy.Lower latency.Increased capacity.Completely compliant.
http://p.sf.net/sfu/gigenet
_______________________________________________
Ryu-devel mailing list
Ryu-devel@...
https://lists.sourceforge.net/lists/listinfo/ryu-devel
Adarsh Kirnelli Rangaiah | 21 Jan 08:05 2015
Picon

rest_router.py application to configure static IP rules.

Hi all,

Any help in resolving this will be greatly appreciated.

I'm using the RYU controller with rest_router.py application to set  
address of interface and configure static rules onto pica8 switch in  
OVS mode. I have attached the network topology.

I have used the following REST APIs:

To set the address for interfaces

curl -X POST -d  
{"address":"10.0.2.1/24"}'http://10.0.20.15:8080/router/5e3e486e7302024e
curl -X POST -d  
{"address":"10.0.3.1/24"}'http://10.0.20.15:8080/router/5e3e486e7302024e

To configure routes

curl -X POST -d '{"destination":"10.0.1.11/24", "gateway":  
"10.0.2.22"}' http://10.0.20.15:8080/router/5e3e486e7302024e
curl -X POST -d '{"destination":"10.0.2.0/24", "gateway":  
"10.0.2.22"}' http://10.0.20.15:8080/router/5e3e486e7302024e
curl -X POST -d '{"destination":"10.0.3.0/24", "gateway":  
"10.0.3.41"}' http://10.0.20.15:8080/router/5e3e486e7302024e

Please let me know if i have used the right commands to configure?

With these configuration i was able to ping 10.0.2.1 and 10.0.3.1 from PC1.
But i'm NOT able to Ping from PC1 to PC4.

The pica8 sends ARP request to PC4 but the ARP reply from PC4 is not  
processed.
As a result the route table is not updated and the ICMP echo request  
is not sent from pica8.

Please let me know what have i missed here.

Thanks in advance.

Regards
Adarsh KR
------------------------------------------------------------------------------
New Year. New Location. New Benefits. New Data Center in Ashburn, VA.
GigeNET is offering a free month of service with a new server in Ashburn.
Choose from 2 high performing configs, both with 100TB of bandwidth.
Higher redundancy.Lower latency.Increased capacity.Completely compliant.
http://p.sf.net/sfu/gigenet
_______________________________________________
Ryu-devel mailing list
Ryu-devel@...
https://lists.sourceforge.net/lists/listinfo/ryu-devel
ISHIDA Wataru | 21 Jan 06:03 2015
Picon

[PATCH 0/6] bug fix of bmp server/client

These patches fix bug of bmp server/client reported by Tsuboi-san.

ISHIDA Wataru (6):
  bgp/bmp: send unmodified BGPUpdate to bmp server.
  bgp: don't hold withdrawn routes in adj_rib_in
  bmpstation: bug fix. stop closing fds which are in use.
  bgp: fix bug of NameError: global name 'sent_route' is not defined
  bgp: remove unnecessary bgp update construction
  bgp/cli: fix internel data destruction due to cli show command

 ryu/app/bmpstation.py                              |  2 -
 ryu/services/protocols/bgp/bmp.py                  | 50 +++++++++++++++++-----
 .../bgp/operator/commands/show/neighbor.py         |  2 +-
 ryu/services/protocols/bgp/peer.py                 | 16 ++++---
 4 files changed, 50 insertions(+), 20 deletions(-)

--

-- 
1.9.1

------------------------------------------------------------------------------
New Year. New Location. New Benefits. New Data Center in Ashburn, VA.
GigeNET is offering a free month of service with a new server in Ashburn.
Choose from 2 high performing configs, both with 100TB of bandwidth.
Higher redundancy.Lower latency.Increased capacity.Completely compliant.
http://p.sf.net/sfu/gigenet
Padma Jayasankar | 20 Jan 18:28 2015
Picon

Bufferid in messages

Hi,
  One basic doubt. Most of the simple_switch apps have this part of code
 # install a flow to avoid packet_in next time
        if out_port != ofproto.OFPP_FLOOD:
            match = parser.OFPMatch(in_port=in_port, eth_dst=dst)
            # verify if we have a valid buffer_id, if yes avoid to send both
            # flow_mod & packet_out
            if msg.buffer_id != ofproto.OFP_NO_BUFFER:
                self.add_flow(datapath, 1, match, actions, msg.buffer_id)
                return
            else:
                self.add_flow(datapath, 1, match, actions)
        data = None
        if msg.buffer_id == ofproto.OFP_NO_BUFFER:
            data = msg.data

In this they check msg.bufferid. When will the value of this be ofproto.OFP_NO_BUFFER:. What is its significance?
 If the message has valid bufferid the packetout message is not sent? why is it so? Please clarify

Thanks and Regards,
Padma V
------------------------------------------------------------------------------
New Year. New Location. New Benefits. New Data Center in Ashburn, VA.
GigeNET is offering a free month of service with a new server in Ashburn.
Choose from 2 high performing configs, both with 100TB of bandwidth.
Higher redundancy.Lower latency.Increased capacity.Completely compliant.
http://p.sf.net/sfu/gigenet
_______________________________________________
Ryu-devel mailing list
Ryu-devel@...
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Gmane