MB Raw IP Packet Processing Support Study+more

MB miniport drivers that support Raw IP packet frames in their send/receive data path should observe the following guidelines:
Raw IP 패킷 프레임을 지원하는 MB 미니포트 드라이버는 다음의 가이드라인을 지켜야 한다.:

Net buffer list (NBL) flags for RAW IP packet processing

  • For IPv4 packets:
    The NblFlags member of the NET_BUFFER_LIST structure must be set to NDIS_NBL_FLAGS_IS_IPV4.
    The NetBufferListFrameType member of the NET_BUFFER_LIST structure must be set to 0x0800 (Ethertype IPv4) in network byte order.
    NET_BUFFER_LIST 구조체 변수인 NblFlags는 NDIS_NBL_FLAGS_IS_IPV4 로 설정해야함.
  • NET_BUFFER_LIST 구조체 변수인 NetBufferListFrameType은 (네트웍 바이트 order상으로) 0x0800 으로 설정되야함.
  • For IPv6 packets:
    The NblFlags member of NET_BUFFER_LIST structure must be set to NDIS_NBL_FLAGS_IS_IPV6.
    The NetBufferListFrameType member of the NET_BUFFER_LIST structure must be set to 0x86dd (Ethertype IPv6) in network byte order. 
    NET_BUFFER_LIST 구조체 변수인 NblFlags는 NDIS_NBL_FLAGS_IS_IPV6 로 설정해야함.
    NET_BUFFER_LIST 구조체 변수인 NetBufferListFrameType은 (네트웍 바이트 order상으로) 0x086dd 으로 설정되야함.

Miniport drivers can use the the NdisSetNblFlag macro to set flags in the net buffer list. The following line demonstrates how to set IPv4 packet flag in the net buffer list:

미니포트 드라이버는 NdisSetNblFlag 매크로를 사용하여 넷 버퍼 리스트에 flag를 설정할수 있다. 다음을 참고할것:


NdisSetNblFlag(pNbl, NDIS_NBL_FLAGS_IS_IPV4);


Miniport drivers can use the NET_BUFFER_LIST_INFO to get and set information in a net buffer list. The following line demonstrates how to modify the NetBufferListFrameType OOB in the network buffer list for IPV4 packets:

미니포트 드라이버는 NET_BUFFER_LIST_INFO 를 통해서 넷 버퍼 리스트의 정보를 get/set 할수 있다. 다음은 IPV4 타입으로 설정하는 예 이다:


Value = ConvertToNetworkByteOrder(0x0800);

Send Path Processing

The MB Service will set these flags in the NBL before passing the list to the miniport driver to send across the network. The miniport driver can verify the flags in the input NBL.

미니포트 드라이버는 넘겨받은 NBL의 flag 들을 검증할 수 있다.

Receive Path Processing

Miniport drivers should set flags in the NBL before passing the NBL to the MB Service for received packets.

If your miniport driver implements Raw IP Packet Processing during its driver development phase, but still has DHCP server spoofing enabled (EnableDhcp = 1), your miniport driver should ensure following:
만약 미니포트 드라이버 개발중에 Raw IP Packet 프로세싱을 구현해야 하는데, DHCP 서버 spoofing 이 활성화 되어 있다면, 다음을 따라야 한다:

  • The hardware address and its length set in DHCP response from the miniport driver should match the values of the CurrentMacAddress and MacAddressLength members specified by the miniport driver in the NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES structure.
    NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES 구조체에 있는 CurrentMacAddress와 MacAddressLength 값으로 DHCP의 응답에 들어가는 hardware address와 length에 넣어주어야 한다.
  • Transaction ID (the xid member) of the DHCP response from the miniport driver should match exactly the transaction ID set in the DHCP request message from the client. 
    DHCP 응답의 트랜잭션 ID를 요청된 DHCP 메세지의 트랜잭션 ID로 설정해야 한다.

덧글

댓글 입력 영역