Hi Iwase,

Calling "neighbor_get()" function periodically may not suffice some of our
requirements.
The first method of "Calling it every time the update message arrives" is
more realistic.
SDN being program driven, I think we need something like
"packet_in_handler" for arrival of BGP Update packets so that applications
can handle the same.

Is the Ryu community working to enable/implement such a capability in the
near future?.

Thanks
Hadem



On Fri, Jan 19, 2018 at 6:18 AM, Iwase Yusuke <iwase.yusu...@gmail.com>
wrote:

> Hi Hadem,
>
>
> *How can i call my "neighbor_get()"function after the update messages are
>> received from the neighbor?. can we use any event to achieve this or any
>> other
>> ways?.*
>>
>
> Originally, when do you need to call "neighbor_get()" function?
> Every after the update message received? Periodically per N seconds?
>
> To achieve the former one, unfortunately, now Ryu has no event for such,
> only
> for notifying;
> - best patch changed due to new UPDATE received
> - peer up or down
> https://github.com/osrg/ryu/blob/8287e3513a780c2dbfe3003f6b6
> 32d819a0e792c/ryu/services/protocols/bgp/application.py#L145-L147
>
> For the latter one, how about spawn a new thread which calls
> "neighbor_get()"
> periodically?
>
>
> FYI, "application.py" can be integrated with your own application without
> directly modifying "application.py".
> http://ryu-iwase.readthedocs.io/en/doc-services_protocols_bg
> p_application/app/bgp_application.html#integration-with-other-applications
>
> Please note the above link is temporary, because this document is under
> reviewing on Ryu-devel and not yet merged to upstream. When merged, you
> can read
> this document from the "official" Ryu Documentation page.
>
>
> Thanks,
> Iwase
>
>
> On 2018年01月19日 01:55, Pynbiang Hadem wrote:
>
>> *Hi Iwase,*
>> *
>> *
>> *Yes you are right. The update messages from neighbor (10.0.0.2) was
>> received much later as can be seen in the output log file(BGPTest-h1.py)
>> attached herewith.*
>> *The update message received is as below:*
>> /Received msg from ('10.0.0.2', '55930') << BGPUpdate(len=106,nlri=[],path
>> _attributes=[BGPPathAttributeMpReachNLRI(afi=2,flags=128,
>> length=49,next_hop='::ffff:10.0.0.2',nlri=[LabelledVPNIP6AddrPrefix(addr=([101],
>> BGPTwoOctetAsRD(admin=65002,assigned=150,type=0),
>> '2001:db8:2::'),length=152)],safi=128,type=14),
>> BGPPathAttributeOrigin(flags=64,length=1,type=1,value=2),
>> BGPPathAttributeAsPath(flags=64,length=6,type=2,value=[[65002]]),
>> BGPPathAttributeMultiExitDisc(flags=128,length=4,type=4,value=100),
>> BGPPathAttributeExtendedCommunities(communities=[BGPTwoOctet
>> AsSpecificExtendedCommunity(as_number=65002,local_
>> administrator=150,subtype=2,type=0)],flags=192,length=8,
>> type=16)],total_path_attribute_len=83,type=2,withdrawn_
>> routes=[],withdrawn_routes_len=0)/
>> /Received route with RT ['65002:150'] that is of no interest to any VRFs
>> or Peers set(['65001:200', '65001:350', '65001:150', '65001:300',
>> '65001:100', '65001:250']). Ignoring paths from this UPDATE:
>> BGPUpdate(len=106,nlri=[],path_attributes=[BGPPathAttributeM
>> pReachNLRI(afi=2,flags=128,length=49,next_hop='::ffff:10.
>> 0.0.2',nlri=[LabelledVPNIP6AddrPrefix(addr=([101],
>> BGPTwoOctetAsRD(admin=65002,assigned=150,type=0),
>> '2001:db8:2::'),length=152)],safi=128,type=14),
>> BGPPathAttributeOrigin(flags=64,length=1,type=1,value=2),
>> BGPPathAttributeAsPath(flags=64,length=6,type=2,value=[[65002]]),
>> BGPPathAttributeMultiExitDisc(flags=128,length=4,type=4,value=100),
>> BGPPathAttributeExtendedCommunities(communities=[BGPTwoOctet
>> AsSpecificExtendedCommunity(as_number=65002,local_
>> administrator=150,subtype=2,type=0)],flags=192,length=8,
>> type=16)],total_path_attribute_len=83,type=2,withdrawn_
>> routes=[],withdrawn_routes_len=0)/
>> /Received msg from ('10.0.0.2', '55930') << BGPUpdate(len=76,nlri=[],path_
>> attributes=[BGPPathAttributeMpReachNLRI(afi=2,flags=128,
>> length=30,next_hop='::ffff:10.0.0.2',nlri=[IP6AddrPrefix(
>> addr='2001:db8:1::',length=64)],safi=1,type=14),
>> BGPPathAttributeOrigin(flags=64,length=1,type=1,value=0),
>> BGPPathAttributeAsPath(flags=64,length=6,type=2,value=[[65002]]),
>> BGPPathAttributeMultiExitDisc(flags=128,length=4,type=4,valu
>> e=100)],total_path_attribute_len=53,type=2,withdrawn_
>> routes=[],withdrawn_routes_len=0) /
>>
>> *How can i call my "neighbor_get()"function after the update messages are
>> received from the neighbor?. can we use any event to achieve this or any
>> other ways?.*
>>
>> Thanks
>> Hadem
>>
>> On Wed, Jan 17, 2018 at 4:57 AM, Iwase Yusuke <iwase.yusu...@gmail.com
>> <mailto:iwase.yusu...@gmail.com>> wrote:
>>
>>     Hi Hadem,
>>
>>     In that case, you need to call "neighbor_get()" after connections to
>> neighbor(s)
>>     established and received some routes.
>>     It seems that Ryu just returns a empty list because Ryu does not yet
>> received
>>     any routes from neighbors.
>>
>>     Thanks,
>>     Iwase
>>
>>
>>     On 2018年01月15日 17:48, Pynbiang Hadem wrote:
>>
>>         Hi Iwase,
>>
>>         Precisely, i actually wanted to get *adj-RIB-in* information.
>>
>>         Is there any problem with my code while trying to achieve this?.
>>
>>         Thanks
>>         Hadem
>>
>>
>>         On Mon, Jan 15, 2018 at 5:38 AM, Iwase Yusuke <
>> iwase.yusu...@gmail.com
>>         <mailto:iwase.yusu...@gmail.com> <mailto:iwase.yusu...@gmail.com
>>         <mailto:iwase.yusu...@gmail.com>>> wrote:
>>
>>              Hi Hadem,
>>
>>              It is depending on what you want to get though, you attempt
>> to get
>>         neighbors
>>              information, right?
>>              In that case, you should use "neighbors_get()" (plural form)
>> instead of
>>              "neighbor_get()".
>>         http://ryu.readthedocs.io/en/latest/library_bgp_speaker_ref.
>> html#ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.neighbors_get
>>         <http://ryu.readthedocs.io/en/latest/library_bgp_speaker_ref
>> .html#ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.neighbors_get>
>>                     <http://ryu.readthedocs.io/en/
>> latest/library_bgp_speaker_ref.html#ryu.services.protocols.
>> bgp.bgpspeaker.BGPSpeaker.neighbors_get
>>         <http://ryu.readthedocs.io/en/latest/library_bgp_speaker_ref
>> .html#ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.neighbors_get>>
>>
>>              With "neighbor_get()" with "route_type='received-routes'",
>> Ryu
>>         should return the
>>              adj-RIB-in information and I guess it is always an empty
>> list when
>>         starting up
>>              (connections are not established with neighbors).
>>
>>
>>              Thanks,
>>              Iwase
>>
>>
>>              On 2018年01月13日 00:59, Pynbiang Hadem wrote:
>>
>>                  Hi Iwase,
>>
>>                  I've made the modifications accordingly. *Now i am able
>> to see the
>>                  output for vrfs_get() and rib_get()*. *However there is
>> still
>>         no output
>>                  for neighbor_get() . ---output is in **BGPTest-output.py*
>>                  *Pls advice how to get the output for neighbor_get().*
>>                  *Enclosed herewith: (1) modified bgpapplication1.py & (2)
>>         BGPTest-output.py*
>>
>>                  Thanks
>>                  Hadem
>>
>>
>>
>>
>>
>>                  On Fri, Jan 12, 2018 at 7:36 AM, Iwase Yusuke
>>         <iwase.yusu...@gmail.com <mailto:iwase.yusu...@gmail.com>
>>                  <mailto:iwase.yusu...@gmail.com
>>         <mailto:iwase.yusu...@gmail.com>> <mailto:iwase.yusu...@gmail.com
>>
>>         <mailto:iwase.yusu...@gmail.com>
>>
>>                  <mailto:iwase.yusu...@gmail.com
>>         <mailto:iwase.yusu...@gmail.com>>>> wrote:
>>
>>                       Hi Hadem,
>>
>>                       First, the return value for each BGPSpeaker's API
>> (with
>>                  format="json") is str
>>                       type value.
>>                       Why you need to split them like;
>>                            vrf_result = self.speaker.vrfs_get('routes',
>> None,
>>         'all', 'json')
>>                            nowtime = vrf_result[0]  # <--- ?
>>                            result = vrf_result[1]   # <--- ?
>>
>>                       And, please confirm the meaning of each argument
>> when
>>         calling         BGPSpeaker's
>>                       APIs.
>>                       For example, to getting all VRF configurations, you
>> need
>>         to specify
>>                  "summary"
>>                       instead of "routes".
>>         http://ryu.readthedocs.io/en/latest/library_bgp_speaker_ref.
>> html#ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.vrfs_get
>>         <http://ryu.readthedocs.io/en/latest/library_bgp_speaker_ref
>> .html#ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.vrfs_get>
>>                         <http://ryu.readthedocs.io/en/
>> latest/library_bgp_speaker_ref.html#ryu.services.protocols.
>> bgp.bgpspeaker.BGPSpeaker.vrfs_get
>>         <http://ryu.readthedocs.io/en/latest/library_bgp_speaker_ref
>> .html#ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.vrfs_get>>
>>                                     <http://ryu.readthedocs.io/en/
>> latest/library_bgp_speaker_ref.html#ryu.services.protocols.
>> bgp.bgpspeaker.BGPSpeaker.vrfs_get
>>         <http://ryu.readthedocs.io/en/latest/library_bgp_speaker_ref
>> .html#ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.vrfs_get>
>>                         <http://ryu.readthedocs.io/en/
>> latest/library_bgp_speaker_ref.html#ryu.services.protocols.
>> bgp.bgpspeaker.BGPSpeaker.vrfs_get
>>         <http://ryu.readthedocs.io/en/latest/library_bgp_speaker_ref
>> .html#ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.vrfs_get>>>
>>
>>                       Thanks,
>>                       Iwase
>>
>>
>>                       On 2018年01月11日 21:55, Pynbiang Hadem wrote:
>>
>>                           *Hi,*
>>                           *
>>                           *
>>                           *I am getting blank output for BGPSpeaker
>> show_vrf,
>>         show_rib,
>>                           show_neighbor. The partial output is as below:*
>>                                          -----------------------------
>> -----
>>                           /Sending MED Update Message.../
>>                           /Send BGP UPDATE Message for changing MED[100]/
>>                           /API method neighbor.update called with args:
>>         {'ip_address':
>>                  '10.0.0.2',
>>                           'changes': {'multi_exit_disc': 100}}/
>>                           /on_update_med fired/
>>                           /MED value for neigh: Neighbor: 10.0.0.2
>> updated to 100/
>>                           /Calling get VRFs Information .../
>>                           /Shows BGP VRF information in a json format/
>>                           /API method operator.show called with args:
>> {'params':
>>         ['vrf',
>>                  'routes',
>>                           'all'], 'format': 'json'}/
>>                           /+++++++++++++++++++++++++++++++/
>>                           /{ : Show VRFs /
>>                           /+++++++++++++++++++++++++++++++/
>>                           /"/
>>                           /
>>                           /
>>                           /Calling SHOW RIB .../
>>                           /Shows BGP routing information in a json format/
>>                           /API method operator.show called with args:
>> {'params':
>>         ['rib',
>>                  'all'],
>>                           'format': 'json'}/
>>                           /+++++++++++++++++++++++++++++++/
>>                           /{ : Show rib /
>>                           /+++++++++++++++++++++++++++++++/
>>                           /"/
>>                           /
>>                           /
>>                           /Calling SHOW Neighbor.../
>>                           /Inside Show Neighbor BGP UPDATE Message/
>>                           /API method operator.show called with args:
>> {'params':
>>         ['neighbor',
>>                           'received-routes', '10.0.0.2', 'all'],
>> 'format': 'json'}/
>>                           /[]/
>>                           /+++++++++++++++++++++++++++++++/
>>                           /[ : Show neighbor /
>>                           /+++++++++++++++++++++++++++++++/
>>                           /]/
>>                                           ------------------------------
>> ------------
>>
>>                           *I am attaching herewith my BGP application
>>                  file(bgpapplication1.py). *
>>                           *Pls let me know what mistake i have done and
>> how to
>>         display
>>                  the above
>>                           details.*
>>                           *
>>                           *
>>                           *Thanks*
>>                           *Hadem*
>>
>>
>>
>>
>>                                         ------------------------------
>> ------------------------------------------------
>>                           Check out the vibrant tech community on one of
>> the
>>         world's most
>>                           engaging tech sites, Slashdot.org!
>>         http://sdm.link/slashdot
>>
>>
>>
>>                           _______________________________________________
>>                           Ryu-devel mailing list
>>         Ryu-devel@lists.sourceforge.net <mailto:Ryu-devel@lists.source
>> forge.net>
>>         <mailto:Ryu-devel@lists.sourceforge.net
>>         <mailto:Ryu-devel@lists.sourceforge.net>>
>>                  <mailto:Ryu-devel@lists.sourceforge.net
>>         <mailto:Ryu-devel@lists.sourceforge.net>
>>                  <mailto:Ryu-devel@lists.sourceforge.net
>>         <mailto:Ryu-devel@lists.sourceforge.net>>>
>>         https://lists.sourceforge.net/lists/listinfo/ryu-devel
>>         <https://lists.sourceforge.net/lists/listinfo/ryu-devel>
>>                  <https://lists.sourceforge.net/lists/listinfo/ryu-devel
>>         <https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
>>                                  <https://lists.sourceforge.ne
>> t/lists/listinfo/ryu-devel
>>         <https://lists.sourceforge.net/lists/listinfo/ryu-devel>
>>                  <https://lists.sourceforge.net/lists/listinfo/ryu-devel
>>         <https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
>>
>>
>>
>>
>>                         ------------------------------
>> ------------------------------------------------
>>                  Check out the vibrant tech community on one of the
>> world's most
>>                  engaging tech sites, Slashdot.org!
>> http://sdm.link/slashdot
>>
>>
>>
>>                  _______________________________________________
>>                  Ryu-devel mailing list
>>         Ryu-devel@lists.sourceforge.net <mailto:Ryu-devel@lists.source
>> forge.net>
>>         <mailto:Ryu-devel@lists.sourceforge.net
>>         <mailto:Ryu-devel@lists.sourceforge.net>>
>>         https://lists.sourceforge.net/lists/listinfo/ryu-devel
>>         <https://lists.sourceforge.net/lists/listinfo/ryu-devel>
>>                  <https://lists.sourceforge.net/lists/listinfo/ryu-devel
>>         <https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
>>
>>
>>
>>
>>         ------------------------------------------------------------
>> ------------------
>>         Check out the vibrant tech community on one of the world's most
>>         engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>>
>>
>>
>>         _______________________________________________
>>         Ryu-devel mailing list
>>         Ryu-devel@lists.sourceforge.net <mailto:Ryu-devel@lists.source
>> forge.net>
>>         https://lists.sourceforge.net/lists/listinfo/ryu-devel
>>         <https://lists.sourceforge.net/lists/listinfo/ryu-devel>
>>
>>
>>
>>
>> ------------------------------------------------------------
>> ------------------
>> Check out the vibrant tech community on one of the world's most
>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>>
>>
>>
>> _______________________________________________
>> Ryu-devel mailing list
>> Ryu-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/ryu-devel
>>
>>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to