From 2672a66932f8cfa4409057ca33205ca09601e7d0 Mon Sep 17 00:00:00 2001 From: yangyanjun <ic-include@163.com> Date: Mon, 28 Nov 2022 16:49:39 +0800 Subject: [PATCH] =?UTF-8?q?newip=E5=BC=80=E5=8F=91=E6=89=8B=E5=86=8C?= =?UTF-8?q?=E6=A3=80=E8=A7=86=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yangyanjun <yangyanjun@huawei.com> --- .../kernel/kernel-standard-newip.md | 46 +++++++++---------- 1 file changed, 21 insertions(+), 25 deletions(-) diff --git a/zh-cn/device-dev/kernel/kernel-standard-newip.md b/zh-cn/device-dev/kernel/kernel-standard-newip.md index 3b0efa4425..895a1b2551 100644 --- a/zh-cn/device-dev/kernel/kernel-standard-newip.md +++ b/zh-cn/device-dev/kernel/kernel-standard-newip.md @@ -28,7 +28,7 @@ New IPè½½è·ä¼ 输效率,相比IPv4æ高最少1%,相比IPv6æ高最少2.33 ## å¯å˜é•¿æŠ¥å¤´æ ¼å¼ -New IP WiFiçµæ´»æžç®€æŠ¥æ–‡å¤´å¦‚下图所示,通过LLC Headerä¸çš„EtherType = 0xEADDæ ‡è¯†New IP报文。Bitmap是一组由0å’Œ1组æˆçš„二进制åºåˆ—,æ¯ä¸ªäºŒè¿›åˆ¶ä½çš„æ•°å€¼ç”¨äºŽè¡¨ç¤ºç‰¹å®šç›®æ ‡å—段的å˜åœ¨æ€§ã€‚ +New IP WiFiçµæ´»æžç®€æŠ¥æ–‡å¤´å¦‚下图所示,通过LLC Headerä¸çš„EtherType = 0xEADDæ ‡è¯†New IP报文。Bitmap是一组由0å’Œ1组æˆçš„二进制åºåˆ—,æ¯ä¸ªäºŒè¿›åˆ¶ä½çš„数值用于表示New IP报头ä¸æ˜¯å¦æºå¸¦æŸä¸ªå—段,å³New IP报文头å¯ä»¥ç”±ç”¨æˆ·æ ¹æ®ä¸šåŠ¡åœºæ™¯è‡ªè¡Œå®šåˆ¶æŠ¥å¤´ä¸æºå¸¦å“ªäº›å—段。  @@ -89,23 +89,31 @@ New IP支æŒå¯å˜é•¿åœ°å€ï¼ˆIPv4/IPv6地å€é•¿åº¦å›ºå®šï¼‰ï¼Œæ”¯æŒè‡ªè§£æž ## New IPé…置指导 -å¯ç”¨New IP,需è¦é€šè¿‡ç¼–è¯‘å†…æ ¸æ—¶æ‰“å¼€ç›¸åº”çš„é…置项åŠä¾èµ–,New IP相关CONFIG如下: +### New IP使能 -```c +ç›®å‰åªæœ‰rk3568å¼€å‘æ¿Linux 5.10å†…æ ¸ä¸Šæ”¯æŒNew IPå†…æ ¸åè®®æ ˆï¼Œåœ¨rk3568å¼€å‘æ¿å†…æ ¸æ¨¡å—é…置文件ä¸æœç´¢NEWIP,将其修改æˆâ€œCONFIG_XXX=yâ€å³å¯ï¼ŒNew IP相关CONFIG如下。 + +``` +# kernel/linux/config/linux-5.10/arch/arm64/configs/rk3568_standard_defconfig CONFIG_NEWIP=y // 使能New IPå†…æ ¸åè®®æ ˆ CONFIG_NEWIP_HOOKS=y // 使能New IPå†…æ ¸ä¾µå…¥å¼ä¿®æ”¹æ’桩函数注册,使能New IPçš„åŒæ—¶å¿…须使用New IP HOOKS功能 +VENDOR_HOOKS=y // ä½¿èƒ½å†…æ ¸æ’桩基础框架(New IPä¾èµ–æ¤é…置项,rk3568å¼€å‘æ¿å·²é»˜è®¤å¼€å¯) ``` -å¦æœ‰éƒ¨åˆ†CONFIG被ä¾èµ–: +代ç 编译完æˆåŽï¼Œé€šè¿‡ä¸‹é¢å‘½ä»¤å¯ä»¥ç¡®è®¤New IPåè®®æ ˆä»£ç 是å¦ä½¿èƒ½æˆåŠŸã€‚ -```c -VENDOR_HOOKS=y // ä½¿èƒ½å†…æ ¸æ’桩基础框架 +``` +find out/ -name *nip*.o +... +out/kernel/OBJ/linux-5.10/net/newip/nip_addrconf_core.o +out/kernel/OBJ/linux-5.10/net/newip/nip_hdr_decap.o +out/kernel/OBJ/linux-5.10/net/newip/nip_addr.o +out/kernel/OBJ/linux-5.10/net/newip/nip_checksum.o +out/kernel/OBJ/linux-5.10/net/newip/tcp_nip_output.o +... ``` -备注: - -1. åªåœ¨Linux 5.10å†…æ ¸ä¸Šæ”¯æŒNew IPå†…æ ¸åè®®æ ˆã€‚ -2. OpenHarmony linuxå†…æ ¸è¦æ±‚æ‰€æœ‰åŽŸç”Ÿå†…æ ¸ä»£ç 侵入å¼ä¿®æ”¹ï¼Œéƒ½è¦ä¿®æ”¹æˆæ’æ¡©æ–¹å¼ã€‚ +备注:OpenHarmony linuxå†…æ ¸è¦æ±‚æ‰€æœ‰åŽŸç”Ÿå†…æ ¸ä»£ç 侵入å¼ä¿®æ”¹ï¼Œéƒ½è¦ä¿®æ”¹æˆæ’æ¡©æ–¹å¼ã€‚例如下é¢IPv4,IPv6åè®®æ ˆå…¬å…±æµç¨‹ä¸å¢žåŠ New IP处ç†æ—¶ï¼Œä¸èƒ½ç›´æŽ¥è°ƒç”¨New IP函数,需è¦åœ¨å…¬å…±æµç¨‹ä¸å¢žåŠ æ’桩点,New IP使能åŽåœ¨æ¨¡å—åˆå§‹åŒ–时将xx功能函数注册到对应的函数指针上,下é¢å…¬å…±æµç¨‹å°±å¯ä»¥é€šè¿‡å‡½æ•°æŒ‡é’ˆçš„å½¢å¼è°ƒç”¨åˆ°New IP的函数。 ```c /* å°†New IP ehashå‡½æ•°æ³¨å†Œåˆ°å†…æ ¸ */ @@ -142,24 +150,12 @@ static u32 sk_ehashfn(const struct sock *sk) } ``` +### New IPç¦ç”¨ +在rk3568å¼€å‘æ¿å†…æ ¸æ¨¡å—é…置文件ä¸æœç´¢NEWIP,将其“CONFIG_NEWIP=yâ€å’Œâ€œCONFIG_NEWIP_HOOKS=yâ€åˆ 除或使用#注释掉å³å¯ã€‚ -代ç 编译完æˆåŽï¼Œé€šè¿‡ä¸‹é¢å‘½ä»¤å¯ä»¥ç¡®è®¤New IPåè®®æ ˆä»£ç 是å¦ä½¿èƒ½æˆåŠŸã€‚ - -```c -find out/ -name *nip*.o -out/rk3568/obj/third_party/glib/glib/glib_source/guniprop.o -out/kernel/OBJ/linux-5.10/net/newip/nip_addrconf_core.o -out/kernel/OBJ/linux-5.10/net/newip/nip_hdr_decap.o -out/kernel/OBJ/linux-5.10/net/newip/nip_addr.o -out/kernel/OBJ/linux-5.10/net/newip/nip_checksum.o -out/kernel/OBJ/linux-5.10/net/newip/tcp_nip_output.o -... ``` - -ç¦ç”¨New IPå†…æ ¸åè®®æ ˆï¼Œåˆ é™¤CONFIG_NEWIPä½¿èƒ½å¼€å…³ï¼Œåˆ é™¤out/kernel目录åŽé‡æ–°ç¼–译。 - -```c +# kernel/linux/config/linux-5.10/arch/arm64/configs/rk3568_standard_defconfig # CONFIG_NEWIP is not set # CONFIG_NEWIP_HOOKS is not set ``` -- GitLab