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