LiDAR TAS 실험 결과

IEEE 802.1Qbv Time-Aware Shaper — Ouster OS-1-16 + Microchip LAN9662

12/13
패킷 손실 없음
(스위치 버퍼링)
51.6%
50ms/20% open
최악 Completeness
68.9%
최대 Burst 비율
(5ms / 20% open)
41ms
최대 Inter-Packet Gap
(50ms / 20% open)

실험 구성

Ouster OS-1-16
192.168.6.11
UDP 7502
10Hz / 128 pkts/frame
→ Ethernet →
LAN9662
Port 2 (ingress)
802.1Qbv TAS
Port 1 (egress)
→ Ethernet →
PC
192.168.6.1
USB Ethernet
Python UDP socket
TAS는 Port 1 (egress)에 적용. Gate close 시 스위치가 패킷을 내부 버퍼에 저장하고, gate open 시 일괄 방출(burst). 버퍼 초과 시 패킷 드롭 발생.

LiDAR 스펙

모델Ouster OS-1-16-A0
해상도2048 × 16
회전 속도10 Hz
패킷/프레임128 (16 cols/pkt)
패킷 크기3,328 bytes
패킷 간격~781 µs
데이터 레이트~34 Mbps
전송 시간/pkt~26.6 µs @1Gbps

스위치 스펙

모델Microchip LAN9662
펌웨어VelocitySP v2025.06
포트2× 1Gbps
TAS 표준IEEE 802.1Qbv
최대 GCL 항목8
트래픽 클래스8 (TC0~TC7)
Tick Granularity60 ns
설정 도구keti-tsn-cli (CoAP/MUP1)

측정 결과 (5초 측정 / 설정별)

Completeness vs Gate Schedule

Jitter (Gap StdDev) vs Gate Schedule

Burst Rate vs Gate Schedule

Max Inter-Packet Gap vs Gate Schedule

분석

1. 스위치 버퍼링 효과
13개 설정 중 12개에서 100% 패킷 수신. LAN9662는 gate close 동안 패킷을 내부 큐에 버퍼링하고, gate open 시 line rate로 burst 방출. 짧은 close 구간에서는 1~2개 패킷만 버퍼에 쌓이므로 손실 없음.

2. 패킷 손실 조건
유일한 손실: 50ms / 20% open (51.6%). 40ms close 동안 ~51개 패킷이 버퍼에 도착하나, 10ms open 동안 최대 ~376개 전송 가능 (1Gbps). 따라서 전송 대역폭이 아닌 스위치 내부 버퍼 크기가 병목. LAN9662의 TC0 큐 버퍼가 ~30~40 패킷 수준으로 추정.

3. Burst 패턴
Close 구간이 길수록 burst 비율 증가: 0.1% (baseline) → 68.9% (5ms/20%). Burst 패킷은 < 50µs 간격으로 연속 도착하며, 이는 line rate 전송을 의미. 수신측 어플리케이션의 버퍼 설계 시 고려 필요.

4. 특이 패턴: Cycle-LiDAR 동기화
일부 설정에서 예상보다 낮은 jitter 관찰 (예: 10ms/20% = 158µs, 50ms/50% = 171µs). 이는 TAS cycle과 LiDAR 패킷 간격(781µs)이 정수배 관계에 가까울 때 발생하는 beat frequency 동기화 효과로, 대부분의 gate-open 구간에 패킷이 정확히 맞아떨어짐.

5. 실무 시사점
LiDAR + TSN 환경에서 TAS를 적용할 때, LiDAR 트래픽 클래스에 충분한 open 비율(≥50%)을 할당하면 패킷 손실 없이 다른 TC의 deterministic 전송을 보장할 수 있음. close 구간이 LiDAR 패킷 간격(~781µs) 대비 수십 배를 넘으면 버퍼 오버플로우 위험.

Jitter 원인 진단

게이트가 전부 열려있는데도 stdev ~170µs 수준의 jitter가 관측됨. 원인을 파악하기 위해 TAS cycle time을 1ms/10ms/100ms로 변경하면서 all-open 상태의 jitter를 비교 측정.

결론

TAS gate 전환은 원인이 아님. All-open 상태에서 cycle time을 1ms→10ms→100ms로 변경해도 jitter(stdev)가 167~182µs로 거의 동일. Gate 전환 주기와 무관한 일정한 jitter가 존재.

원인 분석:

  • USB Ethernet 어댑터: URB (USB Request Block) 스케줄링 간격으로 인한 패킷 도착 시간 편차. USB 2.0/3.0 폴링 간격(125µs~1ms)이 패킷 타이밍에 영향
  • 스위치 Store-and-Forward: LAN9662는 cut-through가 아닌 store-and-forward 방식. 3,328B 패킷의 수신 완료 후 전달까지 ~26.6µs + 가변 큐잉 지연
  • OS 스케줄링: Python socket.recvfrom() 호출 시 커널 → 유저스페이스 전환 지연

정량 분석 (All-Open 평균):

  • 정상 범위(500~1200µs): ~91% — 대부분 정상
  • P99 지연: ~1270µs (예상 781µs 대비 +63%)
  • Burst (<50µs): ~0.2% — 프레임 경계 재동기화
  • Large gap (>1200µs): ~2.7% — OS/USB 스케줄링 지연

패킷 간격 분포 (All-Open vs Gated)

Per-Frame Jitter 비교

종합 테스트 스위트

6 categories · 43 configs · Sub-ms ~ 500ms cycle · 2-4 GCL entries
43
총 테스트 수
6개 카테고리
36/43
패킷 수신 성공
(completeness > 0)
7
Total Loss
(0 packets)
13 min
총 측정 시간
(2026-02-24)

Cat 1: Sub-Millisecond Gating

LiDAR 패킷 간격(781µs)보다 짧은 TAS cycle 테스트. 게이트가 패킷 사이사이에서 열고 닫히므로 개별 패킷 차단이 아닌 확률적 지연만 발생. 결과: 10/10 전부 100% 수신.

Cat 2: Buffer Capacity Mapping

Close time을 점진적으로 늘려 버퍼 오버플로우 임계점을 탐색. 발견: close 20ms 이상에서 패킷 손실 시작, 비결정적 패턴 (동기화 효과). 25ms/35ms/45ms에서 total loss이나 20ms/30ms/40ms/50ms에서는 부분 수신 — TAS cycle과 LiDAR 주기의 beat frequency에 따라 결과가 극단적으로 갈림.

Cat 3: Frame-Aligned Gating (100ms = 1 Frame)

100ms cycle = LiDAR 1프레임(128 pkts) 정확히 동기. Close time이 40ms(~51 pkts)에 도달해도 동기화 효과로 패킷이 open 구간에 집중. 결과: 5/5 전부 100% 수신 (50% open까지!).

Cat 4: Multi-GCL Entries

2개 이상의 Gate Control List 항목으로 복잡한 게이트 스케줄 구성. 결과: 짧은 open window(1ms)나 긴 close(20ms)가 포함되면 total loss 가능.

Cat 5: Endurance (60초 측정)

60초 장시간 측정으로 통계 신뢰도 확보. 10초 테스트에서 51.6%였던 50ms/20%가 60초에서는 0% (total loss) — 동기화 위상이 시간에 따라 변동하여 장시간에서는 지속적 수신 불가.

Cat 6: Boundary Conditions

극한 파라미터: 1ms cycle에서 99%/98%/95%/90% open (close 10~100µs), 200ms/80% (40ms close), 500ms/50% (250ms close). 결과: 500ms/50% 250ms close에서도 100% 수신 — 동기화 효과.

Completeness Heatmap: Close Time vs Cycle Time

Close time이 ~20ms를 초과하면 손실 위험 시작. 그러나 TAS cycle과 LiDAR 주기의 beat frequency 동기화에 따라 동일한 close time에서도 결과가 극단적으로 달라질 수 있음 (25ms/35ms/45ms = 0%, 30ms/40ms/50ms = 부분 수신).

TSN 설계 가이드라인

DO

  • Close time ≤ 10ms 유지 (안전 영역)
  • Sub-ms cycle 자유롭게 사용 가능 (100~781µs 전부 100%)
  • LiDAR 프레임 주기(100ms)의 정수배 cycle 활용
  • Open ≥ 50% 할당 시 대부분의 설정에서 안전
  • Multi-GCL 사용 시 개별 open window ≥ 2ms 확보
  • Burst 수신 대비 RX 버퍼 16MB 이상 설정

DON'T

  • Close time ≥ 20ms 사용 금지 (버퍼 오버플로우)
  • Multi-GCL에서 1ms 이하 open window 사용 금지 (total loss)
  • 50ms/20% 등 장시간 close는 단기 테스트도 불안정
  • Beat frequency 동기화에 의존한 설계 금지 (비결정적)
  • 단일 TC에 전체 close 할당 시 해당 TC 트래픽 완전 차단 위험
  • 장시간 운영에서 10초 테스트 결과 외삽 금지

핵심 발견: Beat Frequency 동기화

종합 테스트에서 가장 중요한 발견은 TAS cycle과 LiDAR 패킷 주기 간의 beat frequency 동기화입니다.

현상:

  • 동일한 open %(20%)에서 25ms = 0%, 30ms = 72%, 35ms = 0%, 40ms = 58% — 교대로 성공/실패
  • 500ms/50% (250ms close)에서도 100% 수신 — close 시간보다 동기화가 결정적
  • 100ms cycle (= LiDAR frame period)에서 50%까지 100% — 완벽 동기화

원인:

LiDAR는 자유 구동(free-running) 클럭으로 781µs 간격 패킷을 전송. TAS gate는 독립 클럭으로 동작. 두 주기의 최소공배수(LCM)에 따라 패킷이 gate-open 구간에 집중되거나 분산됨. 이 관계가 정수비에 가까우면 대부분의 패킷이 open 구간에 도착하여 close time이 길어도 손실이 발생하지 않음.

실무 의미:

이 동기화 효과는 비결정적(non-deterministic)이므로 안전 설계에 의존해서는 안 됨. 환경 변화(온도, 클럭 드리프트)에 따라 동기화가 깨질 수 있으며, 장시간 운영 시 위상 관계가 변동하여 갑작스러운 패킷 손실 발생 가능. 10초 단기 테스트와 60초 장기 테스트의 결과 차이(50ms/20%: 51.6% vs 0%)가 이를 증명.

Multi-TC TAS 스케줄링

ROII-Style Per-TC Gate Bitmask · 5 categories · 30 tests · Automotive Sensor Profiles

ROII 센서-TC 매핑 & Gate Bitmask

자동차 자율주행 네트워크(ROII)에서 각 센서는 고유한 Traffic Class(TC)에 매핑됩니다. LAN9662의 8-bit gate-states-value를 사용하여 per-TC 시간 슬롯을 제어합니다.

TC0 (0x01)
LiDAR
Ouster OS-1
34 Mbps
TC6 (0x40)
Radar
MRR-35
1.3 Mbps
TC5 (0x20)
Camera
Simulated
20 Mbps
TC2 (0x04)
Control
CAN/Ethernet
0.5 Mbps
0xFF (Guard)
All TCs Open
Guard Band
TC0 포함
Gate ValueBinaryOpen TC용도
0x0100000001TC0LiDAR 전용 슬롯
0x4001000000TC6Radar 시뮬레이션
0x2000100000TC5Camera 시뮬레이션
0x0400000100TC2Control 시뮬레이션
0xFF11111111전체Guard band (TC0 포함!)
실제 트래픽은 LiDAR(TC0)뿐이지만, 다른 TC gate가 열려도 TC0은 해당 슬롯에서 차단됩니다. Guard band(0xFF)는 TC0을 포함하므로 실질 TC0 시간 = TC0 슬롯 + Guard 슬롯.
30
Multi-TC 테스트
5개 카테고리
25/30
100% 수신
(beat freq 영향 5건)
Beat
비결정적 동기화
TC0%와 무관
6.2 min
총 측정 시간
(2026-02-24)

Cat A: TC0 Allocation Sweep

10ms cycle, 3-entry: TC0(0x01) → TC6(0x40) → TC2(0x04). TC0 할당을 1ms(10%)~8ms(80%)까지 sweep. 발견: TC0=2ms, 4ms에서 total loss — beat frequency 효과! TC0% 증가가 반드시 개선을 의미하지 않음.

Cat B: Fragmentation Effect

동일한 TC0 총 시간(4ms, 40%)을 다르게 분배. 1개 블록 vs 여러 블록. 핵심 발견: 분산 배치(2×2ms, 5×1ms)가 집중 배치(1×4ms)보다 훨씬 안정적! Jitter: 1749µs(1×4ms) → 181µs(2×2ms) → 162µs(5×1ms).

Cat C: Cycle Time Scaling (ROII 비율 고정)

ROII 비율 고정: TC0=40%, TC6=30%, TC2=20%, Guard=10%. Cycle만 2ms→100ms. 20ms와 100ms에서 baseline급 안정 (stdev 160~175µs). 50ms에서 close=25ms로 burst 증가. TC0 effective open = 40% + 10%(guard) = 50%.

Cat D: ROII Realistic Profiles

10ms cycle, 5개 자동차 센서 프로필. 5-entry GCL: TC0 → TC6 → TC5 → TC2 → Guard. LiDAR-Heavy(TC0=6ms+Guard=1ms=70%)가 가장 안정. Camera-Heavy에서 total loss(beat freq).

Cat E: Guard Band Effect

TC0=4ms 고정, Guard band(0xFF) 크기 변화. Guard는 TC0 포함이므로 effective TC0 증가. Guard=2ms(eff 60%)에서 total loss, Guard=3ms(eff 70%)에서 100% — beat frequency. Guard band 자체가 TC0 open 역할도 함.

핵심 발견: Per-TC Bitmask vs Beat Frequency

Per-TC gate bitmask를 사용해도 beat frequency 동기화 효과는 동일하게 나타남.

1. TC0 open % 증가 ≠ 안정성 증가

  • TC0=1ms(10%) = 100%, TC0=2ms(20%) = 0%, TC0=3ms(30%) = 100%
  • gate-states-value가 달라도 TC0 bit가 열려있는 시간의 절대값과 위상이 결정적

2. 분산 배치가 집중 배치보다 유리

  • 1×4ms: burst 51.2%, stdev 1749µs
  • 2×2ms: burst 0.2%, stdev 181µs — 10배 개선!
  • 5×1ms: burst 0.2%, stdev 162µs — 거의 baseline

3. Guard Band = 실질적 TC0 확장

  • Guard band(0xFF)에서 TC0도 열리므로, Guard 시간이 TC0 effective time에 추가
  • Guard=6ms → effective TC0=10ms(100%) → baseline과 동일

4. ROII 설계 권장

  • LiDAR-Heavy 프로필(TC0=6ms+Guard=1ms=70%) 권장
  • TC0 슬롯을 2개 이상으로 분산 배치 (beat frequency 회피)
  • Guard band를 TC0 슬롯 직후에 배치하여 transition margin 확보

Multi-TC TSN 설계 가이드라인

DO

  • TC0 슬롯을 2개 이상으로 분산 배치 (jitter 10배 감소)
  • Guard band(0xFF)를 TC0 직후에 배치 (effective TC0 증가)
  • LiDAR TC에 ≥ 60% effective open 할당
  • 20ms 또는 100ms cycle 사용 (beat frequency 동기화)
  • LiDAR-Heavy 프로필 기본 채택 (TC0=6ms+Guard=1ms)

DON'T

  • TC0를 1개 연속 블록으로 할당 (burst 50%+)
  • beat frequency에 의존한 TC0 할당 (비결정적)
  • Guard band 없이 TC0 직후 다른 TC로 전환
  • Camera-Heavy 처럼 TC0 < 30% 할당 (total loss 위험)
  • 50ms cycle 사용 (close 25ms → 버퍼 위험)