openflow パケットのプログラミングについて質問があります。openflow ネットワークをセットアップし、wireshark でコントローラーとスイッチ間のパケットをキャプチャし、pcap ファイルに保存しました。ここで、このファイルを C プログラムで読み取り、openflow 制御パケット ヘッダーを分析したいと考えています。1 つの解決策は、ファイルをバイトごとに読み取り、openflow パケットを分離することだと思いますが、それは有用な方法ではないようです。私の質問は、openflow パケットのヘッダーを読み取って操作するための機能を提供する C 言語の特別なライブラリ (pcap など) はありますか? 私の質問をさらに解決するために、たとえば、libpcap を使用してこれらの手順でパケットの MAC アドレスを簡単に見つけることができます。
.........
#include "pcap.h"
.........
pcap_t* descr;
const u_char *packet;
struct pcap_pkthdr hdr; /* pcap.h */
struct ether_header *eptr; /* net/ethernet.h */
u_char* args = NULL;
u_char *ptr; /* printing out hardware header info */
..........
..........
/* grab a device to peak into... */
dev = pcap_lookupdev(errbuf);
descr = pcap_open_live(dev,BUFSIZ,0,-1,errbuf);
// we will get the packet here from the interface
packet = pcap_next(descr,&hdr);
if(packet == NULL)
{
printf("Didn't grab packet\n");
exit(1);
}
eptr = (struct ether_header *) packet;
ptr = eptr->ether_dhost;
i = ETHER_ADDR_LEN;
printf(" Source Address: ");
do{
printf("%s%x",(i == ETHER_ADDR_LEN) ? " " : ":",*ptr++);
}while(--i>0);
知りたいのですが、このような Openflow パケット ヘッダーを見つける方法はありますか?