Zebra¶
Zebra 协议解析器/序列化器
Zebra 协议用于与 zebra 守护进程通信。
- class os_ken.lib.packet.zebra.InterfaceLinkParams(lp_status, te_metric, max_bw, max_reserved_bw, unreserved_bw, admin_group, remote_as, remote_ip, average_delay, min_delay, max_delay, delay_var, pkt_loss, residual_bw, average_bw, utilized_bw)¶
用于 if_link_params 结构的接口链路参数类。
- class os_ken.lib.packet.zebra.NextHopBlackhole(ifindex=None, ifname=None, addr=None, type_=None)¶
用于 ZEBRA_NEXTHOP_BLACKHOLE 类型的下一跳类。
- class os_ken.lib.packet.zebra.NextHopIFIndex(ifindex=None, ifname=None, addr=None, type_=None)¶
用于 ZEBRA_NEXTHOP_IFINDEX 类型的下一跳类。
- class os_ken.lib.packet.zebra.NextHopIFName(ifindex=None, ifname=None, addr=None, type_=None)¶
用于 ZEBRA_NEXTHOP_IFNAME 类型的下一跳类。
- class os_ken.lib.packet.zebra.NextHopIPv4(ifindex=None, ifname=None, addr=None, type_=None)¶
用于 ZEBRA_NEXTHOP_IPV4 类型的下一跳类。
- class os_ken.lib.packet.zebra.NextHopIPv4IFIndex(ifindex=None, ifname=None, addr=None, type_=None)¶
用于 ZEBRA_NEXTHOP_IPV4_IFINDEX 类型的下一跳类。
- class os_ken.lib.packet.zebra.NextHopIPv4IFName(ifindex=None, ifname=None, addr=None, type_=None)¶
用于 ZEBRA_NEXTHOP_IPV4_IFNAME 类型的下一跳类。
- class os_ken.lib.packet.zebra.NextHopIPv6(ifindex=None, ifname=None, addr=None, type_=None)¶
用于 ZEBRA_NEXTHOP_IPV6 类型的下一跳类。
- class os_ken.lib.packet.zebra.NextHopIPv6IFIndex(ifindex=None, ifname=None, addr=None, type_=None)¶
用于 ZEBRA_NEXTHOP_IPV6_IFINDEX 类型的下一跳类。
- class os_ken.lib.packet.zebra.NextHopIPv6IFName(ifindex=None, ifname=None, addr=None, type_=None)¶
用于 ZEBRA_NEXTHOP_IPV6_IFNAME 类型的下一跳类。
- class os_ken.lib.packet.zebra.RegisteredNexthop(connected, family, prefix)¶
ZEBRA_NEXTHOP_REGISTER 消息体的单元。
- class os_ken.lib.packet.zebra.ZebraBfdClientRegister(pid)¶
FRR_ZEBRA_BFD_CLIENT_REGISTER 的消息体类。
- class os_ken.lib.packet.zebra.ZebraBfdDestinationDeregister(pid, dst_family, dst_prefix, multi_hop, src_family, src_prefix, multi_hop_count=None, ifname=None)¶
FRR_ZEBRA_BFD_DEST_DEREGISTER 的消息体类。
- class os_ken.lib.packet.zebra.ZebraBfdDestinationRegister(pid, dst_family, dst_prefix, min_rx_timer, min_tx_timer, detect_mult, multi_hop, src_family, src_prefix, multi_hop_count=None, ifname=None)¶
FRR_ZEBRA_BFD_DEST_REGISTER 的消息体类。
- class os_ken.lib.packet.zebra.ZebraBfdDestinationReply¶
FRR_ZEBRA_BFD_DEST_REPLAY 的消息体类。
- class os_ken.lib.packet.zebra.ZebraBfdDestinationUpdate(pid, dst_family, dst_prefix, min_rx_timer, min_tx_timer, detect_mult, multi_hop, src_family, src_prefix, multi_hop_count=None, ifname=None)¶
FRR_ZEBRA_BFD_DEST_UPDATE 的消息体类。
- class os_ken.lib.packet.zebra.ZebraHello(route_type, instance=None)¶
ZEBRA_HELLO 的消息体类。
- class os_ken.lib.packet.zebra.ZebraIPv4ImportLookup(prefix, metric=None, nexthops=None, from_zebra=False)¶
ZEBRA_IPV4_IMPORT_LOOKUP 的消息体类。
- class os_ken.lib.packet.zebra.ZebraIPv4NexthopAdd(route_type, flags, message, safi=None, prefix=None, src_prefix=None, nexthops=None, ifindexes=None, distance=None, metric=None, mtu=None, tag=None, instance=None, from_zebra=False)¶
用于 FRR_ZEBRA_IPV4_NEXTHOP_ADD 的消息体类。
- class os_ken.lib.packet.zebra.ZebraIPv4NexthopDelete(route_type, flags, message, safi=None, prefix=None, src_prefix=None, nexthops=None, ifindexes=None, distance=None, metric=None, mtu=None, tag=None, instance=None, from_zebra=False)¶
用于 FRR_ZEBRA_IPV4_NEXTHOP_DELETE 的消息体类。
- class os_ken.lib.packet.zebra.ZebraIPv4NexthopLookup(addr, metric=None, nexthops=None)¶
用于 ZEBRA_IPV4_NEXTHOP_LOOKUP 的消息体类。
- class os_ken.lib.packet.zebra.ZebraIPv4NexthopLookupMRib(addr, distance=None, metric=None, nexthops=None)¶
用于 ZEBRA_IPV4_NEXTHOP_LOOKUP_MRIB 的消息体类。
- class os_ken.lib.packet.zebra.ZebraIPv4RouteAdd(route_type, flags, message, safi=None, prefix=None, src_prefix=None, nexthops=None, ifindexes=None, distance=None, metric=None, mtu=None, tag=None, instance=None, from_zebra=False)¶
用于 ZEBRA_IPV4_ROUTE_ADD 的消息体类。
- class os_ken.lib.packet.zebra.ZebraIPv4RouteDelete(route_type, flags, message, safi=None, prefix=None, src_prefix=None, nexthops=None, ifindexes=None, distance=None, metric=None, mtu=None, tag=None, instance=None, from_zebra=False)¶
用于 ZEBRA_IPV4_ROUTE_DELETE 的消息体类。
- class os_ken.lib.packet.zebra.ZebraIPv4RouteIPv6NexthopAdd(route_type, flags, message, safi=None, prefix=None, src_prefix=None, nexthops=None, ifindexes=None, distance=None, metric=None, mtu=None, tag=None, instance=None, from_zebra=False)¶
用于 FRR_ZEBRA_IPV4_ROUTE_IPV6_NEXTHOP_ADD 的消息体类。
- class os_ken.lib.packet.zebra.ZebraIPv6ImportLookup(prefix, metric=None, nexthops=None, from_zebra=False)¶
用于 ZEBRA_IPV6_IMPORT_LOOKUP 的消息体类。
- class os_ken.lib.packet.zebra.ZebraIPv6NexthopAdd(route_type, flags, message, safi=None, prefix=None, src_prefix=None, nexthops=None, ifindexes=None, distance=None, metric=None, mtu=None, tag=None, instance=None, from_zebra=False)¶
用于 FRR_ZEBRA_IPV6_NEXTHOP_ADD 的消息体类。
- class os_ken.lib.packet.zebra.ZebraIPv6NexthopDelete(route_type, flags, message, safi=None, prefix=None, src_prefix=None, nexthops=None, ifindexes=None, distance=None, metric=None, mtu=None, tag=None, instance=None, from_zebra=False)¶
FRR_ZEBRA_IPV6_NEXTHOP_DELETE的消息体类。
- class os_ken.lib.packet.zebra.ZebraIPv6NexthopLookup(addr, metric=None, nexthops=None)¶
ZEBRA_IPV6_NEXTHOP_LOOKUP的消息体类。
- class os_ken.lib.packet.zebra.ZebraIPv6RouteAdd(route_type, flags, message, safi=None, prefix=None, src_prefix=None, nexthops=None, ifindexes=None, distance=None, metric=None, mtu=None, tag=None, instance=None, from_zebra=False)¶
ZEBRA_IPV6_ROUTE_ADD的消息体类。
- class os_ken.lib.packet.zebra.ZebraIPv6RouteDelete(route_type, flags, message, safi=None, prefix=None, src_prefix=None, nexthops=None, ifindexes=None, distance=None, metric=None, mtu=None, tag=None, instance=None, from_zebra=False)¶
ZEBRA_IPV6_ROUTE_DELETE的消息体类。
- class os_ken.lib.packet.zebra.ZebraImportCheckUpdate(family, prefix, distance=None, metric=None, nexthops=None)¶
FRR_ZEBRA_IMPORT_CHECK_UPDATE的消息体类。
- class os_ken.lib.packet.zebra.ZebraImportRouteRegister(nexthops)¶
FRR_ZEBRA_IMPORT_ROUTE_REGISTER的消息体类。
- class os_ken.lib.packet.zebra.ZebraImportRouteUnregister(nexthops)¶
FRR_ZEBRA_IMPORT_ROUTE_UNREGISTER的消息体类。
- class os_ken.lib.packet.zebra.ZebraInterfaceAdd(ifname=None, ifindex=None, status=None, if_flags=None, ptm_enable=None, ptm_status=None, metric=None, speed=None, ifmtu=None, ifmtu6=None, bandwidth=None, ll_type=None, hw_addr_len=0, hw_addr=None, link_params=None)¶
ZEBRA_INTERFACE_ADD的消息体类。
- class os_ken.lib.packet.zebra.ZebraInterfaceAddressAdd(ifindex, ifc_flags, family, prefix, dest)¶
ZEBRA_INTERFACE_ADDRESS_ADD的消息体类。
- class os_ken.lib.packet.zebra.ZebraInterfaceAddressDelete(ifindex, ifc_flags, family, prefix, dest)¶
ZEBRA_INTERFACE_ADDRESS_DELETE的消息体类。
- class os_ken.lib.packet.zebra.ZebraInterfaceBfdDestinationUpdate(ifindex, dst_family, dst_prefix, status, src_family, src_prefix)¶
FRR_ZEBRA_INTERFACE_BFD_DEST_UPDATE的消息体类。
- class os_ken.lib.packet.zebra.ZebraInterfaceDelete(ifname=None, ifindex=None, status=None, if_flags=None, ptm_enable=None, ptm_status=None, metric=None, speed=None, ifmtu=None, ifmtu6=None, bandwidth=None, ll_type=None, hw_addr_len=0, hw_addr=None, link_params=None)¶
ZEBRA_INTERFACE_DELETE的消息体类。
- class os_ken.lib.packet.zebra.ZebraInterfaceDisableRadv(ifindex, interval)¶
FRR_ZEBRA_INTERFACE_DISABLE_RADV的消息体类。
- class os_ken.lib.packet.zebra.ZebraInterfaceDown(ifname=None, ifindex=None, status=None, if_flags=None, ptm_enable=None, ptm_status=None, metric=None, speed=None, ifmtu=None, ifmtu6=None, bandwidth=None, ll_type=None, hw_addr_len=0, hw_addr=None, link_params=None)¶
ZEBRA_INTERFACE_DOWN的消息体类。
- class os_ken.lib.packet.zebra.ZebraInterfaceEnableRadv(ifindex, interval)¶
FRR_ZEBRA_INTERFACE_ENABLE_RADV的消息体类。
- class os_ken.lib.packet.zebra.ZebraInterfaceLinkParams(ifindex, link_params)¶
ZEBRA_INTERFACE_LINK_PARAMS 的消息体类。
- class os_ken.lib.packet.zebra.ZebraInterfaceNbrAddressAdd(ifindex, family, prefix)¶
FRR_ZEBRA_INTERFACE_NBR_ADDRESS_ADD 的消息体类。
- class os_ken.lib.packet.zebra.ZebraInterfaceNbrAddressDelete(ifindex, family, prefix)¶
FRR_ZEBRA_INTERFACE_NBR_ADDRESS_DELETE 的消息体类。
- class os_ken.lib.packet.zebra.ZebraInterfaceUp(ifname=None, ifindex=None, status=None, if_flags=None, ptm_enable=None, ptm_status=None, metric=None, speed=None, ifmtu=None, ifmtu6=None, bandwidth=None, ll_type=None, hw_addr_len=0, hw_addr=None, link_params=None)¶
ZEBRA_INTERFACE_UP 的消息体类。
- class os_ken.lib.packet.zebra.ZebraInterfaceVrfUpdate(ifindex, vrf_id)¶
FRR_ZEBRA_INTERFACE_VRF_UPDATE 的消息体类。
- class os_ken.lib.packet.zebra.ZebraMessage(length=None, version=3, vrf_id=0, command=None, body=None)¶
Zebra 协议解析/序列化类。
一个实例至少具有以下属性。其中大部分与网络传输中的对应项相同,但采用主机字节顺序。__init__ 按照此顺序接收相应的参数。
属性
描述
长度
包括此标头的总数据包长度。对于版本 0 消息,最小长度为 3 个字节,对于版本 1/2 消息为 6 个字节,对于版本 3 消息为 8 个字节。
版本
Zebra 协议消息的版本号。要实例化其他版本的消息,必须指定
version。vrf_id
消息中包含的路由的 VRF ID。在版本 0/1/2 的消息的线路结构中不存在,并且对于这些版本始终为 0。
command
Zebra 协议命令,表示消息类型。
body
消息体。一个
_ZebraMessageBody的子类的实例,命名为“Zebra + <消息名称>”(例如,ZebraHello)。或者,如果消息不包含任何主体,则为None。注意
要实例化 Zebra 消息,在指定有效的
body时,可以省略command。>>> from os_ken.lib.packet import zebra >>> zebra.ZebraMessage(body=zebra.ZebraHello()) ZebraMessage(body=ZebraHello(route_type=14),command=23, length=None,version=3,vrf_id=0)
另一方面,如果省略
body,则必须指定command。>>> zebra.ZebraMessage(command=zebra.ZEBRA_INTERFACE_ADD) ZebraMessage(body=None,command=1,length=None,version=3,vrf_id=0)
- classmethod parser(buf)¶
解码协议头。
此方法仅在解码数据包时使用。
在字节数组 buf 的偏移量 0 处解码协议头。返回以下三个对象:
一个描述解码后的头对象。
一个适当于数据包其余部分的 packet_base.PacketBase 子类。如果数据包的其余部分应被视为原始有效负载,则为 None。
数据包的其余部分。
- serialize(_payload=None, _prev=None)¶
编码协议头。
此方法仅在编码数据包时使用。
编码协议头。返回一个包含头的字节数组。
payload 是将立即跟随此头的其余数据包。
prev 是外部协议头的 packet_base.PacketBase 子类。如果当前头是外部头,则 prev 为 None。例如,对于 tcp.serialize,prev 是 ipv4 或 ipv6。
- class os_ken.lib.packet.zebra.ZebraMplsLabelsAdd(route_type, family, prefix, gate_addr, ifindex=None, distance=None, in_label=None, out_label=None)¶
FRR_ZEBRA_MPLS_LABELS_ADD 的消息体类。
- class os_ken.lib.packet.zebra.ZebraMplsLabelsDelete(route_type, family, prefix, gate_addr, ifindex=None, distance=None, in_label=None, out_label=None)¶
FRR_ZEBRA_MPLS_LABELS_DELETE 的消息体类。
- class os_ken.lib.packet.zebra.ZebraNexthopRegister(nexthops)¶
ZEBRA_NEXTHOP_REGISTER 的消息体类。
- class os_ken.lib.packet.zebra.ZebraNexthopUnregister(nexthops)¶
ZEBRA_NEXTHOP_UNREGISTER 的消息体类。
- class os_ken.lib.packet.zebra.ZebraNexthopUpdate(family, prefix, distance=None, metric=None, nexthops=None)¶
ZEBRA_NEXTHOP_UPDATE 的消息体类。
- class os_ken.lib.packet.zebra.ZebraRedistributeAdd(route_type, afi=None, instance=None)¶
ZEBRA_REDISTRIBUTE_ADD 的消息体类。
- class os_ken.lib.packet.zebra.ZebraRedistributeDefaultAdd(route_type, afi=None, instance=None)¶
ZEBRA_REDISTRIBUTE_DEFAULT_ADD 的消息体类。
- class os_ken.lib.packet.zebra.ZebraRedistributeDefaultDelete(route_type, afi=None, instance=None)¶
ZEBRA_REDISTRIBUTE_DEFAULT_DELETE 的消息体类。
- class os_ken.lib.packet.zebra.ZebraRedistributeDelete(route_type, afi=None, instance=None)¶
ZEBRA_REDISTRIBUTE_DELETE 的消息体类。
- class os_ken.lib.packet.zebra.ZebraRedistributeIPv4Add(route_type, flags, message, safi=None, prefix=None, src_prefix=None, nexthops=None, ifindexes=None, distance=None, metric=None, mtu=None, tag=None, instance=None, from_zebra=False)¶
FRR_ZEBRA_IPV4_ROUTE_ADD 的消息体类。
- class os_ken.lib.packet.zebra.ZebraRedistributeIPv4Delete(route_type, flags, message, safi=None, prefix=None, src_prefix=None, nexthops=None, ifindexes=None, distance=None, metric=None, mtu=None, tag=None, instance=None, from_zebra=False)¶
FRR_ZEBRA_IPV4_ROUTE_DELETE的消息体类。
- class os_ken.lib.packet.zebra.ZebraRedistributeIPv6Add(route_type, flags, message, safi=None, prefix=None, src_prefix=None, nexthops=None, ifindexes=None, distance=None, metric=None, mtu=None, tag=None, instance=None, from_zebra=False)¶
FRR_ZEBRA_REDISTRIBUTE_IPV6_ADD的消息体类。
- class os_ken.lib.packet.zebra.ZebraRedistributeIPv6Delete(route_type, flags, message, safi=None, prefix=None, src_prefix=None, nexthops=None, ifindexes=None, distance=None, metric=None, mtu=None, tag=None, instance=None, from_zebra=False)¶
FRR_ZEBRA_REDISTRIBUTE_IPV6_DEL的消息体类。
- class os_ken.lib.packet.zebra.ZebraRouterIDAdd¶
ZEBRA_ROUTER_ID_ADD的消息体类。
- class os_ken.lib.packet.zebra.ZebraRouterIDDelete¶
ZEBRA_ROUTER_ID_DELETE的消息体类。
- class os_ken.lib.packet.zebra.ZebraRouterIDUpdate(family, prefix)¶
ZEBRA_ROUTER_ID_UPDATE的消息体类。
- class os_ken.lib.packet.zebra.ZebraUnknownMessage(buf)¶
未知命令的消息体类。
- class os_ken.lib.packet.zebra.ZebraVrfAdd(vrf_name)¶
FRR_ZEBRA_VRF_ADD的消息体类。
- class os_ken.lib.packet.zebra.ZebraVrfDelete(vrf_name)¶
FRR_ZEBRA_VRF_DELETE的消息体类。
- class os_ken.lib.packet.zebra.ZebraVrfUnregister¶
ZEBRA_VRF_UNREGISTER的消息体类。
- os_ken.lib.packet.zebra.zebra¶
ZebraMessage的别名