On Sun, 16 Nov 2014 10:39:42 +0900
Toshiki Tsuboi <[email protected]> wrote:

> RyuBGP doesn't work well regarding the advertisement of BGP MED Attribute as 
> follows.
> 
> (1) In spite of receiving BGP MED:"500" from iBGP(R2), RyuBGP can't advertise 
> BGP MED:"100" to eBGP(R3).
> 
>     R1 -------------> R2 -------------> RyuBGP -------------> R3
>        eBGP(MED:500)     iBGP(MED:500)    ^     eBGP(MED:500)
>                                        (MED:100)
> 
> (2) When RyuBGP has received BGP MED:"200" from eBGP(R3), RyuBGP has sended 
> BGP with missing-MED to iBGP(R2).
>     As result, PolicyBaseRouting in R2(other RyuBGP) doesn't work properly 
> becase of selecting wrong BestPath.
> 
>                    eBGP(MED:100)
>     R1 ------------------------------------>+
>                                             |
>     R3 -------------> RyuBGP -------------> R2(RyuBGP) => Wrong result 
> [BestPath is "R3-R2"]
>        eBGP(MED:200)          iBGP(MED:N/A)
> 
> Signed-off-by: Toshiki Tsuboi <[email protected]>
> ---
>  ryu/services/protocols/bgp/peer.py | 10 +++++++---
>  1 file changed, 7 insertions(+), 3 deletions(-)

Thanks a lot, applied!

> diff --git a/ryu/services/protocols/bgp/peer.py 
> b/ryu/services/protocols/bgp/peer.py
> index eac098c..48806bc 100644
> --- a/ryu/services/protocols/bgp/peer.py
> +++ b/ryu/services/protocols/bgp/peer.py
> @@ -75,6 +75,7 @@ from ryu.lib.packet.bgp import 
> BGPPathAttributeExtendedCommunities
>  from ryu.lib.packet.bgp import BGPPathAttributeMpReachNLRI
>  from ryu.lib.packet.bgp import BGPPathAttributeMpUnreachNLRI
>  from ryu.lib.packet.bgp import BGPPathAttributeCommunities
> +from ryu.lib.packet.bgp import BGPPathAttributeMultiExitDisc
>  
>  from ryu.lib.packet.bgp import BGP_ATTR_TYPE_ORIGIN
>  from ryu.lib.packet.bgp import BGP_ATTR_TYPE_AS_PATH
> @@ -940,12 +941,15 @@ class Peer(Source, Sink, NeighborConfListener, 
> Activity):
>              # For eBGP session we can send multi-exit-disc if configured.
>              multi_exit_disc = None
>              if self.is_ebgp_peer():
> -                multi_exit_disc = pathattr_map.get(
> -                    BGP_ATTR_TYPE_MULTI_EXIT_DISC)
> -                if not multi_exit_disc and self._neigh_conf.multi_exit_disc:
> +                if self._neigh_conf.multi_exit_disc:
>                      multi_exit_disc = BGPPathAttributeMultiExitDisc(
>                          self._neigh_conf.multi_exit_disc
>                      )
> +                else:
> +                    pass

Looks like we remove 'pass' and move the below code here?

> +            if not self.is_ebgp_peer():
> +                multi_exit_disc = pathattr_map.get(
> +                    BGP_ATTR_TYPE_MULTI_EXIT_DISC)
>  
>              # LOCAL_PREF Attribute.
>              if not self.is_ebgp_peer():
> -- 
> 1.9.1
> 
> 
> ------------------------------------------------------------------------------
> Comprehensive Server Monitoring with Site24x7.
> Monitor 10 servers for $9/Month.
> Get alerted through email, SMS, voice calls or mobile push notifications.
> Take corrective actions from your mobile device.
> http://pubads.g.doubleclick.net/gampad/clk?id=154624111&iu=/4140/ostg.clktrk
> _______________________________________________
> Ryu-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/ryu-devel

------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to