Module Expr Str Import alias ImportFrom alias ImportFrom alias ImportFrom alias ImportFrom alias ImportFrom alias ImportFrom alias ImportFrom alias ImportFrom alias ImportFrom alias ImportFrom alias ImportFrom alias ImportFrom alias ImportFrom alias ImportFrom alias Assign NameStore Call AttributeLoad NameLoad attr Str ClassDef bases NameLoad body Expr Str Pass decorator_list Call NameLoad keyword NameLoad keyword Num keyword Str ClassDef bases NameLoad body Expr Str Assign NameStore Num Assign NameStore Call AttributeLoad NameLoad attr keyword Str keyword Str FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad body Expr Call AttributeLoad NameLoad attr NameLoad Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr Call AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr Call AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr Call AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr BoolOpOr NameLoad AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults vararg kwarg body While NameLoad body Expr Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr If Call AttributeLoad AttributeLoad NameLoad attr attr body Expr Call AttributeLoad AttributeLoad NameLoad attr attr Expr Call AttributeLoad AttributeLoad NameLoad attr attr orelse Expr Call AttributeLoad NameLoad attr Num decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Num Expr Call AttributeLoad NameLoad attr Str While BoolOpAnd CompareLt NameLoad AttributeLoad NameLoad attr UnaryOpNot Call AttributeLoad AttributeLoad NameLoad attr attr body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr If NameLoad body Expr Call AttributeLoad NameLoad attr AugAssignAdd NameStore Num decorator_list FunctionDef arguments args NameParam defaults body Expr Call AttributeLoad NameLoad attr Str If Call AttributeLoad AttributeLoad NameLoad attr attr body Return orelse Assign NameStore NameLoad While UnaryOpNot Call AttributeLoad AttributeLoad NameLoad attr attr body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr If NameLoad body Expr Call AttributeLoad NameLoad attr Assign NameStore NameLoad If NameLoad body Expr Call AttributeLoad AttributeLoad NameLoad attr attr decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str If UnaryOpNot NameLoad body Raise Call NameLoad BinOpMod Str NameLoad Assign NameStore AttributeLoad NameLoad attr If CompareEq AttributeLoad NameLoad attr NameLoad body Assign NameStore AttributeLoad NameLoad attr If UnaryOpNot Call AttributeLoad NameLoad attr NameLoad body Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad AttributeLoad NameLoad attr attr decorator_list decorator_list Assign NameStore Str Assign NameStore Str Assign NameStore Str Assign NameStore Str Assign NameStore Str Assign NameStore Str Assign NameStore Str Assign NameStore Str Assign NameStore Str Assign NameStore Str Assign NameStore Str Assign NameStore Str FunctionDef arguments args NameParam NameParam defaults body Expr Str If CompareEq AttributeLoad NameLoad attr AttributeLoad NameLoad attr body If CompareGt AttributeLoad NameLoad attr AttributeLoad NameLoad attr body Return NameLoad orelse Return NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str Assign NameStore NameLoad Assign NameStore NameLoad If CompareIs NameLoad NameLoad body Assign NameStore Call NameLoad NameLoad NameLoad Assign NameStore NameLoad If CompareIs NameLoad NameLoad body Assign NameStore Call NameLoad NameLoad NameLoad Assign NameStore NameLoad If CompareIs NameLoad NameLoad body Assign NameStore Call NameLoad NameLoad NameLoad Assign NameStore NameLoad If CompareIs NameLoad NameLoad body Assign NameStore Call NameLoad NameLoad NameLoad Assign NameStore NameLoad If CompareIs NameLoad NameLoad body Assign NameStore Call NameLoad NameLoad NameLoad Assign NameStore NameLoad If CompareIs NameLoad NameLoad body Assign NameStore Call NameLoad NameLoad NameLoad Assign NameStore NameLoad If CompareIs NameLoad NameLoad body Assign NameStore Call NameLoad NameLoad NameLoad Assign NameStore NameLoad If CompareIs NameLoad NameLoad body Assign NameStore Call NameLoad NameLoad NameLoad NameLoad Assign NameStore NameLoad If CompareIs NameLoad NameLoad body Assign NameStore Call NameLoad NameLoad NameLoad Assign NameStore NameLoad If CompareIs NameLoad NameLoad body Assign NameStore Call NameLoad NameLoad NameLoad NameLoad Assign NameStore NameLoad If CompareIs NameLoad NameLoad body Assign NameStore NameLoad Return TupleLoad NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad If UnaryOpNot BoolOpAnd NameLoad NameLoad body Return NameLoad Assign NameStore AttributeLoad NameLoad attr Assign NameStore AttributeLoad NameLoad attr If CompareGt NameLoad NameLoad body Return NameLoad orelse If CompareGt NameLoad NameLoad body Return NameLoad orelse Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str If CompareEq AttributeLoad NameLoad attr AttributeLoad NameLoad attr body Return NameLoad If CompareIs AttributeLoad NameLoad attr NameLoad body Return NameLoad If CompareIs AttributeLoad NameLoad attr NameLoad body Return NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assert BoolOpAnd NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad NameLoad attr Assert BoolOpAnd CompareIsNot NameLoad NameLoad CompareIsNot NameLoad NameLoad If CompareGt NameLoad NameLoad body Return NameLoad orelse If CompareGt NameLoad NameLoad body Return NameLoad orelse Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str FunctionDef arguments args NameParam defaults body If CompareEq AttributeLoad NameLoad attr NameLoad body Return Num orelse If CompareEq AttributeLoad NameLoad attr NameLoad body Return Num orelse If CompareEq AttributeLoad NameLoad attr NameLoad body Return Num orelse Expr Call AttributeLoad NameLoad attr Str NameLoad Return Num decorator_list Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assert BoolOpAnd CompareIsNot NameLoad NameLoad CompareIsNot NameLoad NameLoad If CompareEq AttributeLoad NameLoad attr AttributeLoad NameLoad attr body Return NameLoad Assign NameStore Call NameLoad NameLoad Assign NameStore Call NameLoad NameLoad If CompareEq NameLoad NameLoad body Return NameLoad orelse If CompareGt NameLoad NameLoad body Return NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr NameLoad If UnaryOpNot NameLoad body Return Num Return AttributeLoad NameLoad attr decorator_list Assign NameStore Call NameLoad NameLoad Assign NameStore Call NameLoad NameLoad If CompareEq NameLoad NameLoad body Return NameLoad orelse If CompareLt NameLoad NameLoad body Return NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str FunctionDef arguments args NameParam defaults body Assign NameStore NameLoad If CompareIs AttributeLoad NameLoad attr NameLoad body Assign NameStore NameLoad orelse Assign NameStore AttributeLoad AttributeLoad NameLoad attr attr Return NameLoad decorator_list Assign NameStore Call NameLoad NameLoad Assign NameStore Call NameLoad NameLoad If BoolOpAnd CompareEq NameLoad NameLoad CompareNotEq NameLoad NameLoad body Return NameLoad If BoolOpAnd CompareEq NameLoad NameLoad CompareNotEq NameLoad NameLoad body Return NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str FunctionDef arguments args NameParam defaults body If CompareIs NameLoad NameLoad body Return NameLoad orelse Return AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam defaults body If CompareIs NameLoad NameLoad body Return NameLoad orelse Return AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr decorator_list Assign NameStore AttributeLoad NameLoad attr Assign NameStore AttributeLoad NameLoad attr If BoolOpAnd CompareIs NameLoad NameLoad CompareIs NameLoad NameLoad body Return NameLoad Assign NameStore Call NameLoad NameLoad Assign NameStore Call NameLoad NameLoad Assign NameStore CompareNotEq NameLoad NameLoad Assign NameStore CompareNotEq NameLoad NameLoad If BoolOpAnd NameLoad NameLoad body Return NameLoad If BoolOpOr BoolOpAnd CompareIs NameLoad NameLoad CompareIs NameLoad NameLoad BoolOpAnd CompareIs NameLoad NameLoad CompareIs NameLoad NameLoad body Raise Call NameLoad Str If CompareIsNot NameLoad NameLoad body Assign NameStore AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr orelse Assign NameStore AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr Assign NameStore Call NameLoad NameLoad NameLoad Assign NameStore Call NameLoad NameLoad NameLoad If CompareEq NameLoad NameLoad body Return NameLoad ImportFrom alias If CompareLt Call NameLoad NameLoad Call NameLoad NameLoad body Return NameLoad orelse Return NameLoad decorator_list
N/A N/A 
 Module related to processing bgp paths.
 N/A logging ryu.services.protocols.bgp.base Activity ryu.services.protocols.bgp.base add_bgp_error_metadata ryu.services.protocols.bgp.base BGP_PROCESSOR_ERROR_CODE ryu.services.protocols.bgp.base BGPSException ryu.services.protocols.bgp.utils circlist ryu.services.protocols.bgp.utils.evtlet EventletIOFactory ryu.lib.packet.bgp RF_RTC_UC ryu.lib.packet.bgp BGP_ATTR_TYPE_AS_PATH ryu.lib.packet.bgp BGP_ATTR_TYPE_LOCAL_PREF ryu.lib.packet.bgp BGP_ATTR_TYPE_MULTI_EXIT_DISC ryu.lib.packet.bgp BGP_ATTR_TYPE_ORIGIN ryu.lib.packet.bgp BGP_ATTR_ORIGIN_IGP ryu.lib.packet.bgp BGP_ATTR_ORIGIN_EGP ryu.lib.packet.bgp BGP_ATTR_ORIGIN_INCOMPLETE N/A LOG N/A N/A logging getLogger bgpspeaker.processor BgpProcessorError N/A BGPSException N/A N/A Base exception related to all destination path processing errors.
     N/A N/A N/A add_bgp_error_metadata code BGP_PROCESSOR_ERROR_CODE sub_code 1 def_desc Error occurred when processing bgp destination. BgpProcessor N/A Activity N/A N/A Worker that processes queued `Destination'.

    `Destination` that have updates related to its paths need to be
    (re)processed. Only one instance of this processor is enough for normal
    cases. If you want more control on which destinations get processed faster
    compared to other destinations, you can create several instance of this
    works to achieve the desired work flow.
     N/A MAX_DEST_PROCESSED_PER_CYCLE 100 N/A _DestQueue N/A N/A circlist CircularListType next_attr_name next_dest_to_process prev_attr_name prev_dest_to_process __init__ N/A N/A self core_service work_units_per_cycle N/A None N/A N/A N/A N/A Activity __init__ self N/A N/A self _core_service core_service N/A N/A self _dest_queue N/A N/A BgpProcessor _DestQueue N/A N/A self _rtdest_queue N/A N/A BgpProcessor _DestQueue N/A N/A self dest_que_evt N/A N/A EventletIOFactory create_custom_event N/A N/A self work_units_per_cycle N/A work_units_per_cycle N/A BgpProcessor MAX_DEST_PROCESSED_PER_CYCLE N/A _run N/A N/A self N/A args kwargs N/A N/A True N/A N/A N/A N/A LOG debug Starting new processing run... N/A N/A N/A self _process_rtdest N/A N/A N/A self _process_dest N/A N/A N/A N/A self _dest_queue is_empty N/A N/A N/A N/A N/A self dest_que_evt clear N/A N/A N/A N/A self dest_que_evt wait N/A N/A N/A N/A self pause 0 N/A _process_dest N/A N/A self N/A N/A N/A dest_processed 0 N/A N/A N/A LOG debug Processing destination... N/A N/A N/A dest_processed N/A self work_units_per_cycle N/A N/A N/A N/A self _dest_queue is_empty N/A N/A next_dest N/A N/A N/A self _dest_queue pop_first N/A next_dest N/A N/A N/A N/A next_dest process N/A dest_processed 1 N/A _process_rtdest N/A N/A self N/A N/A N/A N/A N/A LOG debug Processing RT NLRI destination... N/A N/A N/A N/A self _rtdest_queue is_empty N/A N/A N/A N/A processed_any False N/A N/A N/A N/A N/A self _rtdest_queue is_empty N/A N/A next_dest N/A N/A N/A self _rtdest_queue pop_first N/A next_dest N/A N/A N/A N/A next_dest process N/A processed_any True N/A processed_any N/A N/A N/A N/A N/A self _core_service update_rtfilters N/A enqueue N/A N/A self destination N/A N/A N/A Enqueues given destination for processing.

        Given instance should be a valid destination.
         N/A N/A destination N/A N/A N/A BgpProcessorError N/A Invalid destination %s. destination N/A dest_queue N/A self _dest_queue N/A N/A N/A destination route_family RF_RTC_UC N/A N/A dest_queue N/A self _rtdest_queue N/A N/A N/A N/A dest_queue is_on_list destination N/A N/A N/A N/A dest_queue append destination N/A N/A N/A N/A self dest_que_evt set N/A N/A N/A BPR_UNKNOWN Unknown N/A BPR_ONLY_PATH Only Path N/A BPR_REACHABLE_NEXT_HOP Reachable Next Hop N/A BPR_HIGHEST_WEIGHT Highest Weight N/A BPR_LOCAL_PREF Local Pref N/A BPR_LOCAL_ORIGIN Local Origin N/A BPR_ASPATH AS Path N/A BPR_ORIGIN Origin N/A BPR_MED MED N/A BPR_ASN ASN N/A BPR_IGP_COST IGP Cost N/A BPR_ROUTER_ID Router ID _compare_by_version N/A N/A path1 path2 N/A N/A N/A Returns the current/latest learned path.

    Checks if given paths are from same source/peer and then compares their
    version number to determine which path is received later. If paths are from
    different source/peer return None.
     N/A N/A N/A path1 source N/A path2 source N/A N/A N/A N/A path1 source_version_num N/A path2 source_version_num N/A N/A path1 N/A N/A path2 N/A None N/A compute_best_path N/A N/A local_asn path1 path2 N/A N/A N/A Compares given paths and returns best path.

    Parameters:
        -`local_asn`: asn of local bgpspeaker
        -`path1`: first path to compare
        -`path2`: second path to compare

    Best path processing will involve following steps:
    1.  Select a path with a reachable next hop.
    2.  Select the path with the highest weight.
    3.  If path weights are the same, select the path with the highest
        local preference value.
    4.  Prefer locally originated routes (network routes, redistributed
        routes, or aggregated routes) over received routes.
    5.  Select the route with the shortest AS-path length.
    6.  If all paths have the same AS-path length, select the path based
        on origin: IGP is preferred over EGP; EGP is preferred over
        Incomplete.
    7.  If the origins are the same, select the path with lowest MED
        value.
    8.  If the paths have the same MED values, select the path learned
        via EBGP over one learned via IBGP.
    9.  Select the route with the lowest IGP cost to the next hop.
    10. Select the route received from the peer with the lowest BGP
        router ID.

    Returns None if best-path among given paths cannot be computed else best
    path.
    Assumes paths from NC has source equal to None.
     N/A best_path None N/A best_path_reason BPR_UNKNOWN N/A N/A best_path None N/A N/A best_path N/A _cmp_by_reachable_nh path1 path2 N/A best_path_reason BPR_REACHABLE_NEXT_HOP N/A N/A best_path None N/A N/A best_path N/A _cmp_by_higest_wg path1 path2 N/A best_path_reason BPR_HIGHEST_WEIGHT N/A N/A best_path None N/A N/A best_path N/A _cmp_by_local_pref path1 path2 N/A best_path_reason BPR_LOCAL_PREF N/A N/A best_path None N/A N/A best_path N/A _cmp_by_local_origin path1 path2 N/A best_path_reason BPR_LOCAL_ORIGIN N/A N/A best_path None N/A N/A best_path N/A _cmp_by_aspath path1 path2 N/A best_path_reason BPR_ASPATH N/A N/A best_path None N/A N/A best_path N/A _cmp_by_origin path1 path2 N/A best_path_reason BPR_ORIGIN N/A N/A best_path None N/A N/A best_path N/A _cmp_by_med path1 path2 N/A best_path_reason BPR_MED N/A N/A best_path None N/A N/A best_path N/A _cmp_by_asn local_asn path1 path2 N/A best_path_reason BPR_ASN N/A N/A best_path None N/A N/A best_path N/A _cmp_by_igp_cost path1 path2 N/A best_path_reason BPR_IGP_COST N/A N/A best_path None N/A N/A best_path N/A _cmp_by_router_id local_asn path1 path2 N/A best_path_reason BPR_ROUTER_ID N/A N/A best_path None N/A N/A best_path_reason BPR_UNKNOWN N/A N/A best_path best_path_reason N/A _cmp_by_reachable_nh N/A N/A path1 path2 N/A N/A N/A Compares given paths and selects best path based on reachable next-hop.

    If no path matches this criteria, return None.
     N/A None N/A _cmp_by_higest_wg N/A N/A path1 path2 N/A N/A N/A Selects a path with highest weight.

    Weight is BGPS specific parameter. It is local to the router on which it
     is configured.
    Return:
        None if best path among given paths cannot be decided, else best path.
     N/A None N/A _cmp_by_local_pref N/A N/A path1 path2 N/A N/A N/A Selects a path with highest local-preference.

    Unlike the weight attribute, which is only relevant to the local
    router, local preference is an attribute that routers exchange in the
    same AS. Highest local-pref is preferred. If we cannot decide,
    we return None.
     N/A lp1 N/A N/A path1 get_pattr BGP_ATTR_TYPE_LOCAL_PREF N/A lp2 N/A N/A path2 get_pattr BGP_ATTR_TYPE_LOCAL_PREF N/A N/A N/A lp1 lp2 N/A N/A None N/A lp1 N/A lp1 value N/A lp2 N/A lp2 value N/A N/A lp1 lp2 N/A N/A path1 N/A N/A N/A lp2 lp1 N/A N/A path2 N/A N/A None N/A _cmp_by_local_origin N/A N/A path1 path2 N/A N/A N/A Select locally originating path as best path.

    Locally originating routes are network routes, redistributed routes,
    or aggregated routes. For now we are going to prefer routes received
    through a Flexinet-Peer as locally originating route compared to routes
    received from a BGP peer.
    Returns None if given paths have same source.
     N/A N/A N/A path1 source N/A path2 source N/A N/A None N/A N/A N/A path1 source None N/A N/A path1 N/A N/A N/A path2 source None N/A N/A path2 N/A None N/A _cmp_by_aspath N/A N/A path1 path2 N/A N/A N/A Calculated the best-paths by comparing as-path lengths.

    Shortest as-path length is preferred. If both path have same lengths,
    we return None.
     N/A as_path1 N/A N/A path1 get_pattr BGP_ATTR_TYPE_AS_PATH N/A as_path2 N/A N/A path2 get_pattr BGP_ATTR_TYPE_AS_PATH N/A N/A as_path1 as_path2 N/A l1 N/A N/A as_path1 get_as_path_len N/A l2 N/A N/A as_path2 get_as_path_len N/A N/A N/A l1 None N/A l2 None N/A N/A l1 l2 N/A N/A path2 N/A N/A N/A l2 l1 N/A N/A path1 N/A N/A None N/A _cmp_by_origin N/A N/A path1 path2 N/A N/A N/A Select the best path based on origin attribute.

    IGP is preferred over EGP; EGP is preferred over Incomplete.
    If both paths have same origin, we return None.
     get_origin_pref N/A N/A origin N/A N/A N/A N/A N/A origin value BGP_ATTR_ORIGIN_IGP N/A N/A 3 N/A N/A N/A N/A origin value BGP_ATTR_ORIGIN_EGP N/A N/A 2 N/A N/A N/A N/A origin value BGP_ATTR_ORIGIN_INCOMPLETE N/A N/A 1 N/A N/A N/A N/A LOG error Invalid origin value encountered %s. origin N/A 0 N/A N/A origin1 N/A N/A path1 get_pattr BGP_ATTR_TYPE_ORIGIN N/A origin2 N/A N/A path2 get_pattr BGP_ATTR_TYPE_ORIGIN N/A N/A N/A origin1 None N/A origin2 None N/A N/A N/A origin1 value N/A origin2 value N/A N/A None N/A origin1 N/A get_origin_pref origin1 N/A origin2 N/A get_origin_pref origin2 N/A N/A origin1 origin2 N/A N/A None N/A N/A N/A origin1 origin2 N/A N/A path1 N/A path2 N/A _cmp_by_med N/A N/A path1 path2 N/A N/A N/A Select the path based with lowest MED value.

    If both paths have same MED, return None.
    By default, a route that arrives with no MED value is treated as if it
    had a MED of 0, the most preferred value.
    RFC says lower MED is preferred over higher MED value.
     get_path_med N/A N/A path N/A N/A N/A med N/A N/A path get_pattr BGP_ATTR_TYPE_MULTI_EXIT_DISC N/A N/A med N/A N/A 0 N/A N/A med value N/A N/A med1 N/A get_path_med path1 N/A med2 N/A get_path_med path2 N/A N/A med1 med2 N/A N/A None N/A N/A N/A med1 med2 N/A N/A path1 N/A path2 N/A _cmp_by_asn N/A N/A local_asn path1 path2 N/A N/A N/A Select the path based on source (iBGP/eBGP) peer.

    eBGP path is preferred over iBGP. If both paths are from same kind of
    peers, return None.
     get_path_source_asn N/A N/A path N/A N/A N/A asn None N/A N/A N/A path source None N/A N/A asn local_asn N/A N/A asn N/A N/A path source remote_as N/A asn N/A N/A p1_asn N/A get_path_source_asn path1 N/A p2_asn N/A get_path_source_asn path2 N/A N/A N/A p1_asn local_asn N/A p2_asn local_asn N/A N/A path2 N/A N/A N/A p2_asn local_asn N/A p1_asn local_asn N/A N/A path1 N/A None N/A _cmp_by_igp_cost N/A N/A path1 path2 N/A N/A N/A Select the route with the lowest IGP cost to the next hop.

    Return None if igp cost is same.
     N/A None N/A _cmp_by_router_id N/A N/A local_asn path1 path2 N/A N/A N/A Select the route received from the peer with the lowest BGP router ID.

    If both paths are eBGP paths, then we do not do any tie breaking, i.e we do
    not pick best-path based on this criteria.
    RFC: http://tools.ietf.org/html/rfc5004
    We pick best path between two iBGP paths as usual.
     get_asn N/A N/A path_source N/A N/A N/A N/A path_source None N/A N/A local_asn N/A N/A N/A path_source remote_as N/A get_router_id N/A N/A path_source local_bgp_id N/A N/A N/A N/A path_source None N/A N/A local_bgp_id N/A N/A N/A N/A N/A path_source protocol recv_open_msg bgp_identifier N/A N/A path_source1 N/A path1 source N/A path_source2 N/A path2 source N/A N/A N/A path_source1 None N/A path_source2 None N/A N/A None N/A asn1 N/A get_asn path_source1 N/A asn2 N/A get_asn path_source2 N/A is_ebgp1 N/A asn1 local_asn N/A is_ebgp2 N/A asn2 local_asn N/A N/A is_ebgp1 is_ebgp2 N/A N/A None N/A N/A N/A N/A is_ebgp1 True N/A is_ebgp2 False N/A N/A is_ebgp1 False N/A is_ebgp2 True N/A N/A N/A ValueError This method does not support comparing ebgp with ibgp path N/A N/A path_source1 None N/A N/A local_bgp_id N/A N/A N/A path_source1 protocol sent_open_msg bgp_identifier N/A N/A local_bgp_id N/A N/A N/A path_source2 protocol sent_open_msg bgp_identifier N/A router_id1 N/A get_router_id path_source1 local_bgp_id N/A router_id2 N/A get_router_id path_source2 local_bgp_id N/A N/A router_id1 router_id2 N/A N/A None ryu.services.protocols.bgp.utils.bgp from_inet_ptoi N/A N/A N/A from_inet_ptoi router_id1 N/A from_inet_ptoi router_id2 N/A N/A path1 N/A N/A path2 N/A