BML:快速构建BGP特征的深度解析

        之前有介绍过BGP特征提取的有效工具-BML,并且整体介绍了BML的原理以及基本使用。今天,我们进一步深度研究这就工具,深度解析这个工具的更多秘密。

        首先,我们得知道这个工具由四个子模块组成,分别是BML.data,BML.scripts,BML.transform以及BML.utils。其中BML.data模块是数据收集模块,主要用于进行数据收集和预处理。BML.utils是通信模块,用来进行模块件的沟通与调节,其主要功能包括作业文件执行,日志打印,参数设置,路径生成,时间戳确定等功能。BML.transform是特征转换模块,其主要功能是按照工程师和研究人员的需求生成相应特征的。BML.scripts是一个脚本模块,其主要功能是将作业文件进行并行执行的一个脚本,是所有模块中功能最简单的模块,包括对路由快照、updates文件解析以及作业文件执行等功能并行处理。

        由于BML.utils和BML.scripts主要是进行系统调度上的功能处理,与我们用户的关系不大,因此,在本文中,我们将着重讲解BML.data模块和BML.transform模块。


1.BML data

        BML.data模块主要功能是进行数据收集与预处理,包括从routeviews和RIPE RIS收集到的BGP原始数据的收集,解析以及快照生成。BML.data模块还包括三个子模块,分别是updates模块、routes模块和datasets模块。

1.1 updates模块

        updates模块的主要功能就是用来解析接收到的BGP updates数据流的。当系统使用BGPstream获取到特定时间的BGP数据流之后,对收到的updates数据进行解析,日志打印以及存储。

1.2 routes模块

        routes模块则是用来生成路由快照的,并且同步打印日志以记录处理情况。一旦收集到数据,就必须对其进行转换,以满足从业人员的目标和 ML 模型的要求。BML 在感兴趣的时间段内每隔 ∆ 秒生成一个路由快照,从而生成一组 路由快照,存储格式如下:前缀:收集器:peer AS:AS-Path

9edfddad6ead4ccf862ef172bf758fe6.png

1.3 dataset模块

        dataset模块是BML.data模块中主要执行模块,用来启动数据收集程序,也会同步输出日志。对于dataset模块而言,最重要的是Dateset类,它包括了三个方法:getJobs、setParams、setPeriodsOfInterests。

        如果你已经熟悉了BML的使用方法,你可能就非常清楚这三种方法的基本用途:

  1.  Dateset.setParams:用来设置数据收集的启动参数,列表-字典格式进行参数传输,例如:
dataset.setParams({
    "PrimingPeriod": 10*60, # 10 hours of priming data
    "IpVersion": [4], # only IPv4 routes
    "Collectors": ["rrc06"], # rrc06: at Otemachi, Japan 
})

        其可进行设置的参数包含6类,分别是:

setParams参数
参数名 含义 默认
Projects 数据来源。默认的数据来源是ris和routeviews。 ['ris','routeviews']
Collectors

收集器列表,默认为空。

具体的收集器有哪些可以去ris和routeviews官网去查找。

[]
IpVersion 支持的IP版本,默认同时支持IPv4和IPv6。 [4,6]
PrimingPeriod 防止冷启动的预置时间,默认为一小时。 1*60
UseRibsPriming 是否使用Ribs文件的预置时间选项,默认为否。 False
UseRibsData 是否使用Ribs数据,默认为否。 False
SkipIfExist 系统设置,遇到exit是否跳过,默认为是。 True

        通过Dateset.setParams方法,我们可以确定自己想要收集的数据来源于哪里,在哪里收集以及收集什么类型的数据。

        2. Dateset.setPeriodsOfInterests:用来设置你需要用来统计特征的时间段,即你感兴趣的时间段,以及最后生成的特征文件的存储路径。例如:

dataset.setPeriodsOfInterests([
    {
    "name": "GoogleLeak", # 事件目录
    "label": "anomaly", # 标签目录
    "start_time": utils.getTimestamp(2017, 8, 25, 3, 0, 0),  # August 25, 2017, 3:00 UTC
    "end_time": utils.getTimestamp(2017, 8, 25, 4, 0, 0)  # August 25, 2017, 4:00 UTC
    }
])

        在这个Dateset.setPeriodsOfInterests方法中,我们将自己感兴趣的时间的起止事件分别用‘satrt_time’和‘end_time’来进行表示,然后给这个事件打个标签‘label’,并且给他取名‘name’。最后,特征文件会存在folderpath/label/name/文件夹下。

        3. Dateset.getJobs:启动数据收集模块的,开始进行数据收集和预处理。


2. BML.transform

        BML.transform模块就是用来执行数据转换,生成特征的模块。我们要完成数据转换,需要对路由快照序列eq?S_x%20%3D%20%5B%7BS_t%7D_%7Ba%7D%5E%7Bx%7D%2C%20%7BS_t%7D_%7Ba%7D%5E%7Bx%7D+%5CDelta%20%2C%5Ccdots%20%2C%20%7BS_t%7D_%7Bb%7D%5E%7Bx%7D%5D应用特征规格数据转换函数 T (.) 。用于 BGP 分析的 ML 模型已经或可能使用各种功能和数据表示方式:

  • 统计特征:如前缀或路由的数量、路由的平均跳数。
  • :由于 BGP 反映了互联网拓扑结构,因此路由快照可以很容易地表示为一个图,其结构可能因 ML 模型而异。
  • 图特征:虽然许多 ML 模型无法利用图结构数据,但它们可以使用从 BGP 图中提取的合
  • 34
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值