linux 下VLAN数据包格式

主要是对VLAN的数据包格式进行了抓包分析。同时对vconfig命令的适用进行了说明。

PC10.10.107.168  AP10.10.107.231(eth0.100)

1:添加VLAN,使用vconfig

~# vconfig

BusyBoxv1.10.3 (2012-09-23 02:13:20 CST) multi-call binary

Usage:vconfig COMMAND [OPTIONS]...

Create andremove virtual ethernet devices

Options:

        add             [interface-name] [vlan_id]

        rem             [vlan-name]

        set_flag        [interface-name] [flag-num] [0 | 1]

        set_egress_map  [vlan-name] [skb_priority] [vlan_qos]

        set_ingress_map [vlan-name][skb_priority] [vlan_qos]

        set_name_type   [name-type]

 

tcpdump-i br0 -s 0 -w dump.pcap

./tcpdump-i eth0 -xxvv

 route -n

~ #vconfig add eth0 100

~ #ifconfig -a

br0       Link encap:Ethernet  HWaddr 00:03:7F:11:20:00 

          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500 Metric:1

          RX packets:8 errors:0 dropped:0overruns:0 frame:0

          TX packets:0 errors:0 dropped:0overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:410 (410.0 B)  TX bytes:0 (0.0 B)

 

eth0      Link encap:Ethernet  HWaddr 00:03:7F:11:20:00 

          UP BROADCAST RUNNING MULTICAST  MTU:1500 Metric:1

          RX packets:16 errors:0 dropped:0 overruns:0frame:0

          TX packets:0 errors:0 dropped:0overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:1108 (1.0 KiB)  TX bytes:0 (0.0 B)

 

eth0.100  Link encap:Ethernet  HWaddr 00:03:7F:11:20:00 

          BROADCAST MULTICAST  MTU:1500 Metric:1

          RX packets:0 errors:0 dropped:0overruns:0 frame:0

          TX packets:0 errors:0 dropped:0overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

 

lo        Link encap:Local Loopback 

          inet addr:127.0.0.1  Mask:255.0.0.0

          UP LOOPBACK RUNNING  MTU:16436 Metric:1

          RX packets:0 errors:0 dropped:0overruns:0 frame:0

          TX packets:0 errors:0 dropped:0overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

 

teql0     Link encap:UNSPEC  HWaddr00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 

          NOARP MTU:1500  Metric:1

          RX packets:0 errors:0 dropped:0overruns:0 frame:0

          TX packets:0 errors:0 dropped:0overruns:0 carrier:0

          collisions:0 txqueuelen:100

          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Ifconfig  eth0.100  10.10.107.231

         

~# ./tcpdump -i eth0 -xxvv

tcpdump:WARNING: can't create rx ring on packet socket 3: 99-Protocol not available

tcpdump:WARNING: eth0: no IPv4 address assigned

tcpdump:listening on eth0, link-type EN10MB (Ethernet), capture size 68 bytes

00:06:13.184401ARP, Ethernet (len 6), IPv4 (len 4),Request who-has 10.10.107.168 tell10.10.107.231, length 28

        0x0000: ffff ffff ffff 0003 7f112000 8100 0064

        0x0010: 08060001 08000604 0001 0003 7f11 2000

        0x0020: 0a0a 6be7 0000 0000 0000 0a0a 6ba8

00:06:13.184592ARP, Ethernet (len 6), IPv4 (len 4),Reply10.10.107.168 is-at e8:39:35:38:9e:4a(oui Unknown), length 46

        0x0000: 0003 7f11 2000e839 3538 9e4a0806 0001

        0x0010: 0800 0604 0002 e839 3538 9e4a 0a0a 6ba8

        0x0020: 0003 7f11 2000 0a0a 6be7 0000 0000 0000

        0x0030: 0000 0000 0000 0000 0000 0000

00:06:13.958903IP (tos 0x0, ttl 128, id 57182, offset 0, flags [none], proto ICMP (1), length60)

    10.10.107.168 > 10.10.107.231: ICMP echorequest, id 1024, seq 13840, length 40

        0x0000:  0003 7f11 2000 e839 3538 9e4a 0800 4500

        0x0010: 003c df5e 0000 8001 6fbf 0a0a 6ba8 0a0a

        0x0020: 6be7 0800 134c 0400 3610 6162 6364 6566

        0x0030: 6768 696a 6b6c 6d6e 6f70 7172 7374 7576

        0x0040: 7761 6263

00:06:14.196038ARP, Ethernet (len 6), IPv4 (len 4), Requestwho-has10.10.107.168 tell 10.10.107.231, length 28

        0x0000: ffff ffff ffff 0003 7f1120008100 0064

        0x0010: 0806 0001 0800 0604 0001 0003 7f11 2000

        0x0020: 0a0a 6be7 0000 0000 0000 0a0a 6ba8

00:06:14.196524ARP, Ethernet (len 6), IPv4 (len 4),Reply10.10.107.168 is-at e8:39:35:38:9e:4a (oui Unknown), length 46

        0x0000: 0003 7f11 2000 e839 35389e4a 0806 0001

        0x0010: 0800 0604 0002 e839 3538 9e4a 0a0a 6ba8

        0x0020: 0003 7f11 2000 0a0a 6be7 0000 0000 0000

        0x0030: 0000 0000 0000 0000 0000 0000

有上面,可以知道,在我们添加VLAN ID=100时,我们通过ping 10.10.107.168来ping PC就会有上面的信息。村抓得包,我们可以知道,AP àPC 是已经加了VLAN TAG的。

注意上面的数据在试eth0上面抓到的。

而在eth0.100上面的数据如下:只有request。没有replay

~ # ./tcpdump-i eth0.100 -xxvv

deviceeth0.100 entered promiscuous mode

tcpdump:WARNING: can't create rx ring on packet socket 3: 99-Protocol not available

tcpdump:listening on eth0.100, link-type EN10MB (Ethernet), capture size 68 bytes

00:03:35.064079ARP, Ethernet (len 6), IPv4 (len 4),Request who-has10.10.107.168 tell 10.10.107.231, length 28

        0x0000: ffff ffff ffff 0003 7f11 2000 0806 0001

        0x0010: 0800 0604 0001 0003 7f11 2000 0a0a 6be7

        0x0020:  0000 0000 0000 0a0a 6ba8

00:03:36.064043ARP, Ethernet (len 6), IPv4 (len 4),Request who-has10.10.107.168 tell 10.10.107.231, length 28

        0x0000: ffff ffff ffff 0003 7f11 2000 0806 0001

        0x0010: 0800 0604 0001 0003 7f11 2000 0a0a 6be7

        0x0020: 0000 0000 0000 0a0a 6ba8

00:03:37.068137ARP, Ethernet (len 6), IPv4 (len 4),Request who-has10.10.107.168 tell 10.10.107.231, length 28

        0x0000: ffff ffff ffff 0003 7f11 2000 0806 0001

        0x0010: 0800 0604 0001 0003 7f11 2000 0a0a 6be7

        0x0020: 0000 0000 0000 0a0a 6ba8

2:更新部分

vlan协议数据帧格式:

linux 下VLAN数据包格式_第1张图片

vconfig命令的使用说明:

linux 下VLAN数据包格式_第2张图片

linux下vconfig命令实现说明:

linux 下VLAN数据包格式_第3张图片

linux 下VLAN数据包格式_第4张图片

linux 下VLAN数据包格式_第5张图片

vconfig命令设置engree操作:

linux 下VLAN数据包格式_第6张图片

linux 下VLAN数据包格式_第7张图片

和上面的图类似

linux 下VLAN数据包格式_第8张图片

分别通过vconfig 设置不同的priority和vlan_qos,其中priority已经在vconfig的使用中说明了,是skb_buf的数据字段。在我自己的ethernet驱动程序中此值是0;

linux 下VLAN数据包格式_第9张图片


linux 下VLAN数据包格式_第10张图片


你可能感兴趣的:(Linux网络编程)