nBroker
英特尔FM10000(RRC)上以100 Gbps的流量导向和过滤
要实现全面的网络可见性,需要结合各种实时活动监控工具。基本活动包括但不限于:
- 有效地将流量从网络直接引导到监控工具;
- 流量过滤,以执行选择性分析,从而减少CPU上的负载;
- 流量阻塞,以在内联应用程序中实施策略。
nBroker是一个框架,可用于在英特尔FM10000 Red Rock(RRC)适配器上以100 Gbps的速度进行流量控制和过滤。FM10000适配器有一个内部交换机连接到NIC的外部端口(物理连接到缆线的端口)和链接到CPU的内部端口(主机OS所看到的端口)。

nBroker由驱动RRC交换机的守护程序和可用于配置导向和过滤规则的API组成。通信通过ZMQ通道进行。除了API,还提供了具有自动完成功能的命令行工具来控制适配器。要了解更多信息,请阅读《nBroker用户指南》。

CLI API
CLI工具 nbroker-cli
可用于在ZMQ上建立通信以控制nbroker守护程序。nbroker-cli
设置通讯并打开一个控制台,用于输入控制命令(提示:点击Tab键可自动完成)
$ nbroker-cli tcp://127.0.0.1:5555> help Commands syntax: default port PORT pass|drop set port PORT match FILTER pass|drop|steer-to [PORT] delete port PORT filtering|steering match FILTER delete port PORT filtering|steering rule ID clear port PORT filtering|steering rules port PORT filtering|steering gc idle-for SECONDS help quit FILTER is a space-separated list of: vlan NUM smac|dmac MAC shost|dhost IP shost|dhost IP/NUM shost|dhost IP netmask MASK sport|dport NUM proto udp|tcp proto NUM
C API
除命令行工具外,nBroker还可以作为C API使用,可用于配置RRC开关。下面概述了一个代码段,该代码段将所有流量传递给与特定目标端口匹配的唯一丢弃流,以证明该API编写自定义应用程序和配置RRC交换机的有效性。要了解更多信息,请阅读API文档。
nbroker_t *broker; nbroker_match_t match = { 0 }; u_int32_t rule_id = NBROKER_AUTO_RULE_ID; nbroker_init(&broker, 0); nbroker_set_default_policy(broker, "eth1", NBROKER_POLICY_PASS); match.dport.low = htons(80); nbroker_set_filtering_rule(broker, "eth1", &rule_id, &match, NBROKER_POLICY_DROP);
应用案例
IDS/IPS
IDS/IPS是可以利用nBroker卸载流量转发的内联应用程序示例。IPS通常会检查所有流量,有时会决定将特定流量列入白名单(转发)或列入黑名单(丢弃)。可以通过转向和过滤规则将此类活动卸载到交换机。
下面是使用nBroker将特定源IP指向特定目标端口的白名单的示例。
命令行界面
$ nbroker-cli tcp://127.0.0.1:5555> default port eth1 pass tcp://127.0.0.1:5555> default port eth2 pass tcp://127.0.0.1:5555> set port eth1 match shost 10.0.0.1 dport 80 steer-to eth2
C
nbroker_set_default_policy(broker, "eth1", NBROKER_POLICY_PASS); nbroker_set_default_policy(broker, "eth2", NBROKER_POLICY_PASS);match.shost.ip_version = 4; match.shost.mask.v4 = 0xFFFFFFFF; match.shost.host.v4 = inet_addr("10.0.0.1"); match.dport.low = htons(80); rule_id = NBROKER_AUTO_RULE_ID; nbroker_set_steering_rule(broker, "eth1", &rule_id, &match, "eth2");
流量导向
另一个示例是从外部端口到任意内部端口的流量控制,实际上,可以设置控制规则以将所选流量从一个接口转移到另一个接口,而不仅仅是在外部接口之间转移。例如,这可用于重定向要动态分析的流量。