Automotive Software
프로토콜 체크섬 및 오프로딩 (Protocol checksums and offloading) 본문
체크섬은 왜 필요한가?
체크섬은 네트워크상에서 뿐만 아니라 플래시 메모리와 같은 저장장치상에서의 데이터 일관성을 확인하기 위한 수단으로 사용된다.
네트워크의 경우 대부분 데이터 전송 시에 발생되는 에러(예, 비트 손실 또는 중복)로 인해 일관성을 해치게 되는데, 프로토콜 내 특정 주소에 할당된 체크섬 영역에 정의된 범위만큼의 체크섬 값을 송신부에서 먼저 계산 후 기록하고, 수신부에서 동일한 공식으로 계산된 체크섬값과의 일치여부를 확인함으로써 일관성을 검증하게 된다.
저장장치상에서는 장치상의 오류(예, 메모리 셀 오류)로 인해 일관성을 해치는 경우가 대부분인데, 방식에는 차이가 있으나 데이터 기록 전 일관성 확인이 필요한 바이트 스트림의 마지막 부분에 체크섬값을 계산하여 추가하고, 데이터 기록 후 읽어 들이는 시점에 장치상의 바이트 스트림값을 토대로 계산한 체크섬 값과의 일치여부를 확인함으로써 일관성을 검증하게 된다.
체크섬 오프로딩
네트워크에서 사용되는 체크섬은 각 프로토콜 계층, 드라이버 또는 네트워크 하드웨어상에 구현이 되는데, 최근에는 상위 프로토콜(예, IP 계층)에서 사용되는 체크섬을 하드웨어상에서 구현하여 소프트웨어의 부하를 줄여주는 기능이 제공되기도 하는데 이를 체크섬 오프로링이라한다.
이 기능을 사용하여 네트워크 스택을 구현할 경우 한 가지 고려할 사항은, 패킷 디버깅을 위해 상위 스택과 네트워크 하드웨어 사이에 모니터링 툴 (예, 와이어샤크)을 사용할 경우, 실제 체크섬 값이 하드웨어에 의해 추가되기 전 해당 패킷이 유효하지 않은 것으로 화면상에 표시되므로 시각적으로 좋게 보이지 않을 수 있는 점이다.