fix(native): advance anchor data sequence after SYN
This commit is contained in:
parent
93d1b7a948
commit
f74ade94db
4 changed files with 34 additions and 6 deletions
|
|
@ -5,11 +5,12 @@
|
||||||
> Persona subject: `ICE-P-ZY001 EXISTS_100`.
|
> Persona subject: `ICE-P-ZY001 EXISTS_100`.
|
||||||
>
|
>
|
||||||
> Protected native residency and recovery control are `PASS_100`. Production
|
> Protected native residency and recovery control are `PASS_100`. Production
|
||||||
> cutover remains `0`: the 2026-08-07 physical anchor gate reached the native
|
> cutover remains `0`: the first 2026-08-07 physical anchor gate exposed a
|
||||||
> runtime and completed heartbeat sequences 1-6, but a real JD Cloud TCP SYN
|
> fixed 20-byte TCP-header assumption. The option-aware retry completed the
|
||||||
> carried a 40-byte TCP header and exposed the fixed-header parser defect.
|
> real TCP handshake and transmitted the full anchor response, but reused the
|
||||||
> Linux remains the unattended default while the option-aware parser is
|
> SYN-ACK sequence number for data, so a standards-compliant client discarded
|
||||||
> validated and the physical HTTP gate is rerun.
|
> the first response byte. Linux remains the unattended default while the
|
||||||
|
> corrected server sequence progression is validated and rerun physically.
|
||||||
|
|
||||||
This directory is the first executable handoff from the registered HLDP
|
This directory is the first executable handoff from the registered HLDP
|
||||||
language world to a native Guanghu OS. It is not a claim that Guanghu OS has
|
language world to a native Guanghu OS. It is not a claim that Guanghu OS has
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,25 @@ correction:
|
||||||
qemu_syn_tcp_header_bytes: 40
|
qemu_syn_tcp_header_bytes: 40
|
||||||
qemu_get_tcp_header_bytes: 32
|
qemu_get_tcp_header_bytes: 32
|
||||||
option_aware_qemu_gate: PASS_100
|
option_aware_qemu_gate: PASS_100
|
||||||
|
option_aware_physical_retry:
|
||||||
|
candidate_sha256: 4093a6df881062321d6f5e7066fd7817e7a9964e41b0ca078d847ffcd9d94b22
|
||||||
|
accepted_repository_commit: 93d1b7ad5136a6c2117889d742a3c9bfc09ba5e5
|
||||||
|
network_preflight: PASS_100
|
||||||
|
native_heartbeat_sequences_1_to_6: PASS_100
|
||||||
|
tcp_connect: PASS_100
|
||||||
|
native_syn_ack_tx_proof_byte: 1
|
||||||
|
native_http_response_tx_proof_byte: 1
|
||||||
|
transmitted_prefix: TTP/1.1
|
||||||
|
complete_anchor_body_transmitted: true
|
||||||
|
strict_http_client: FAIL_0_HTTP_0_9
|
||||||
|
diagnosis: SYN_ACK_AND_DATA_REUSED_SERVER_SEQUENCE
|
||||||
|
protected_recovery: PASS_100
|
||||||
|
linux_boot_id_after: eabe3414-aba3-4853-beee-aa9411ad6921
|
||||||
|
linux_default_preserved: gnulinux-simple-9e4550a0-452b-4f28-b5a5-d5364aa450f6
|
||||||
|
sequence_correction:
|
||||||
|
syn_ack_server_sequence: GHOS
|
||||||
|
data_server_sequence: GHOS_PLUS_1
|
||||||
|
qemu_asserts_syn_consumes_one_sequence: true
|
||||||
gates:
|
gates:
|
||||||
native_anchor_http_qemu_capability: 100
|
native_anchor_http_qemu_capability: 100
|
||||||
native_anchor_http_physical_capability: 0
|
native_anchor_http_physical_capability: 0
|
||||||
|
|
|
||||||
|
|
@ -1403,6 +1403,10 @@ ghal_net_send_anchor_tcp:
|
||||||
mov ax, [VIRTIO_NET_RX_BUFFER + rcx]
|
mov ax, [VIRTIO_NET_RX_BUFFER + rcx]
|
||||||
mov [VIRTIO_NET_TX_BUFFER + 46], ax
|
mov [VIRTIO_NET_TX_BUFFER + 46], ax
|
||||||
mov eax, 0x534f4847
|
mov eax, 0x534f4847
|
||||||
|
test byte [rel ghal_anchor_tcp_flags], 0x02
|
||||||
|
jnz .server_sequence_ready
|
||||||
|
add eax, 0x01000000
|
||||||
|
.server_sequence_ready:
|
||||||
mov [VIRTIO_NET_TX_BUFFER + 48], eax
|
mov [VIRTIO_NET_TX_BUFFER + 48], eax
|
||||||
mov eax, [VIRTIO_NET_RX_BUFFER + rcx + 4]
|
mov eax, [VIRTIO_NET_RX_BUFFER + rcx + 4]
|
||||||
bswap eax
|
bswap eax
|
||||||
|
|
|
||||||
|
|
@ -201,6 +201,7 @@ def main() -> None:
|
||||||
recovery_verified = False
|
recovery_verified = False
|
||||||
anchor_syn_sent = False
|
anchor_syn_sent = False
|
||||||
anchor_syn_ack_verified = False
|
anchor_syn_ack_verified = False
|
||||||
|
anchor_server_sequence = None
|
||||||
anchor_get_sent = False
|
anchor_get_sent = False
|
||||||
anchor_http_verified = False
|
anchor_http_verified = False
|
||||||
|
|
||||||
|
|
@ -220,6 +221,7 @@ def main() -> None:
|
||||||
server_sequence, acknowledgement, payload = verify_anchor_tcp(frame, 0x12)
|
server_sequence, acknowledgement, payload = verify_anchor_tcp(frame, 0x12)
|
||||||
assert acknowledgement == ANCHOR_CLIENT_SEQUENCE + 1
|
assert acknowledgement == ANCHOR_CLIENT_SEQUENCE + 1
|
||||||
assert payload == b""
|
assert payload == b""
|
||||||
|
anchor_server_sequence = server_sequence
|
||||||
anchor_syn_ack_verified = True
|
anchor_syn_ack_verified = True
|
||||||
request = (
|
request = (
|
||||||
b"GET /v1/anchor HTTP/1.1\r\n"
|
b"GET /v1/anchor HTTP/1.1\r\n"
|
||||||
|
|
@ -238,7 +240,9 @@ def main() -> None:
|
||||||
)
|
)
|
||||||
anchor_get_sent = True
|
anchor_get_sent = True
|
||||||
continue
|
continue
|
||||||
_, acknowledgement, payload = verify_anchor_tcp(frame, 0x19)
|
server_sequence, acknowledgement, payload = verify_anchor_tcp(frame, 0x19)
|
||||||
|
assert anchor_server_sequence is not None
|
||||||
|
assert server_sequence == anchor_server_sequence + 1
|
||||||
assert acknowledgement > ANCHOR_CLIENT_SEQUENCE + 1
|
assert acknowledgement > ANCHOR_CLIENT_SEQUENCE + 1
|
||||||
header, body = payload.split(b"\r\n\r\n", 1)
|
header, body = payload.split(b"\r\n\r\n", 1)
|
||||||
assert b"HTTP/1.1 200 OK" in header
|
assert b"HTTP/1.1 200 OK" in header
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue