다음과 같이 호스트에서 IEC61850_SV 프로토콜을 사용하여 일련의 테스트 패킷을 전송합니다.
01 0C CD 04 00 03 00 0C CD 04 00 00 81 00 80 01 88 BA 40 03 01 24 00 00 00 00 60 82 01 18 80 01 01 A2 82 01 11 30 82 01 0D 80 1B 50 53 53 43 36 30 31 4D 55 53 56 2F 4C 4C 4E 30 24 4D 53 24 4D 53 56 43 42 30 31 82 02 0B C6 83 04 00 00 00 01 85 01 00 87 81 E0 00 00 00 FA 00 00 00 00 FF EC C5 D9 00 00 00 00 FF EC C5 D9 00 00 00 00 00 12 19 12 00 00 00 00 00 12 19 12 00 00 00 00 00 01 21 24 00 00 00 00 00 01 21 24 00 00 00 00 EC C 5 D9 00 00 00 00 00 12 19 12 00 00 00 00 00 01 21 24 00 00 00 00 FF 90 FD E8 00 00 00 00 FF 90 FD E8 00 00 00 00 00 68 7C DF 00 00 00 00 00 68 7C DF 0 0 00 00 00 00 06 85 39 00 00 00 00 00 06 85 39 00 00 00 00 FF 90 FD E8 00 00 00 00 FF 90 FD E8 00 00 00 00 00 00 00 0F 00 00 00 00 00 00 00 00 00 00 00 FF 90 FD E8 00 00 00 00 FF 90 FD E8 00 00 00 00 00 68 7C DF 00 00 00 00 00 68 7C DF 00 00 00 00 00 06 85 39 00 00 00 00 00 06 85 39 00 00 0 0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Num 000001
Length 314
Capture Length 310
time difference 0.000000000 sec
ethernet - II [0/14]
target 01:0C:CD:04:00:03 [0/6]
source 00:0C:CD:04:00:00 [6/6]
protocal 0x8100 (VLAN) [12/2]
802.1Q vlan protocal [14/4]
Label [14/2]
User priority 100. .... [14/1] 0x00E0
CFI ...0 .... [14/1] 0x0010
VlAN num .... 0000 0000 0001 (1) [14/2] 0x0FFF
protocal 0x88ba (IEC61850_SV) [16/2]
IEC61850 sample value [18/21]
Id 0x4003 [18/2]
length 292 [20/2]
reserved bit1 0x0 [22/2]
reserved bit2 0x0 [24/2]
savPdu [30/0]
application service data units 1 [32/1]
Sequence ASDU [37/0]
ASDU [37/0]
Additional data [39/271]
bytes 271 bytes [39/271]
FCs
FCs 0x2F0CA2EA
그런 다음 대상 컴퓨터에서 tcpdump를 사용하여 패킷을 캡처했습니다. 로그는 다음과 같이 표시됩니다.
09:06:02.562846 00:0c:cd:04:00:00 (oui Unknown) > 01:0c:cd:04:00:03 (oui Unknown), 802.1Q, length 310:
09:06:02.574656 00:0c:cd:04:00:00 (oui Unknown) > 01:0c:cd:04:00:03 (oui Unknown), 802.1Q, length 310:
09:06:02.589684 00:0c:cd:04:00:00 (oui Unknown) > 01:0c:cd:04:00:03 (oui Unknown), 802.1Q, length 310:
09:06:02.605706 00:0c:cd:04:00:00 (oui Unknown) > 01:0c:cd:04:00:03 (oui Unknown), 802.1Q, length 310:
09:06:02.620610 00:0c:cd:04:00:00 (oui Unknown) > 01:0c:cd:04:00:03 (oui Unknown), 802.1Q, length 310:
09:06:02.635996 00:0c:cd:04:00:00 (oui Unknown) > 01:0c:cd:04:00:03 (oui Unknown), 802.1Q, length 310:
09:06:02.650857 00:0c:cd:04:00:00 (oui Unknown) > 01:0c:cd:04:00:03 (oui Unknown), 802.1Q, length 310:
09:06:02.665517 00:0c:cd:04:00:00 (oui Unknown) > 01:0c:cd:04:00:03 (oui Unknown), 802.1Q, length 310:
09:06:02.680210 00:0c:cd:04:00:00 (oui Unknown) > 01:0c:cd:04:00:03 (oui Unknown), 802.1Q, length 310:
09:06:02.695342 00:0c:cd:04:00:00 (oui Unknown) > 01:0c:cd:04:00:03 (oui Unknown), 802.1Q, length 310:
10 packets captured
10 packets received by filter
0 packets dropped by kernel
10 packets dropped by interface
이상한 점은 모든 VLAN 프로토콜 패킷이 인터페이스에 의해 삭제된다는 것입니다. 그런 다음 vconfig add eth0 1
eth0.1을 사용하여 eth0.1 포트를 추가하고 eth0.1을 사용하여 패킷을 수신했는데 패킷이 올바르게 수신되었음을 표시했습니다.
ARP와 같은 다른 패킷은 인터페이스에서 올바르게 수신되기 때문입니다. VLAN 프로토콜이 포함된 패킷이 인터페이스에서 수신되지 않고 인터페이스에서 자동으로 삭제되지만 네트워크 계층에서 구문 분석할 수 없는 이유를 알고 싶습니다. 다시 말하지만, 데이터 링크 계층은 이를 폐기하고 커널은 어떤 데이터도 얻지 못합니다.
cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
eth1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
lo: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
eth0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
VLAN을 추가하는 것 외에 커널이 이러한 패킷을 직접 수신할 수 있는 방법이 있습니까?