我是OVS的新手,并试图让IPFIX在我的OVS桥上工作。我是根据上一篇文章中的重要信息建立起来的:
好消息是我已经得到我的OVS开关输出IPFIX流到我的收集器。坏消息是,交换机没有输出我想要的流量。不是导出描述测试主机之间通信量的流记录,而是仅导出描述交换机和收集器…之间通信量的记录。那就是我不感兴趣的交通。
简单地描述一下我的概念证明环境:我有一个带有三个VM的OVS开关;两个测试主机和一个收集器:
root@OVSHost# ovs-vsctl list bridge
_uuid : 2fb2fa30-e1ed-4cbf-a365-7462e5f83cbc
...
name : "myBridge"
...
ports : [1940fd00-2dcb-4c85-a077-bae1653d9841, 279e489d-a940-4056-b753-2213fd46d5fd,
31258106-589b-40b9-94c9-a29711991a91, ee38080d-3446-4760-a297-801c5ffe76bb]
root@OVSHost#我将首先承认,我不知道哪些端口支持测试主机,哪些端口支持收集器。我在收集器VM上设置了libIPFIX (一个免费的IPFIX收集器)。最后,通过运行以下两个命令,我在OVS桥上启用了IPFIX导出:
ovs-vsctl clear bridge myBridge ipfix
ovs-vsctl -- set Bridge myBridge ipfix=@i -- --id=@i create IPFIX targets=\"192.168.2.2:4739\" obs_domain_id=123 obs_point_id=456 sampling=5一旦上述命令到位,我就看到流记录到达了我的收集器。但是仔细观察,我发现我看到的流量描述了桥(192.168.2.1)和收集器(192.168.2.2)之间的交通。这里有一个这样的记录,用我编写的用于故障排除的python脚本处理:
RECORD 123, using Template 284
138(observationPointId:4) 456
61(flowDirection:1) 0
4(protocolIdentifier:1) 17
8(sourceIPv4Address:4) 192.168.2.1
12(destinationIPv4Address:4) 192.168.2.2
7(sourceTransportPort:2) 37512
11(destinationTransportPort:2) 4739起初,我认为我的收集器软件一定是配置错了,但后来我在收集器VM上运行了tshark,并看到了同样的情况。(编辑使其简明扼要):
root@6bfcec0a4bd8:/# tshark -f 'port 4739' -d udp.port==4739,cflow -V -i eth1
Capturing on 'eth1'
Frame 64: 314 bytes on wire (2512 bits), 314 bytes captured (2512 bits) on interface 0
...
Ethernet II, Src: 32:fa:b2:2f:bf:4c (32:fa:b2:2f:bf:4c), Dst: 82:9e:f8:b2:e7:27 (82:9e:f8:b2:e7:27)
...
Internet Protocol Version 4, Src: 192.168.2.1, Dst: 192.168.2.2
...
User Datagram Protocol, Src Port: 37512, Dst Port: 4739
...
Cisco NetFlow/IPFIX
Flow 1
Observation Point Id: 456
IfName: myBridge
Protocol: UDP (17)
SrcAddr: 192.168.2.1
DstAddr: 192.168.2.2
SrcPort: 37512 (37512)
DstPort: 4739 (4739)懂得我的意思吗?我的网桥似乎正在报告IPFIX导出本身的流信息。它是精细的…
…除了100%的流量记录和上面的一样。当我在两个测试主机之间运行测试流量时,我从未看到一个记录描述该通信量。绝不可能。这就像网桥只在流描述发送给收集器的流量而忽略所有其他流量时才导出流数据。
在这一点上,我假设我使用的从OVS桥导出流的命令只是导出与桥收集器通信量相关的记录?我是否可以修改这些命令以包含测试主机或只关注测试主机?
发布于 2018-10-22 17:56:45
一个同事发现了我的错误..。我的测试主机并没有真正地连接到我的桥上,尽管我确信它们是连接的。一旦我们正确地连接了测试主机,我就“自动”地看到了我希望看到的输出。
这就是虚拟化的问题,不是吗?有时候你看不到最明显的问题..。感谢所有阅读和考虑我的帖子的人。
https://serverfault.com/questions/936344
复制相似问题