scapy.contrib.bgp

BGP(边界网关协议).

class scapy.contrib.bgp.ASPathSegmentPacketListField(name, default, cls=None, count_from=None, length_from=None, next_cls_cb=None)

Bases: scapy.fields.PacketListField

PacketListField处理AS_PATH段.

getfield(pkt, s)
class scapy.contrib.bgp.BGP(*args, **kargs)

Bases: scapy.packet.Packet

每个BGP消息都从此类继承.

KEEPALIVE_TYPE = 4
NOTIFICATION_TYPE = 3
OPEN_TYPE = 1
ROUTEREFRESH_TYPE = 5
UPDATE_TYPE = 2
aliastypes
classmethod dispatch_hook(_pkt=None, *args, **kargs)

返回给定数据的正确类.

guess_payload_class(p)
class scapy.contrib.bgp.BGPAuthenticationInformation(*args, **kargs)

Bases: scapy.packet.Packet

提供Authentication Information可选参数的实现,该参数现在已过时. 参考:RFC 1771,RFC 1654,RFC 4271

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|AUTHENTICATION |      AUTHENTICATION DATA      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                Fig. BGPAuthenticationInformation                 
BGPAuthenticationInformation字段

authentication_code

ByteField

0

authentication_data

StrField

None

class scapy.contrib.bgp.BGPCapFourBytesASN(*args, **kargs)

Bases: scapy.contrib.bgp.BGPCapability

此类提供4字节AS编号功能的实现. 参考:RFC 4893

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      CODE     |     LENGTH    |              ASN              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                     Fig. BGPCapFourBytesASN                      
BGPCapFourBytesASN字段

code

ByteEnumField

65

length

ByteField

4

asn

IntField

0

match_subclass = True
class scapy.contrib.bgp.BGPCapGeneric(*args, **kargs)

Bases: scapy.contrib.bgp.BGPCapability

此类提供了通用功能的实现.

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      CODE     |     LENGTH    |            CAP DATA           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                        Fig. BGPCapGeneric                        
BGPCapGeneric字段

code

ByteEnumField

0

length

FieldLenField

None

cap_data

StrLenField

b''

match_subclass = True
class scapy.contrib.bgp.BGPCapGracefulRestart(*args, **kargs)

Bases: scapy.contrib.bgp.BGPCapability

此类提供了优美重启功能的实现. 参考:RFC 4724

class GRTuple(*args, **kargs)

Bases: scapy.packet.Packet

元组<AFI,SAFI,地址族的标志>

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              AFI              |      SAFI     |     FLAGS     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                           Fig. GRTuple                           
GRTuple字段

afi

ShortEnumField

0

safi

ByteEnumField

0

flags

ByteEnumField

0

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      CODE     |     LENGTH    |RESTART|      RESTART TIME     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            ENTRIES            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                    Fig. BGPCapGracefulRestart                    
BGPCapGracefulRestart字段

code

ByteEnumField

64

length

ByteField

None

restart_flags

BitField (4位)

0

restart_time

BitField (12位)

0

entries

PacketListField

[]

match_subclass = True
class scapy.contrib.bgp.BGPCapMultiprotocol(*args, **kargs)

Bases: scapy.contrib.bgp.BGPCapability

此类提供了Multiprotocol功能的实现. 参考:RFC 4760

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      CODE     |     LENGTH    |              AFI              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    RESERVED   |      SAFI     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                     Fig. BGPCapMultiprotocol                     
BGPCapMultiprotocol字段

code

ByteEnumField

1

length

ByteField

4

afi

ShortEnumField

0

reserved

ByteField

0

safi

ByteEnumField

0

match_subclass = True
class scapy.contrib.bgp.BGPCapORF(*args, **kargs)

Bases: scapy.contrib.bgp.BGPCapability

此类提供了出站路由筛选功能的实现. 参考:RFC 5291

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      CODE     |     LENGTH    |              ORF              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                          Fig. BGPCapORF                          
BGPCapORF字段

code

ByteEnumField

3

length

ByteField

None

orf

BGPCapORFBlockPacketListField

[]

match_subclass = True
class scapy.contrib.bgp.BGPCapORFBlock(*args, **kargs)

Bases: scapy.packet.Packet

" ORFBlock"由<AFI,rsvd,SAFI,ORF数量和<ORF类型,发送/接收>条目组成.

class ORFTuple(*args, **kargs)

Bases: scapy.packet.Packet

数据包处理<ORF类型,发送/接收>元组.

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    ORF TYPE   |  SEND RECEIVE |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                          Fig. ORFTuple                           
ORFTuple栏位

orf_type

ByteEnumField

0

send_receive

ByteEnumField

0

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              AFI              |    RESERVED   |      SAFI     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   ORF NUMBER  |            ENTRIES            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                       Fig. BGPCapORFBlock                        
BGPCapORFBlock字段

afi

ShortEnumField

0

reserved

ByteField

0

safi

ByteEnumField

0

orf_number

FieldLenField

None

entries

PacketListField

[]

post_build(p, pay)
class scapy.contrib.bgp.BGPCapORFBlockPacketListField(name, default, cls=None, count_from=None, length_from=None, next_cls_cb=None)

Bases: scapy.fields.PacketListField

处理BGPCapORFB锁列表.

getfield(pkt, s)
class scapy.contrib.bgp.BGPCapability(*args, **kargs)

Bases: scapy.packet.Packet

通用BGP能力.

aliastypes
classmethod dispatch_hook(_pkt=None, *args, **kargs)

返回给定数据的正确类.

post_build(p, pay)
pre_dissect(s)

检查有效载荷是否足够长(至少2个字节).

class scapy.contrib.bgp.BGPConf

Bases: scapy.config.ConfClass

BGP模块配置

use_2_bytes_asn = True
class scapy.contrib.bgp.BGPFieldIPv4(name, default, fmt='H')

Bases: scapy.fields.Field

IPv4字段(CIDR)

addfield(pkt, s, val)
getfield(pkt, s)
h2i(pkt, h)

xxxx / y为"内部"表示.

i2h(pkt, i)

从"内部"表示到"人类"表示(xxxx / y).

i2len(pkt, i)
i2m(pkt, i)

“Internal” (IP as bytes, mask as int) to “machine” representation.

i2repr(pkt, i)
m2i(pkt, m)
mask2iplen(mask)

获取IP字段掩码长度(以字节为单位).

class scapy.contrib.bgp.BGPFieldIPv6(name, default, fmt='H')

Bases: scapy.fields.Field

IPv6字段(CIDR)

addfield(pkt, s, val)
getfield(pkt, s)
h2i(pkt, h)

xxxx / y为内部表示形式.

i2h(pkt, i)

从"内部"表示到"人类"表示.

i2len(pkt, i)
i2m(pkt, i)

"内部"(IP为字节,掩码为int)表示"机器".

i2repr(pkt, i)
m2i(pkt, m)
mask2iplen(mask)

获取IP字段掩码长度(以字节为单位).

class scapy.contrib.bgp.BGPHeader(*args, **kargs)

Bases: scapy.packet.Packet

任何BGP消息的标头. 参考:RFC 4271

aliastypes
classmethod dispatch_hook(_pkt=None, *args, **kargs)

返回给定数据的正确类.

fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             MARKER                            |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              LEN              |      TYPE     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                          Fig. BGPHeader                          
BGPHeader字段

marker

XBitField (128位)

340282366920938463463374607431768211455

len

ShortField

None

type

ByteEnumField

4

guess_payload_class(payload)
payload_guess

可能的子层: BGPKeepAliveBGPNotificationBGPOpenBGPRouteRefreshBGPUpdate

post_build(p, pay)
class scapy.contrib.bgp.BGPKeepAlive(*args, **kargs)

Bases: scapy.contrib.bgp.BGP, scapy.contrib.bgp.BGPHeader

KEEPALIVE消息.

aliastypes
class scapy.contrib.bgp.BGPNLRIPacketListField(name, default, cls=None, count_from=None, length_from=None, next_cls_cb=None)

Bases: scapy.fields.PacketListField

PacketListField处理NLRI字段.

getfield(pkt, s)
class scapy.contrib.bgp.BGPNLRI_IPv4(*args, **kargs)

Bases: scapy.packet.Packet

数据包处理IPv4 NLRI字段.

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             PREFIX            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                        Fig. BGPNLRI_IPv4                         
BGPNLRI_IPv4字段

prefix

BGPFieldIPv4

(0, '0.0.0.0')

class scapy.contrib.bgp.BGPNLRI_IPv6(*args, **kargs)

Bases: scapy.packet.Packet

数据包处理IPv6 NLRI字段.

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             PREFIX            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                        Fig. BGPNLRI_IPv6                         
BGPNLRI_IPv6字段

prefix

BGPFieldIPv6

(0, '::')

class scapy.contrib.bgp.BGPNotification(*args, **kargs)

Bases: scapy.contrib.bgp.BGP

通知消息结束BGP会话. 参考:RFC 4271

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   ERROR CODE  | ERROR SUBCODE |              DATA             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                       Fig. BGPNotification                       
BGP通知字段

error_code

ByteEnumField

0

error_subcode

MultiEnumField (取决于error_code)

0

data

StrField

None

class scapy.contrib.bgp.BGPORF(*args, **kargs)

Bases: scapy.packet.Packet

提供RR消息中携带的ORF的实现. 参考:RFC 5291

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|WHEN TO REFRESH|    ORF TYPE   |            ORF LEN            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            ENTRIES            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                           Fig. BGPORF                            
BGPORF字段

when_to_refresh

ByteEnumField

0

orf_type

ByteEnumField

0

orf_len

FieldLenField

None

entries

BGPORFEntryPacketListField

[]

class scapy.contrib.bgp.BGPORFAddressPrefix(*args, **kargs)

Bases: scapy.contrib.bgp.BGPORFEntry

提供地址前缀ORF(RFC 5292)的实现.

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|ACT|M| RESERVED|                    SEQUENCE                   |
+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               |    MIN LEN    |    MAX LEN    |     PREFIX    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               |
+-+-+-+-+-+-+-+-+

                     Fig. BGPORFAddressPrefix                     
BGPORFAddressPrefix字段

action

BitEnumField (2位)

0

match

BitEnumField (1位)

0

reserved

BitField (5位)

0

sequence

IntField

0

min_len

ByteField

0

max_len

ByteField

0

prefix

_ORFNLRIPacketField

b''

class scapy.contrib.bgp.BGPORFCoveringPrefix(*args, **kargs)

Bases: scapy.packet.Packet

提供CP-ORF(RFC 7543)的实现.

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|ACT|M| RESERVED|                    SEQUENCE                   |
+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               |    MIN LEN    |    MAX LEN    |       RT      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                 +
|                                                               |
+                                               +-+-+-+-+-+-+-+-+
|                                               |   IMPORT RT   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +
|                                                               |
+                                               +-+-+-+-+-+-+-+-+
|                                               |   ROUTE TYPE  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           HOST ADDR           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                    Fig. BGPORFCoveringPrefix                     
BGPORFCoveringPrefix字段

action

BitEnumField (2位)

0

match

BitEnumField (1位)

0

reserved

BitField (5位)

0

sequence

IntField

0

min_len

ByteField

0

max_len

ByteField

0

rt

LongField

0

import_rt

LongField

0

route_type

ByteField

0

host_addr

PacketField

None

class scapy.contrib.bgp.BGPORFEntry(*args, **kargs)

Bases: scapy.packet.Packet

提供一个ORF条目的实现. 参考:RFC 5291

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|ACT|M| RESERVED|             VALUE             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                         Fig. BGPORFEntry                         
BGPORFEntry字段

action

BitEnumField (2位)

0

match

BitEnumField (1位)

0

reserved

BitField (5位)

0

value

StrField

b''

class scapy.contrib.bgp.BGPORFEntryPacketListField(name, default, cls=None, count_from=None, length_from=None, next_cls_cb=None)

Bases: scapy.fields.PacketListField

PacketListField处理ORF条目.

getfield(pkt, s)
m2i(pkt, m)
class scapy.contrib.bgp.BGPOpen(*args, **kargs)

Bases: scapy.contrib.bgp.BGP

交换OPEN消息以打开新的BGP会话. 参考:RFC 4271

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    VERSION    |             MY AS             |   HOLD TIME   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               |                     BGP ID                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               | OPT PARAM LEN |           OPT PARAMS          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                           Fig. BGPOpen                           
BGPOpen字段

version

ByteField

4

my_as

ShortField

0

hold_time

ShortField

0

bgp_id

IPField

'0.0.0.0'

opt_param_len

FieldLenField

None

opt_params

BGPOptParamPacketListField

[]

post_build(p, pay)
class scapy.contrib.bgp.BGPOptParam(*args, **kargs)

Bases: scapy.packet.Packet

提供一个实现OPEN消息的可选参数. 参考:RFC 4271

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   PARAM TYPE  |  PARAM LENGTH |          PARAM VALUE          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      AUTHENTICATION DATA      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                         Fig. BGPOptParam                         
BGPOptParam字段

param_type

ByteEnumField

2

param_length

ByteField

None

param_value

PacketField (Cond)

None

authentication_data

PacketField (Cond)

None

post_build(p, pay)
class scapy.contrib.bgp.BGPOptParamPacketListField(name, default, cls=None, count_from=None, length_from=None, next_cls_cb=None)

Bases: scapy.fields.PacketListField

PacketListField处理可选参数(OPEN消息).

getfield(pkt, s)
class scapy.contrib.bgp.BGPPAAS4Aggregator(*args, **kargs)

Bases: scapy.packet.Packet

提供AS4_AGGREGATOR属性"值部分"的实现. 参考:RFC 4893

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         AGGREGATOR ASN                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        SPEAKER ADDRESS                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                     Fig. BGPPAAS4Aggregator                      
BGPPAAS4Aggregator字段

aggregator_asn

IntField

0

speaker_address

IPField

'0.0.0.0'

class scapy.contrib.bgp.BGPPAAS4BytesPath(*args, **kargs)

Bases: scapy.packet.Packet

数据包处理AS_PATH属性值(对于新扬声器,ASN为4字节-> ASN编码为IntFields). 参考:RFC 4893

class ASPathSegment(*args, **kargs)

Bases: scapy.packet.Packet

提供具有4个字节ASN的AS_PATH段的实现.

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  SEGMENT TYPE | SEGMENT LENGTH|         SEGMENT VALUE         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                        Fig. ASPathSegment                        
ASPathSegment字段

segment_type

ByteEnumField

2

segment_length

ByteField

None

segment_value

FieldListField

[]

post_build(p, pay)
aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            SEGMENTS           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                      Fig. BGPPAAS4BytesPath                      
BGPPAAS4BytesPath字段

segments

ASPathSegmentPacketListField

[]

class scapy.contrib.bgp.BGPPAAS4Path(*args, **kargs)

Bases: scapy.packet.Packet

提供AS4_PATH属性"值部分"的实现. 参考:RFC 4893

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  SEGMENT TYPE | SEGMENT LENGTH|         SEGMENT VALUE         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                        Fig. BGPPAAS4Path                         
BGPPAAS4Path字段

segment_type

ByteEnumField

2

segment_length

ByteField

None

segment_value

FieldListField

[]

post_build(p, pay)
class scapy.contrib.bgp.BGPPAASPath(*args, **kargs)

Bases: scapy.packet.Packet

数据包处理AS_PATH属性值(对于旧扬声器,为2字节ASN). 参考:RFC 4271,RFC 5065

class ASPathSegment(*args, **kargs)

Bases: scapy.packet.Packet

提供具有2个字节ASN的AS_PATH段的实现.

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  SEGMENT TYPE | SEGMENT LENGTH|         SEGMENT VALUE         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                        Fig. ASPathSegment                        
ASPathSegment字段

segment_type

ByteEnumField

2

segment_length

ByteField

None

segment_value

FieldListField

[]

post_build(p, pay)
AS_TRANS = 23456
aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            SEGMENTS           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                         Fig. BGPPAASPath                         
BGPPAASPath字段

segments

ASPathSegmentPacketListField

[]

class scapy.contrib.bgp.BGPPAAggregator(*args, **kargs)

Bases: scapy.packet.Packet

数据包处理AGGREGATOR属性值. 参考:RFC 4271

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         AGGREGATOR ASN        |        SPEAKER ADDRESS        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                       Fig. BGPPAAggregator                       
BGPPAAggregator字段

aggregator_asn

ShortField

0

speaker_address

IPField

'0.0.0.0'

class scapy.contrib.bgp.BGPPAAtomicAggregate(*args, **kargs)

Bases: scapy.packet.Packet

数据包处理ATOMIC_AGGREGATE属性值. 参考:RFC 4271

aliastypes
class scapy.contrib.bgp.BGPPAClusterList(*args, **kargs)

Bases: scapy.packet.Packet

数据包处理CLUSTER_LIST属性值. 参考:RFC 4456

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          CLUSTER LIST         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                      Fig. BGPPAClusterList                       
BGPPAClusterList字段

cluster_list

FieldListField

[]

class scapy.contrib.bgp.BGPPACommunity(*args, **kargs)

Bases: scapy.packet.Packet

数据包处理COMMUNITIES属性值. 参考:RFC 1997

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           COMMUNITY                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                       Fig. BGPPACommunity                        
BGPPACommunity字段

community

IntEnumField

0

class scapy.contrib.bgp.BGPPAExtCommFourOctetASSpecific(*args, **kargs)

Bases: scapy.packet.Packet

Packet handling the Four-Octet AS Specific Extended Community attribute value. References: RFC 5668

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      GLOBAL ADMINISTRATOR                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      LOCAL ADMINISTRATOR      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

               Fig. BGPPAExtCommFourOctetASSpecific               
BGPPAExtCommFourOctetASSpecific字段

global_administrator

IntField

0

local_administrator

ShortField

0

class scapy.contrib.bgp.BGPPAExtCommIPv4AddressSpecific(*args, **kargs)

Bases: scapy.packet.Packet

处理IPv4地址特定扩展社区属性值的数据包. 参考:RFC 4360

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      GLOBAL ADMINISTRATOR                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      LOCAL ADMINISTRATOR      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

               Fig. BGPPAExtCommIPv4AddressSpecific               
BGPPAExtCommIPv4AddressSpecific字段

global_administrator

IntField

0

local_administrator

ShortField

0

class scapy.contrib.bgp.BGPPAExtCommOpaque(*args, **kargs)

Bases: scapy.packet.Packet

处理不透明扩展社区属性值的数据包. 参考:RFC 4360

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             VALUE             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                     Fig. BGPPAExtCommOpaque                      
BGPPAExtCommOpaque字段

value

StrFixedLenField

b''

class scapy.contrib.bgp.BGPPAExtCommRedirectAS2Byte(*args, **kargs)

Bases: scapy.packet.Packet

数据包处理(FlowSpec)"重定向AS-2字节"扩展社区(RFC 7674). 参考:RFC 7674

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              ASN              |             VALUE             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                 Fig. BGPPAExtCommRedirectAS2Byte                 
BGPPAExtCommRedirectAS2Byte字段

asn

ShortField

0

value

IntField

0

class scapy.contrib.bgp.BGPPAExtCommRedirectAS4Byte(*args, **kargs)

Bases: scapy.packet.Packet

数据包处理(FlowSpec)"重定向AS-4byte"扩展社区. (RFC 7674). 参考:RFC 7674

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                              ASN                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             VALUE             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                 Fig. BGPPAExtCommRedirectAS4Byte                 
BGPPAExtCommRedirectAS4Byte字段

asn

IntField

0

value

ShortField

0

class scapy.contrib.bgp.BGPPAExtCommRedirectIPv4(*args, **kargs)

Bases: scapy.packet.Packet

数据包处理(FlowSpec)"重定向IPv4"扩展社区. (RFC 7674). 参考:RFC 7674

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            IP ADDR                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             VALUE             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                  Fig. BGPPAExtCommRedirectIPv4                   
BGPPAExtCommRedirectIPv4字段

ip_addr

IntField

0

value

ShortField

0

class scapy.contrib.bgp.BGPPAExtCommTrafficAction(*args, **kargs)

Bases: scapy.packet.Packet

数据包处理(FlowSpec)"流量动作"扩展社区. 参考:RFC 5575

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            RESERVED                           |
+                           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           |S|T|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                  Fig. BGPPAExtCommTrafficAction                  
BGPPAExtCommTrafficAction字段

reserved

BitField (46位)

0

sample

BitField (1位)

0

terminal_action

BitField (1位)

0

class scapy.contrib.bgp.BGPPAExtCommTrafficMarking(*args, **kargs)

Bases: scapy.packet.Packet

数据包处理(FlowSpec)"流量标记"扩展社区. 参考:RFC 5575

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                              DSCP                             |
+                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                 Fig. BGPPAExtCommTrafficMarking                  
BGPPAExtCommTrafficMarking字段

dscp

BitEnumField (48位)

48

class scapy.contrib.bgp.BGPPAExtCommTrafficRate(*args, **kargs)

Bases: scapy.packet.Packet

数据包处理(FlowSpec)"流量速率"扩展社区. 参考:RFC 5575

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               ID              |              RATE             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                   Fig. BGPPAExtCommTrafficRate                   
BGPPAExtCommTrafficRate字段

id

ShortField

0

rate

IEEEFloatField

0

class scapy.contrib.bgp.BGPPAExtCommTwoOctetASSpecific(*args, **kargs)

Bases: scapy.packet.Packet

数据包处理" 2-Octet AS专用扩展社区"属性值. 参考:RFC 4360

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      GLOBAL ADMINISTRATOR     |      LOCAL ADMINISTRATOR      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

               Fig. BGPPAExtCommTwoOctetASSpecific                
BGPPAExtCommTwoOctetASSpecific字段

global_administrator

ShortField

0

local_administrator

IntField

0

class scapy.contrib.bgp.BGPPAExtComms(*args, **kargs)

Bases: scapy.packet.Packet

分组处理多个扩展社区.

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      EXTENDED COMMUNITIES     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                        Fig. BGPPAExtComms                        
BGPPAExtComms字段

extended_communities

_ExtCommsPacketListField

[]

class scapy.contrib.bgp.BGPPAExtCommunity(*args, **kargs)

Bases: scapy.packet.Packet

提供扩展社区属性的实现. 参考:RFC 4360

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   TYPE HIGH   |    TYPE LOW   |             VALUE             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                      Fig. BGPPAExtCommunity                      
BGPPAExtCommunity字段

type_high

ByteEnumField

0

type_low

_TypeLowField

None

value

_ExtCommValuePacketField

None

post_build(p, pay)
class scapy.contrib.bgp.BGPPAIPv6AddressSpecificExtComm(*args, **kargs)

Bases: scapy.packet.Packet

提供IPv6地址特定扩展社区属性的实现. 未使用现有的BGP扩展社区属性定义此属性(请参阅下面的RFC 5701摘录). 参考:RFC 5701

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      GLOBAL ADMINISTRATOR                     |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      LOCAL ADMINISTRATOR      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

               Fig. BGPPAIPv6AddressSpecificExtComm               
BGPPAIPv6AddressSpecificExtComm字段

global_administrator

IP6Field

'::'

local_administrator

ShortField

0

class scapy.contrib.bgp.BGPPALocalPref(*args, **kargs)

Bases: scapy.packet.Packet

数据包处理LOCAL_PREF属性值. 参考:RFC 4271

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           LOCAL PREF                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                       Fig. BGPPALocalPref                        
BGPPALocalPref字段

local_pref

IntField

0

class scapy.contrib.bgp.BGPPAMPReachNLRI(*args, **kargs)

Bases: scapy.packet.Packet

非IPv6 AFI的数据包处理MP_REACH_NLRI属性值. 参考:RFC 4760

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              AFI              |      SAFI     |  NH ADDR LEN  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           NH V4 ADDR                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           NH V6 ADDR                          |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          NH V6 GLOBAL                         |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        NH V6 LINK LOCAL                       |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    RESERVED   |              NLRI             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                      Fig. BGPPAMPReachNLRI                       
BGPPAMPReachNLRI字段

afi

ShortEnumField

0

safi

ByteEnumField

0

nh_addr_len

ByteField

0

nh_v4_addr

IPField (Cond)

'0.0.0.0'

nh_v6_addr

IP6Field (Cond)

'::'

nh_v6_global

IP6Field (Cond)

'::'

nh_v6_link_local

IP6Field (Cond)

'::'

reserved

ByteField

0

nlri

MPReachNLRIPacketListField

[]

post_build(p, pay)
class scapy.contrib.bgp.BGPPAMPUnreachNLRI(*args, **kargs)

Bases: scapy.packet.Packet

数据包处理非IPv6 AFI的MP_UNREACH_NLRI属性值. 参考:RFC 4760

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              AFI              |      SAFI     |AFI SAFI SPECIF|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               |
+-+-+-+-+-+-+-+-+

                     Fig. BGPPAMPUnreachNLRI                      
BGPPAMPUnreachNLRI字段

afi

ShortEnumField

0

safi

ByteEnumField

0

afi_safi_specific

MPUnreachNLRIPacketField

None

post_build(p, pay)
class scapy.contrib.bgp.BGPPAMPUnreachNLRI_IPv6(*args, **kargs)

Bases: scapy.packet.Packet

数据包,用于处理IPv6 AFI的MP_UNREACH_NLRI属性值.

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        WITHDRAWN ROUTES       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                   Fig. BGPPAMPUnreachNLRI_IPv6                   
BGPPAMPUnreachNLRI_IPv6字段

withdrawn_routes

BGPNLRIPacketListField

[]

class scapy.contrib.bgp.BGPPAMultiExitDisc(*args, **kargs)

Bases: scapy.packet.Packet

数据包处理MULTI_EXIT_DISC属性值. 参考:RFC 4271

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                              MED                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                     Fig. BGPPAMultiExitDisc                      
BGPPAMultiExitDisc字段

med

IntField

0

class scapy.contrib.bgp.BGPPANextHop(*args, **kargs)

Bases: scapy.packet.Packet

数据包处理NEXT_HOP属性值. 参考:RFC 4271

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            NEXT HOP                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                        Fig. BGPPANextHop                         
BGPPANextHop字段

next_hop

IPField

'0.0.0.0'

class scapy.contrib.bgp.BGPPAOrigin(*args, **kargs)

Bases: scapy.packet.Packet

包处理ORIGIN属性值. 参考:RFC 4271

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     ORIGIN    |
+-+-+-+-+-+-+-+-+

                         Fig. BGPPAOrigin                         
BGPPAO原始字段

origin

ByteEnumField

0

class scapy.contrib.bgp.BGPPAOriginatorID(*args, **kargs)

Bases: scapy.packet.Packet

数据包处理ORIGINATOR_ID属性值. 参考:RFC 4456

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         ORIGINATOR ID                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                      Fig. BGPPAOriginatorID                      
BGPPAOriginatorID字段

originator_id

IPField

'0.0.0.0'

class scapy.contrib.bgp.BGPPathAttr(*args, **kargs)

Bases: scapy.packet.Packet

提供路径属性的实现. 参考:RFC 4271

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   TYPE FLAGS  |   TYPE CODE   |          ATTR EXT LEN         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    ATTR LEN   |           ATTRIBUTE           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                         Fig. BGPPathAttr                         
BGPPathAttr字段

type_flags

FlagsField (8位)

<Flag 128 (Optional)>

type_code

ByteEnumField

0

attr_ext_len

ShortField (Cond)

None

attr_len

ByteField (Cond)

None

attribute

_PathAttrPacketField

None

post_build(p, pay)
class scapy.contrib.bgp.BGPPathAttrPacketListField(name, default, cls=None, count_from=None, length_from=None, next_cls_cb=None)

Bases: scapy.fields.PacketListField

PacketListField处理路径属性(UPDATE消息).

getfield(pkt, s)
class scapy.contrib.bgp.BGPRouteRefresh(*args, **kargs)

Bases: scapy.contrib.bgp.BGP

提供ROUTE-REFRESH消息的实现. 参考:RFC 2918,RFC 7313

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              AFI              |    SUBTYPE    |      SAFI     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            ORF DATA           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                       Fig. BGPRouteRefresh                       
BGPRouteRefresh字段

afi

ShortEnumField

1

subtype

ByteEnumField

0

safi

ByteEnumField

1

orf_data

PacketField

b''

class scapy.contrib.bgp.BGPUpdate(*args, **kargs)

Bases: scapy.contrib.bgp.BGP

UPDATE消息允许对等方交换路由. 参考:RFC 4271

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      WITHDRAWN ROUTES LEN     |        WITHDRAWN ROUTES       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         PATH ATTR LEN         |           PATH ATTR           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              NLRI             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                          Fig. BGPUpdate                          
BGPUpdate字段

withdrawn_routes_len

FieldLenField

None

withdrawn_routes

BGPNLRIPacketListField

[]

path_attr_len

FieldLenField

None

path_attr

BGPPathAttrPacketListField

[]

nlri

BGPNLRIPacketListField

[]

post_build(p, pay)
class scapy.contrib.bgp.MPReachNLRIPacketListField(name, default, cls=None, count_from=None, length_from=None, next_cls_cb=None)

Bases: scapy.fields.PacketListField

PacketListField处理MP_REACH_NLRI属性的AFI特定部分("下一跳网络地址"字段的长度,但不是AFI特定).

getfield(pkt, s)
class scapy.contrib.bgp.MPUnreachNLRIPacketField(name, default, cls, remain=0)

Bases: scapy.fields.PacketField

PacketField处理MP_UNREACH_NLRI属性的AFI特定部分.

m2i(pkt, m)
scapy.contrib.bgp.has_extended_length(flags)

在BGPPathAttr中使用,以检查是否设置了扩展长度标志.