일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- slowpath
- Linux
- commit
- 카프카
- mm_struct
- slub
- buddy_system
- page
- pmap
- devicedriver
- vm_area_struct
- spinlock
- BLOCK
- vmalloc
- NDK
- Network
- memory
- lruvec
- multiqueue
- allocator
- Kernel
- proc
- Apache
- blk-mq
- kafka
- Android
- fastpath
- slab
- strex
- kmalloc
- Today
- Total
Art of Pr0gr4m
Linux Kernel Network Commit #1 본문
netdev 트리에 ip6_forward() 함수와 mpls_forward() 함수에 커밋했다.
kernel/git/netdev/net.git - Netdev Group's networking tree
ip6_forward() 함수에서 hop_limit 카운터 체크 -> 온전성 검사 -> hop_limit 카운터 감소 순으로 작업을 수행한다.
온전성 검사 중에 NDP 프록시 체크 부분이 있는데, 패킷을 drop하는 다른 검사들과 달리 NDP 프록시라면 SKB를 로컬에 deliver해준다.
해당 과정에서 NDP 프록시 또한 hop이므로 hop_limit 감소가 필요한데, 해당 내용이 누락되어서 추가하였다.
ipv6: decrease hop limit counter in ip6_forward() · torvalds/linux@46c7655 (github.com)
kernel/git/netdev/net-next.git - Netdev Group's -next networking tree
mpls_forward() 함수에서 포워딩 시 레이블의 ttl 값을 감소시킨다.
그런데, ip_forward() 함수나 ip6_forward()에서 수행하는 것처럼 ttl 값을 체크한 후 바로 감소할 필요 없이, 온전성 검사를 수행한 이 후 감소해도 무관한다.
온전성 검사를 통과하지 못하여 drop되는 패킷에 대해서는 ttl 감소를 수행하지 않는 것으로 최적화를 할 수 있다.
단, mpls_egress() 함수에서 감소된 ttl 값을 사용하기 때문에 해당 함수가 호출되기 전에 ttl 감소를 수행해줘야 한다.
따라서, 기존에 ttl을 바로 감소시키던 루틴을 온전성 검사 수행 후에 감소시키는 루틴으로 변경시켰다.
마이너 트리에만 커밋하거나, 메이저 트리에는 trivial 커밋만 하다가
메이저 트리에 의미 있는 커밋이 들어가 기분 좋은 성과이다.
'IT' 카테고리의 다른 글
병렬성(Parallelism)과 동시성(Concurrency) (0) | 2024.07.21 |
---|---|
Linux Kernel Network Commit #3 (0) | 2021.08.25 |
Linux Kernel Network Commit #2 (1) | 2021.08.20 |
Linux Kernel 참고 사이트 추천 (4) | 2021.07.27 |
데이터 분석 시각화 블로그 링크 (0) | 2016.11.09 |