BGP 扬声器库 API 参考

BGPSpeaker 类

class os_ken.services.protocols.bgp.bgpspeaker.BGPSpeaker(as_number, router_id, bgp_server_hosts=('0.0.0.0', '::'), bgp_server_port=179, refresh_stalepath_time=0, refresh_max_eor_time=0, best_path_change_handler=None, adj_rib_in_change_handler=None, peer_down_handler=None, peer_up_handler=None, ssh_console=False, ssh_port=None, ssh_host=None, ssh_host_key=None, label_range=(100, 100000), allow_local_as_in_count=0, cluster_id=None, local_pref=100)

用于提供 OSKen BGP 扬声器 API 的类。

as_number 指定一个自治系统号。它必须是 1 到 65535 之间的整数。

router_id 指定 BGP 路由器标识符。它必须是 IPv4 地址的字符串表示形式(例如 10.0.0.1)。

bgp_server_host 指定 TCP 监听主机地址列表。

bgp_server_port 指定 TCP 监听端口号。如果未指定,则使用 179。

refresh_stalepath_time 使 BGP 扬声器在计时器到期后从 BGP 表中删除过时的路由,即使扬声器没有收到路由器刷新 RIB 结束消息。此功能已禁用(尚未实现)。

refresh_max_eor_time 使 BGP 扬声器生成路由刷新 RIB 结束消息,如果由于路由拍打而无法生成该消息。此功能已禁用(尚未实现)。

best_path_change_handler 如果指定,则在由于更新消息或远程对等体关闭而更改任何最佳远程路径时调用。处理程序应该接受一个参数,即 EventPrefix 类实例。

adj_rib_in_change_handler 如果指定,则在由于更新消息或远程对等体关闭而更改任何 adj-RIB-in 路径时调用。给定的处理程序应该接受三个参数,即 EventPrefix 类实例、字符串类型的对等体 IP 地址和整数类型的对等体 AS 号。

peer_down_handler 如果指定,则在 BGP 对等会话关闭时调用。

peer_up_handler 如果指定,则在 BGP 对等会话启动时调用。

ssh_console 指定是否需要启动 SSH CLI。

ssh_port 指定 SSH CLI 服务器的端口号。默认值为 bgp.operator.ssh.DEFAULT_SSH_PORT。

ssh_host 指定 SSH CLI 服务器的 IP 地址。默认值为 bgp.operator.ssh.DEFAULT_SSH_HOST。

ssh_host_key 指定添加到 SSH CLI 服务器使用的密钥列表中的主机密钥的路径。默认值为 bgp.operator.ssh.DEFAULT_SSH_HOST_KEY。

label_range 指定自动生成的 MPLS 标签的范围。

allow_local_as_in_count AS_PATH 中允许的本地 AS 号出现的最大次数。此选项对于例如在共享 AS 号的叶脊架构中的自动 RD/RT 配置很有用。默认值为 0,表示“不允许在 AS_PATH 中使用本地 AS 号”。要允许本地 AS,建议使用 3(Cisco 的默认值)。

cluster_id 指定路由反射器的集群标识符。它必须是 IPv4 地址的字符串表示形式。如果省略,则使用“router_id”作为此字段。

local_pref 指定默认本地优先级。它必须是一个整数。

attribute_map_get(address, route_dist=None, route_family='ipv4')

此方法获取指定邻居的入站过滤器。

address 指定邻居的 IP 地址。

route_dist 指定具有 attribute_maps 的路由区分符。

route_family 指定 VRF 的路由族。此参数必须是以下之一。

  • RF_VPN_V4(默认)= 'ipv4'

  • RF_VPN_V6 = 'ipv6'

返回包含 AttributeMap 实例的列表对象

attribute_map_set(address, attribute_maps, route_dist=None, route_family='ipv4')

此方法将属性映射设置为邻居。当您希望在特定条件下将属性应用于 BGPUpdate 时,可以使用属性映射。

address 指定邻居的 IP 地址

attribute_maps 指定在通告路径之前使用的 attribute_map 列表。列表中的所有项目都必须是 AttributeMap 类的实例

route_dist 指定添加 attribute_maps 的路由区分符。

route_family 指定 VRF 的路由族。此参数必须是以下之一。

  • RF_VPN_V4(默认)= 'ipv4'

  • RF_VPN_V6 = 'ipv6'

我们可以按如下方式将 AttributeMap 设置为邻居

pref_filter = PrefixFilter('192.168.103.0/30',
                           PrefixFilter.POLICY_PERMIT)

attribute_map = AttributeMap([pref_filter],
                             AttributeMap.ATTR_LOCAL_PREF, 250)

speaker.attribute_map_set('192.168.50.102', [attribute_map])
bmp_server_add(address, port)

此方法注册一个新的 BMP(BGP 监控协议)服务器。BGP 扬声器开始将 BMP 消息发送到服务器。当前,只能注册一个 BMP 服务器。

address 指定 BMP 服务器的 IP 地址。

port 指定 BMP 服务器的监听端口号。

bmp_server_del(address, port)

此方法取消注册已注册的 BMP 服务器。

address 指定 BMP 服务器的 IP 地址。

port 指定 BMP 服务器的监听端口号。

evpn_prefix_add(route_type, route_dist, esi=0, ethernet_tag_id=None, mac_addr=None, ip_addr=None, ip_prefix=None, gw_ip_addr=None, vni=None, next_hop=None, tunnel_type=None, pmsi_tunnel_type=None, redundancy_mode=None, tunnel_endpoint_ip=None, mac_mobility=None)

此方法添加要通告的新 EVPN 路由。

route_type 指定 EVPN 路由类型名称之一。此参数必须是以下之一。

  • EVPN_ETH_AUTO_DISCOVERY = 'eth_ad'

  • EVPN_MAC_IP_ADV_ROUTE = 'mac_ip_adv'

  • EVPN_MULTICAST_ETAG_ROUTE = 'multicast_etag'

  • EVPN_ETH_SEGMENT = 'eth_seg'

  • EVPN_IP_PREFIX_ROUTE = 'ip_prefix'

route_dist 指定路由区分符值。

esi 是一个指定以太网段标识符的值。0 是默认值,表示单宿主站点。如果想要通告其他于 0 的 esi,则必须将其设置为字典类型。如果 esi 是字典类型,则必须设置“type”键,并且指定 ESI 类型。有关支持的 ESI 类型,请参阅 os_ken.lib.packet.bgp.EvpnEsi。其余参数与相应类相同。

ethernet_tag_id 指定以太网标签 ID。

mac_addr 指定要通告的 MAC 地址。

ip_addr 指定要通告的 IPv4 或 IPv6 地址。

ip_prefix 指定要通告的 IPv4 或 IPv6 前缀。

gw_ip_addr 指定要通告的网关 IPv4 或 IPv6 地址。

vni 指定 VXLAN 的虚拟网络标识符或 NVGRE 的虚拟子网标识符。如果 tunnel_type 不是 TUNNEL_TYPE_VXLAN 或 TUNNEL_TYPE_NVGRE,则忽略此字段。

next_hop 指定此前缀的下一跳地址。

tunnel_type 指定要通告的数据平面封装类型。默认情况下,不通告此属性。支持的封装类型如下:

  • TUNNEL_TYPE_VXLAN = 'vxlan'

  • TUNNEL_TYPE_NVGRE = 'nvgre'

pmsi_tunnel_type 指定用于编码多播隧道标识符的 PMSI 隧道属性的类型。仅当 route_type 为 EVPN_MULTICAST_ETAG_ROUTE 时才通告此属性,并且默认情况下不通告。此属性还可以携带 vni,如果指定了 tunnel_type。

  • PMSI_TYPE_NO_TUNNEL_INFO = 0

  • PMSI_TYPE_INGRESS_REP = 6

redundancy_mode 指定冗余模式类型。仅当 route_type 为 EVPN_ETH_AUTO_DISCOVERY 时才通告此属性,并且默认情况下不通告。支持的冗余模式类型如下:

  • REDUNDANCY_MODE_ALL_ACTIVE = 'all_active'

  • REDUNDANCY_MODE_SINGLE_ACTIVE = 'single_active'

tunnel_endpoint_ip 指定 VTEP IP 地址,而不是本地路由器 ID。仅当 route_type 为 EVPN_MULTICAST_ETAG_ROUTE 时才通告此属性,并且默认值为本地路由器 ID。

mac_mobility 指定要在 MAC 移动扩展社区字段中使用的可选整数序列号。特殊值“-1”可用于将 STATIC 标志设置为 0 值的序列号。

evpn_prefix_del(route_type, route_dist, esi=0, ethernet_tag_id=None, mac_addr=None, ip_addr=None, ip_prefix=None)

此方法删除通告的 EVPN 路由。

route_type 指定 EVPN 路由类型名称之一。

route_dist 指定路由区分符值。

esi 是一个指定以太网段标识符的值。

ethernet_tag_id 指定以太网标签 ID。

mac_addr 指定要通告的 MAC 地址。

ip_addr 指定要通告的 IPv4 或 IPv6 地址。

ip_prefix 指定要通告的 IPv4 或 IPv6 前缀。

flowspec_prefix_add(flowspec_family, rules, route_dist=None, actions=None)

此方法添加一个新的 Flow Specification 前缀进行宣告。

flowspec_family 指定 Flow Specification 系列名称之一。此参数必须是以下之一。

  • FLOWSPEC_FAMILY_IPV4 = 'ipv4fs'

  • FLOWSPEC_FAMILY_IPV6 = 'ipv6fs'

  • FLOWSPEC_FAMILY_VPNV4 = 'vpnv4fs'

  • FLOWSPEC_FAMILY_VPNV6 = 'vpnv6fs'

  • FLOWSPEC_FAMILY_L2VPN = 'l2vpnfs'

rules 指定 Flow Specification 的 NLRIs,类型为字典。有关支持的 NLRI 类型和参数,请参阅以下类的 from_user() 方法。

route_dist 指定路由区分符值。只有当 flowspec_family 是以下地址族之一时,才需要此参数。

  • FLOWSPEC_FAMILY_VPNV4 = 'vpnv4fs'

  • FLOWSPEC_FAMILY_VPNV6 = 'vpnv6fs'

  • FLOWSPEC_FAMILY_L2VPN = 'l2vpnfs'

actions 指定 Flow Specification 的流量过滤动作,类型为字典。键是每个动作类的 "ACTION_NAME",值用于该类的参数。有关支持的 "ACTION_NAME" 和参数,请参阅下表。

ACTION_NAME

动作类

traffic_rate

os_ken.lib.packet.bgp.BGPFlowSpecTrafficRateCommunity

traffic_action

os_ken.lib.packet.bgp.BGPFlowSpecTrafficActionCommunity

redirect

os_ken.lib.packet.bgp.BGPFlowSpecRedirectCommunity

traffic_marking

os_ken.lib.packet.bgp.BGPFlowSpecTrafficMarkingCommunity

vlan_action

os_ken.lib.packet.bgp.BGPFlowSpecVlanActionCommunity

tpid_action

os_ken.lib.packet.bgp.BGPFlowSpecTPIDActionCommunity

示例(IPv4)

>>> speaker = BGPSpeaker(as_number=65001, router_id='172.17.0.1')
>>> speaker.neighbor_add(address='172.17.0.2',
...                      remote_as=65002,
...                      enable_ipv4fs=True)
>>> speaker.flowspec_prefix_add(
...     flowspec_family=FLOWSPEC_FAMILY_IPV4,
...     rules={
...         'dst_prefix': '10.60.1.0/24'
...     },
...     actions={
...         'traffic_marking': {
...             'dscp': 24
...         }
...     }
... )

示例(VPNv4)

>>> speaker = BGPSpeaker(as_number=65001, router_id='172.17.0.1')
>>> speaker.neighbor_add(address='172.17.0.2',
...                      remote_as=65002,
...                      enable_vpnv4fs=True)
>>> speaker.vrf_add(route_dist='65001:100',
...                 import_rts=['65001:100'],
...                 export_rts=['65001:100'],
...                 route_family=RF_VPNV4_FLOWSPEC)
>>> speaker.flowspec_prefix_add(
...     flowspec_family=FLOWSPEC_FAMILY_VPNV4,
...     route_dist='65000:100',
...     rules={
...         'dst_prefix': '10.60.1.0/24'
...     },
...     actions={
...         'traffic_marking': {
...             'dscp': 24
...         }
...     }
... )
flowspec_prefix_del(flowspec_family, rules, route_dist=None)

此方法删除已宣告的 Flow Specification 路由。

flowspec_family 指定 Flow Specification 系列名称之一。

rules 指定 Flow Specification 的 NLRIs,类型为字典。

route_dist 指定路由区分符值。

in_filter_get(address)

此方法获取指定邻居的入站过滤器。

address 指定邻居的 IP 地址。

返回一个列表对象,其中包含 Filter 子类的实例

in_filter_set(address, filters)

此方法将入站过滤器设置为邻居。

address 指定邻居的 IP 地址

filters 指定应用于在将宣告的路径导入全局 rib 之前使用的过滤器列表。列表中的所有项目必须是 Filter 子类的实例。

neighbor_add(address, remote_as, remote_port=179, enable_ipv4=True, enable_ipv6=False, enable_vpnv4=False, enable_vpnv6=False, enable_evpn=False, enable_ipv4fs=False, enable_ipv6fs=False, enable_vpnv4fs=False, enable_vpnv6fs=False, enable_l2vpnfs=False, enable_enhanced_refresh=False, enable_four_octet_as_number=True, next_hop=None, password=None, multi_exit_disc=None, site_of_origins=None, is_route_server_client=False, is_route_reflector_client=False, is_next_hop_self=False, local_address=None, local_port=None, local_as=None, connect_mode='both')

此方法注册一个新的邻居。BGP 扬声器尝试与对等体建立 bgp 会话(接受来自对等体的连接并尝试连接到它)。

address 指定对等体的 IP 地址。必须是 IP 地址的字符串表示形式。目前仅支持 IPv4。

remote_as 指定对等体的 AS 号。必须是 1 到 65535 之间的整数。

remote_port 指定对等体的 TCP 端口号。

enable_ipv4 为此邻居启用 IPv4 地址族。

enable_ipv6 为此邻居启用 IPv6 地址族。

enable_vpnv4 为此邻居启用 VPNv4 地址族。

enable_vpnv6 为此邻居启用 VPNv6 地址族。

enable_evpn 为此邻居启用以太网 VPN 地址族。

enable_ipv4fs 为此邻居启用 IPv4 流规范地址族。

enable_ipv6fs 为此邻居启用 IPv6 流规范地址族。

enable_vpnv4fs 为此邻居启用 VPNv4 流规范地址族。

enable_vpnv6fs 为此邻居启用 VPNv6 流规范地址族。

enable_l2vpnfs 为此邻居启用 L2VPN 流规范地址族。

enable_enhanced_refresh 为此邻居启用增强路由刷新。

enable_four_octet_as_number 为此邻居启用四字节 AS 号能力。

next_hop 指定下一跳 IP 地址。如果未指定,则用于访问对等体的宿主 IP 地址。

password 如果已指定,则用于 MD5 身份验证。默认情况下,MD5 身份验证已禁用。

multi_exit_disc 指定多出口鉴别器 (MED) 值,类型为 int。如果省略,则不将 MED 发送到邻居。

site_of_origins 指定 site_of_origin 值。此参数必须是字符串列表。

is_route_server_client 指定此邻居是否是路由器服务器的客户端。

is_route_reflector_client 指定此邻居是否是路由器反射器的客户端。

is_next_hop_self 指定 BGP 扬声器是否将自己的 IP 地址作为路径的下一跳地址宣告给 iBGP 邻居。

local_address 指定 iBGP 对等连接的环回接口地址。

local_port 指定 iBGP 对等连接的源 TCP 端口。

local_as 指定每个对等体的本地 AS 号。如果省略,则使用 BGPSpeaker 实例的 AS 号。

connect_mode 指定如何连接到此邻居。此参数必须是以下之一。

  • CONNECT_MODE_ACTIVE = 'active'

  • CONNECT_MODE_PASSIVE = 'passive'

  • CONNECT_MODE_BOTH (默认) = 'both'

neighbor_del(address)

此方法取消注册已注册的邻居。如果与对等体存在会话,则将关闭该会话。

address 指定对等体的 IP 地址。必须是 IP 地址的字符串表示形式。

neighbor_get(route_type, address, format='json')

此方法以 json 格式返回 BGP adj-RIB-in/adj-RIB-out 信息。

route_type 此参数仅对于 received-routes 和 sent-routes 是必需的。

  • received-routes:接收到的且未被给定对等体撤回的路径

  • sent-routes:发送到给定对等体的且未被撤回的路径

address 指定对等体的 IP 地址。必须是 IP 地址的字符串表示形式。

format 指定响应的格式。此参数必须是以下之一。

  • 'json' (默认)

  • 'cli'

neighbor_reset(address)

此方法重置已注册的邻居。

address 指定对等体的 IP 地址。必须是 IP 地址的字符串表示形式。

neighbor_state_get(address=None, format='json')

此方法以 json 格式返回对等体的状态。

address 指定对等体的地址。如果未提供,则返回所有对等体的状态。

format 指定响应的格式。此参数必须是以下之一。

  • 'json' (默认)

  • 'cli'

neighbor_update(address, conf_type, conf_value)

此方法更改邻居配置。

address 指定对等体的 IP 地址。

conf_type 指定要更改的配置类型。目前可以指定 os_ken.services.protocols.bgp.bgpspeaker.MULTI_EXIT_DISC。

conf_value 指定配置类型的取值。

neighbors_get(format='json')

此方法返回 BGP 邻居列表。

format 指定响应的格式。此参数必须是以下之一。

  • 'json' (默认)

  • 'cli'

out_filter_get(address)

此方法从指定的邻居获取出站过滤器设置。

address 指定对等体的 IP 地址。

返回一个列表对象,其中包含 Filter 子类的实例

out_filter_set(address, filters)

此方法将出站过滤器设置为邻居。

address 指定对等体的 IP 地址。

filters 指定用于过滤路径宣告的过滤器列表。内容必须是 Filter 子类的实例

如果要定义仅将特定前缀发送到邻居的出站过滤器,则可以按如下方式创建过滤器

p = PrefixFilter('10.5.111.0/24',
                 policy=PrefixFilter.POLICY_PERMIT)

all = PrefixFilter('0.0.0.0/0',
                   policy=PrefixFilter.POLICY_DENY)

pList = [p, all]

self.bgpspeaker.out_filter_set(neighbor_address, pList)

注意

out-filter 按照 pList 中 Filter 的顺序评估路径。

prefix_add(prefix, next_hop=None, route_dist=None)

此方法添加一个新的前缀进行宣告。

prefix 必须是 IP 网络的字符串表示形式(例如,10.1.1.0/24)。

next_hop 指定此前缀的下一跳地址。此参数仅对于 VPNv4 和 VPNv6 地址族是必需的。

route_dist 指定路由区分符值。此参数仅对于 VPNv4 和 VPNv6 地址族是必需的。

prefix_del(prefix, route_dist=None)

此方法删除一个已通告的前缀。

prefix 必须是 IP 网络的字符串表示形式。

route_dist 指定路由区分符值。

rib_get(family='all', format='json')

此方法以 json 格式返回 BGP 路由信息。 这将很快得到改进。

family 指定 RIB 的地址族(例如 'ipv4')。

format 指定响应的格式。此参数必须是以下之一。

  • 'json' (默认)

  • 'cli'

shutdown()

关闭 BGP 扬声器

vrf_add(route_dist, import_rts, export_rts, site_of_origins=None, route_family='ipv4', multi_exit_disc=None)

此方法添加一个用于 VPN 的新 vrf。

route_dist 指定路由区分符值。

import_rts 指定要导入的路由目标列表。

export_rts 指定要导出的路由目标列表。

site_of_origins 指定 site_of_origin 值。此参数必须是字符串列表。

route_family 指定 VRF 的路由族。此参数必须是以下之一。

  • RF_VPN_V4(默认)= 'ipv4'

  • RF_VPN_V6 = 'ipv6'

  • RF_L2_EVPN = 'evpn'

  • RF_VPNV4_FLOWSPEC = 'ipv4fs'

  • RF_VPNV6_FLOWSPEC = 'ipv6fs'

  • RF_L2VPN_FLOWSPEC = 'l2vpnfs'

multi_exit_disc 指定多出口鉴别器 (MED) 值。 必须是一个整数。

vrf_del(route_dist)

此方法删除现有的 vrf。

route_dist 指定路由区分符值。

vrfs_get(subcommand='routes', route_dist=None, route_family='all', format='json')

此方法返回现有的 vrf。

subcommand 指定以下之一。

  • 'routes': 显示 vrf 的路由

  • 'summary': 显示 vrf 的配置和摘要

route_dist 指定路由区分符值。 如果 route_family 不是 'all',则必须指定此值。

route_family 指定 VRF 的路由族。此参数必须是以下之一。

  • RF_VPN_V4 = 'ipv4'

  • RF_VPN_V6 = 'ipv6'

  • RF_L2_EVPN = 'evpn'

  • 'all' (默认)

format 指定响应的格式。此参数必须是以下之一。

  • 'json' (默认)

  • 'cli'

class os_ken.services.protocols.bgp.bgpspeaker.EventPrefix(path, is_withdraw)

用于将关于最佳远程路径到 best_path_change_handler 的更新传递过去。

属性

描述

remote_as

导致此更改的对等体的 AS 号码

route_dist

对于 IPv4 或 IPv6 族,此值为 None

prefix

更改了一个前缀

nexthop

更改的前缀的下一跳

标签

VPNv4、VPNv6 或 EVPN 前缀的 MPLS 标签

路径

info_base.base.Path 子类的实例

is_withdraw

如果此前缀已撤回,则为 True,否则为 False

class os_ken.services.protocols.bgp.info_base.base.PrefixFilter(prefix, policy, ge=None, le=None)

用于指定用于过滤的前缀。

我们可以按如下方式创建 PrefixFilter 对象

prefix_filter = PrefixFilter('10.5.111.0/24',
                             policy=PrefixFilter.POLICY_PERMIT)

属性

描述

prefix

用于此过滤器的前缀

policy

以下值之一。

PrefixFilter.POLICY.PERMIT
PrefixFilter.POLICY_DENY

ge

将应用于此过滤器的前缀长度。ge 表示大于或等于。

le

将应用于此过滤器的前缀长度。le 表示小于或等于。

例如,如果按如下方式创建 PrefixFilter 对象

p = PrefixFilter('10.5.111.0/24',
                 policy=PrefixFilter.POLICY_DENY,
                 ge=26, le=28)

匹配 10.5.111.0/24 及其长度在 26 到 28 之间的前缀将被过滤。当此过滤器用作出过滤器时,它将由于 POLICY_DENY 而停止将路径发送到邻居。当此过滤器用作入过滤器时,它将由于 POLICY_DENY 而停止将路径导入到全局 rib。 如果您指定 POLICY_PERMIT,则路径将被发送到邻居或导入到全局 rib。

如果您不想发送前缀 10.5.111.64/26 和 10.5.111.32/27 和 10.5.111.16/28,并允许发送其他 10.5.111.0 的前缀,您可以按如下方式执行

p = PrefixFilter('10.5.111.0/24',
                 policy=PrefixFilter.POLICY_DENY,
                 ge=26, le=28).
clone()

此方法克隆 PrefixFilter 对象。

返回与原始对象具有相同值的 PrefixFilter 对象。

evaluate(path)

此方法评估前缀。

返回此对象的策略和匹配结果。 如果指定的前缀与此对象的前缀以及 ge 和 le 条件匹配,则此方法返回 True 作为匹配结果。

path 指定具有前缀的路径。

class os_ken.services.protocols.bgp.info_base.base.ASPathFilter(as_number, policy)

用于指定用于 AS_PATH 属性的前缀。

我们可以按如下方式创建 ASPathFilter 对象

as_path_filter = ASPathFilter(65000,policy=ASPathFilter.TOP)

属性

描述

as_number

用于此过滤器的 AS 号码

policy

以下值之一。

ASPathFilter.POLICY_TOP
ASPathFilter.POLICY_END
ASPathFilter.POLICY_INCLUDE
ASPathFilter.POLICY_NOT_INCLUDE

每种策略的含义如下

策略

描述

POLICY_TOP

过滤器检查指定的 AS 号码是否位于 AS_PATH 属性的顶部。

POLICY_END

过滤器检查指定的 AS 号码是否位于 AS_PATH 属性的末尾。

POLICY_INCLUDE

过滤器检查指定的 AS 号码是否存在于 AS_PATH 属性中。

POLICY_NOT_INCLUDE

POLICY_INCLUDE 的相反。

clone()

此方法克隆 ASPathFilter 对象。

返回与原始对象具有相同值的 ASPathFilter 对象。

evaluate(path)

此方法评估 as_path 列表。

返回此对象的策略和匹配结果。 如果指定的 AS 号码根据策略与此对象的 AS 号码匹配,则此方法返回 True 作为匹配结果。

path 指定路径。

class os_ken.services.protocols.bgp.info_base.base.AttributeMap(filters, attr_type, attr_value)

此类用于指定如果路径匹配过滤器,则要添加的属性。 我们可以按如下方式创建 AttributeMap 对象

pref_filter = PrefixFilter('192.168.103.0/30',
                           PrefixFilter.POLICY_PERMIT)

attribute_map = AttributeMap([pref_filter],
                             AttributeMap.ATTR_LOCAL_PREF, 250)

speaker.attribute_map_set('192.168.50.102', [attribute_map])

AttributeMap.ATTR_LOCAL_PREF 表示如果路径中的 nlri 匹配 pref_filter,则将 250 设置为本地偏好值。

ASPathFilter 也可用作过滤器。 ASPathFilter 检查路径中的 AS_PATH 属性是否与过滤器中的 AS 号码匹配。

属性

描述

filters

一个过滤器列表。 每个对象应该是 Filter 类或其子类

attr_type

要映射到过滤器的属性类型。 当前 AttributeMap.ATTR_LOCAL_PREF 可用。

attr_value

一个属性值

clone()

此方法克隆 AttributeMap 对象。

返回与原始对象具有相同值的 AttributeMap 对象。

evaluate(path)

此方法评估路径的属性。

返回匹配的原因和结果。 原因和结果都从此对象包含的过滤器返回。

path 指定路径。