CN1992675B - 一种保证网络地址转换设备与外网互通的方法 - Google Patents

一种保证网络地址转换设备与外网互通的方法 Download PDF

Info

Publication number
CN1992675B
CN1992675B CN200510135671XA CN200510135671A CN1992675B CN 1992675 B CN1992675 B CN 1992675B CN 200510135671X A CN200510135671X A CN 200510135671XA CN 200510135671 A CN200510135671 A CN 200510135671A CN 1992675 B CN1992675 B CN 1992675B
Authority
CN
China
Prior art keywords
icmp
nat
module
message
port
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN200510135671XA
Other languages
English (en)
Other versions
CN1992675A (zh
Inventor
洪先进
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZTE Corp
Original Assignee
ZTE Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CN200510135671XA priority Critical patent/CN1992675B/zh
Publication of CN1992675A publication Critical patent/CN1992675A/zh
Application granted granted Critical
Publication of CN1992675B publication Critical patent/CN1992675B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

一种保证网络地址转换设备与外网互通的方法,应用于NAT设备,该设备包括NAT模块和ICMP模块。NAT设备从内部接口收到ICMP报文后,如该报文需要进行PAT转换但没有映射条目,且NAT模块为其分配了本地地址和端口时,向ICMP模块发送申请预留消息,携带该端口的值;ICMP模块判断与该端口值相同的ICMP标识是否已使用,如果是,回复失败消息,否则预留该值的ICMP标识不再分配,回复成功消息;NAT模块如果收到失败消息,重新分配端口,再次申请预留;如果收到成功消息,在映射表中创建该ICMP报文的映射条目,进行正常的NAT转发。本发明可避免NAT设备生成的ICMP报文与转发ICMP报文产生端口冲突。

Description

一种保证网络地址转换设备与外网互通的方法
技术领域
本发明涉及网络通信领域,特别涉及通过网络地址转换进行网络互联的方法。
背景技术
随着因特网的迅速发展,因特网网络地址日益面临被耗尽的危险。为了使局域网中的多台主机能够通过有限的几个公网地址接入Internet,一种NAT(NetworkAddress Translation,即网络地址转换)技术应运而生。NAT技术是一种地址转换技术,通常用于内部网络内具有私有IP地址的主机访问外部网络时,将该主机的内部局部地址(Inside Local Address)转换为一个外部唯一可识别的合法IP地址(Inside Global Address);同时,将外部网络返回给内部网络主机的合法IP地址(Inside Global Address)映射回在内部网络中该主机的私有IP地址(Inside Local Address),使得不同私有网络可以使用相同的私有IP地址段,并能和外部网络进行正常通信,却不会导致地址信息出现混乱。从而扩展了IP地址的应用范围,在一定程度上缓解了当前IPv4地址空间不足的问题。
在NAT技术中有一种动态可重用NAT的技术,也叫做NAPT(NetworkAddress Port Translation,即网络地址端口转换)或者PAT(Port AddressTranslation,即端口地址转换),该技术根据内部主机的IP地址加端口对(IP,Port)来进行NAT转换。由于每一个可分配的内部全局地址都有近64K个端口可以用来做端口地址转换,所以如果在内部全局地址池里有N个地址的话,就可以对内部网络实现N*64K个IP地址加端口对进行NAT转换,大大地扩充了可进行NAT转换的内部网络主机数量。这种技术对于TCP/UDP(传输控制协议/用户数据报协议)报文是非常合适有效的,但是对于ICMP(因特网控制消息协议)报文,由于报文没有端口,似乎就无法处理了。目前的解决方案是:利用ICMP Identifier(ICMP标识)(下面简称ICMP ID)来代替报文的源端口,从而通过IP地址加ICMP ID来进行NAT转换。
由于公网地址非常紧缺和宝贵,为了节约公网地址资源,还开发了一种动态端口转换复用接口地址NPAT的技术,该技术将NAT设备的接口地址配置在NAT地址池中,它通过端口区分的方式,不仅能使NAT设备可以和外部网络进行正常通信,还能进行正常的PAT功能。
对于采用这种技术的NAT设备上,对于TCP/UDP的应用所使用的端口一般都小于某个固定值A,因此只要在PAT转换中不分配A以下的端口值,就可以保证NAT设备既可以和外部网络进行正常通信,同时也可以正常进行PAT转换。但是,对于NAT设备生成的ICMP报文来说,其ICMP ID的值为1~65535,不会小于某个固定值A。而在现有的NPAT技术实现中,对于ICMP报文的PAT转换是利用ICMP ID代替端口进行转换的,即分配的端口值与ICMP ID相同。因此,它存在着一个明显的缺陷,即一旦NAT设备生成的ICMP报文中的ID与NAT映射条目中分配的端口相同时,就会产生端口冲突,从而导致内部主机通过NPAT转换ping不通外部主机(或网络),或者NAT设备ping不通外部主机(或网络)。
同样,当NAT设备在outside(外部)接口接收到目的地址为本地地址的ICMP报文,并且报文中的identifier与ICMP映射条目中的端口值相同时,也无法判定该报文是发送到本地设备的还是需要进行NAT转换送往内部主机(或网络)的,从而导致外部主机ping不通NAT设备。
发明内容
本发明要解决的技术问题是提供一种保证网络地址转换设备与外网互通的方法,能够避免NAT设备生成的ICMP报文与转发ICMP报文产生端口冲突。
为了解决上述技术问题,本发明提供一种保证网络地址转换设备与外网互通的方法,应用于网络地址转换设备,该设备包括用于转发因特网控制消息协议ICMP报文的网络地址转换NAT模块和用于收发和处理本地ICMP报文的ICMP模块,该方法包括以下步骤:
(a)当NAT设备从内部接口收到ICMP报文,NAT模块判断ICMP报文需要进行端口地址转换PAT但发现映射表中没有相应映射条目,且为其分配了本地地址和端口时,向ICMP模块发送申请预留消息,携带该端口的值;
(b)ICMP模块收到所述ID申请预留消息后,判断与该端口值相同的ICMP标识是否已使用,如果是,回复失败消息,执行步骤(c);否则预留与该端口值相同的ICMP标识不再分配,回复成功消息,执行步骤(d);
(c)NAT模块收到失败消息后,重新分配端口,再次向ICMP模块发送ID申请预留消息,返回步骤(b);
(d)NAT模块收到成功消息后,在映射表中创建该ICMP报文的映射条目,进行正常的NAT转发。
进一步地,上述方法还可具有以下特点:还包括以下释放预留的ICMP标识的处理过程:
(h)NAT模块需要删除PAT映射条目时,如果该条目的协议类型是ICMP协议且内部全局地址为本地地址,则提取该条目中分配的端口值,向ICMP模块发送释放消息;
(i)ICMP模块收到该释放消息后,释放预留的与该端口值相同的ICMP标识,向NAT模块回复释放成功消息;
(j)NAT模块收到释放成功消息后,直接删除该映射条目。
进一步地,为了正确区分从外部接口接收的ICMP报文是需要进行NAT转发还是由本地ICMP模块处理,本发明方法还包括以下对外部接口收到的ICMP报文的处理过程:
(o)NAT设备从外部接口收到ICMP报文,如ICMP报文需NAT转换,由NAT模块查映射表中是否有该ICMP报文的映射条目,如果有,执行步骤(p),如果没有,执行步骤(s);
步骤(p),NAT模块再判断该映射条目是否为PAT映射条目,如果是,执行步骤(q),否则按正常的NAT转发处理,结束;
步骤(q),判断该ICMP报文的类型是否响应报文,如果是,执行步骤(r),否则,执行步骤(s);
步骤(r),进行NAT的转发处理,结束;
步骤(s),将该ICMP报文交给ICMP模块处理,结束;
进一步地,上述方法还可具有以下特点:所述步骤(a)NAT模块向ICMP模块发送ID申请预留消息后,记录分配的端口值并等待ICMP模块的应答消息,如果等待超时,则向ICMP模块重发该ID申请预留消息。
进一步地,上述方法还可具有以下特点:所述步骤(h)和步骤(p)中,NAT模块是通过映射条目的端口值判断该条目是否为PAT映射条目,如端口值不为0,则该条目是PAT映射条目,否则不是PAT映射条目。
进一步地,上述方法还可具有以下特点:所述步骤(o)中,NAT设备是通过以下方式判断收到的ICMP报文是否需进行NAT转换的:根据ICMP报文的目的地址查找路由,如路由条目中的NAT标志被置位,则认为该ICMP报文需进行NAT转换。
由上可知,本发明在原有的技术基础上增加了NAT模块与ICMP模块之间的交互,使得NAT设备生成的ICMP报文的ID不会与PAT ICMP映射条目中的端口冲突,保证NAT设备能够正确区分本地接收的ICMP报文,使得NAT设备可以和外部网络在进行ping操作时可以互通。
附图说明
图1是NAT设备网络通信示意图;
图2是本发明实施例中NAT设备在Inside接口接收到ICMP报文后处理的基本流程图;
图3是本发明实施例中NAT设备释放预留的ICMP ID的基本流程图;
图4是本发明实施例中ICMP模块收到ID申请预留消息的基本流程图;
图5是本发明实施例中NAT设备在outside接口接收到目的地址为本地地址的ICMP报文后,NAT模块处理的基本流程图。
具体实施方式
下面结合附图和实施例对本发明做进一步地详细描述。
为了清楚说明,我们将NAT设备中进行端口地址转换的部分称为NAT模块,将生成和处理ICMP报文的部分称为ICMP模块。
图2示出了本发明实施例中NAT设备在Inside(内部)接口方向接收到内部主机发送的ICMP报文后的处理流程,当系统判定报文需要进行NAT转换并需要新创建映射条目时,NAT模块进行如下步骤的处理:
步骤100,判断该ICMP报文需要进行的转换是否PAT转换,如果是,进行步骤110;否则进行正常NAT转换流程,结束;
步骤110,提取ICMP报文中的源地址和ID号查找NAT转换条目映射表,如果查找失败,即映射表中没有相应的映射条目,则进行步骤120,否则直接进行NAT转换,结束;
步骤120,为该ICMP报文分配内部全局地址和端口;
步骤130,判断内部全局地址是否为本地地址,如果是,表示该ICMP报文需要进行的转换是NPAT转换,进行步骤140,否则,表示该ICMP报文需要进行的是普通的PAT转换,则进行正常NAT转换流程,结束;
步骤140,记录分配的端口值,并向ICMP模块发送ID申请预留消息,该消息中包括分配的该端口值;
步骤150,等待ICMP模块的应答消息,如果等待超时,进行步骤160,如果收到返回的响应消息,进行步骤170;
步骤160,向ICMP模块重发ID申请预留消息,返回步骤150;
步骤170,判断接收的消息类型,如果为申请预留成功消息,则进行步骤180;如果是申请预留失败消息,表示ICMP模块中与分配端口相同的ID已经被使用,则重新分配本地地址和端口,进行步骤130;
步骤180,在映射表中创建内部主机IP、ICMP ID号与分配的内部IP地址、公用端口的PAT映射条目,然后进行正常的NAT转发。
图3示出了本发明实施例中NAT模块删除映射条目的处理流程,当NAT模块在准备删除一条映射条目时,进行如下步骤:
步骤210,判断该映射条目是否为PAT映射条目且协议类型为ICMP类型,如果是,进行步骤220;否则进行正常NAT删除操作,结束;
本实施例是根据映射条目中的端口值来判断是否为PAT映射条目的,PAT映射条目的端口值不为0,非PAT映射条目的端口值为0。
步骤220,判断该映射条目的内部全局地址是否为本地地址,如果是,进行步骤230;否则进行正常的PAT条目删除操作,结束;
步骤230,提取该映射条目中的端口值并向ICMP模块发送ICMP ID释放消息,该释放消息中包括该端口值;
步骤240,当收到ICMP模块发送的ICMP ID释放成功消息后,直接删除该映射条目。
图4示出了本发明实施例中ICMP模块接收到来自NAT模块的消息后的流程,包括如下步骤:
步骤310,判断接收的消息类型,如果是ICMP ID申请预留消息,进行步骤320;如果为ICMP ID释放消息,进行步骤350;
步骤320,根据该申请预留消息中的端口值判断与该值相同的ICMP ID是否已经被使用,如果是,进行步骤330;否则进行步骤340;
步骤330,向NAT模块发送申请预留失败消息,结束;
步骤340,预留该ICMP ID值,不再分配给ICMP报文,并向NAT模块发送“申请预留成功”消息,结束;
步骤350,根据该释放消息中的端口值,找到并释放值与该端口值相同的ICMP ID,并向NAT模块发送“释放成功”消息。
在本实施例中,在现有的技术基础上增加了NAT模块与ICMP模块之间的交互,在NPAT转换时,通知ICMP模块预留了值与NPAT转换中端口值相同的ID,在NAT设备生成ICMP报文时,就不会使用该ID,由此,NAT设备生成的ICMP报文的ID就不会与PAT ICMP映射条目中的端口冲突了。因而避免了端口冲突。不会出现内部主机通过NPAT转换ping不通外部主机(或网络),或者NAT设备ping不通外部主机(或网络)的情况。
但是,对于外部主机ping NAT设备的情形,由于在外部主机ping NAT设备时,ICMP报文中的ID是外部主机生成的,其ID值无法控制。因此,在outside接口收到目的地址为本地地址的ICMP报文且报文中的ID与ICMP映射条目中的端口值相同时,由于该端口值即可能是分配给内部主机发送的ICMP,也是能是分配给ICMP模块发送的ICMP,所以,还是无法判定该报文是发送到本地设备的还是需要进行NAT转换送往内部主机。
图5示出了本发明实施例当NAT设备从外部接口接收到ICMP报文后的流程,包括如下步骤:
步骤410,判断接收到的ICMP报文是否需要进行NAT转换,如果是,进行步骤420;否则进行普通的报文转发流程,结束;
在本实施例中,根据报文目的地址查路由,如果发现NAT标志被置位,则表示路由条目是NAT转换生成的,需要进行NAT转换。
步骤420,将报文送到NAT模块;
步骤430,通过该ICMP报文的源IP地址和ICMP ID号来查映射表,如果查到,进行步骤440,如果查不到,进行步骤460;
对于发送给NAT设备的应答报文,查找映射表时肯定失败,因为NAT设备发出的ICMP报文,报文的ID不会和NAT映射条目中的端口值相同,这就是前面预留ICMP ID的目的,此时应交给ICMP模块处理。只有是发往内部主机的应答,查映射表时才会成功。
步骤440,判断该ICMP报文需要进行的转换是否PAT转换,如查出的映射条目中的端口值不为0,则为PAT转换,进行步骤450,否则,进行正常NAT转发流程,结束;
步骤450,判断该ICMP报文类型是否为ICMP请求报文,如果是,进行步骤460;否则,即为ICDMP响应报文,进行步骤470;
步骤460,将报文直接交给ICMP模块进行处理,结束;
步骤470,进行PAT的转发处理,结束。
由于目前对于动态NAT转换不支持从外部主机ping内部主机,因此对于从外部接口收到的ICMP请求报文无需进行NAT处理,只需将它送到ICMP模块进行相应的操作,或应答或丢弃。

Claims (6)

1.一种保证网络地址转换设备与外网互通的方法,应用于网络地址转换设备,该设备包括用于转发因特网控制消息协议ICMP报文的网络地址转换NAT模块和用于收发和处理本地ICMP报文的ICMP模块,该方法包括以下步骤:
(a)当NAT设备从内部接口收到ICMP报文,NAT模块判断ICMP报文需要进行端口地址转换PAT,但发现映射表中没有相应映射条目,且为其分配了本地地址和端口时,向ICMP模块发送ID申请预留消息,携带该端口的值;
(b)ICMP模块收到所述ID申请预留消息后,判断与该端口值相同的ICMP标识是否已使用,如果是,回复失败消息,执行步骤(c);否则预留与该端口值相同的ICMP标识不再分配,回复成功消息,执行步骤(d);
(c)NAT模块收到失败消息后,重新分配端口,再次向ICMP模块发送ID申请预留消息,返回步骤(b);
(d)NAT模块收到成功消息后,在映射表中创建该ICMP报文的映射条目,进行正常的NAT转发。
2.如权利要求1所述的方法,其特征在于,还包括以下释放预留的ICMP标识的处理过程:
(h)NAT模块需要删除PAT映射条目时,如果该条目的协议类型是ICMP协议且内部全局地址为本地地址,则提取该条目中分配的端口值,向ICMP模块发送释放消息;
(i)ICMP模块收到该释放消息后,释放预留的与该端口值相同的ICMP标识,向NAT模块回复释放成功消息;
(j)NAT模块收到释放成功消息后,直接删除该映射条目。
3.如权利要求1或2所述的方法,其特征在于,还包括以下对外部接口收到的ICMP报文的处理过程:
(o)NAT设备从外部接口收到ICMP报文,如ICMP报文需NAT转换,由NAT模块查映射表中是否有该ICMP报文的映射条目,如果有,执行步骤(p),如果没有,执行步骤(s);
步骤(p),NAT模块再判断该映射条目是否为PAT映射条目,如果是,执行步骤(q),否则按正常的NAT转发处理,结束;
步骤(q),判断该ICMP报文的类型是否响应报文,如果是,执行步骤(r),否则,执行步骤(s);
步骤(r),进行NAT的转发处理,结束;
步骤(s),将该ICMP报文交给ICMP模块处理,结束。
4.如权利要求1所述的方法,其特征在于,所述步骤(a)NAT模块向ICMP模块发送ID申请预留消息后,记录分配的端口值并等待ICMP模块的应答消息,如果等待超时,则向ICMP模块重发该ID申请预留消息。
5.如权利要求3所述的方法,其特征在于,所述步骤(h)和步骤(p)中,NAT模块是通过映射条目的端口值判断该条目是否为PAT映射条目,如端口值不为0,则该条目是PAT映射条目,否则不是PAT映射条目。
6.如权利要求3所述的方法,其特征在于,所述步骤(o)中,NAT设备是通过以下方式判断收到的ICMP报文是否需进行NAT转换的:根据ICMP报文的目的地址查找路由,如路由条目中的NAT标志被置位,则认为该ICMP报文需进行NAT转换。
CN200510135671XA 2005-12-31 2005-12-31 一种保证网络地址转换设备与外网互通的方法 Expired - Fee Related CN1992675B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200510135671XA CN1992675B (zh) 2005-12-31 2005-12-31 一种保证网络地址转换设备与外网互通的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200510135671XA CN1992675B (zh) 2005-12-31 2005-12-31 一种保证网络地址转换设备与外网互通的方法

Publications (2)

Publication Number Publication Date
CN1992675A CN1992675A (zh) 2007-07-04
CN1992675B true CN1992675B (zh) 2010-07-14

Family

ID=38214631

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200510135671XA Expired - Fee Related CN1992675B (zh) 2005-12-31 2005-12-31 一种保证网络地址转换设备与外网互通的方法

Country Status (1)

Country Link
CN (1) CN1992675B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101179506B (zh) * 2007-11-26 2010-06-02 中兴通讯股份有限公司 私网终端对公网终端进行检测的方法
CN101800690B (zh) * 2009-02-05 2012-08-15 北京启明星辰信息技术股份有限公司 一种使用地址池实现源地址转换的方法和装置
CN101577676B (zh) * 2009-06-10 2011-12-07 杭州华三通信技术有限公司 一种实现粘性访问的方法和装置
CN101605105B (zh) * 2009-07-14 2012-05-09 中兴通讯股份有限公司 一种对分片报文进行网络地址转换的方法及设备
CN105791167B (zh) * 2014-12-25 2019-01-25 华为技术有限公司 一种资源预留方法、装置和系统
CN104579939B (zh) * 2014-12-29 2021-02-12 网神信息技术(北京)股份有限公司 网关的保护方法和装置
CN105356618B (zh) * 2015-12-04 2018-06-26 国网冀北电力有限公司 一体化监控系统的故障录波器联网方法
CN108173928B (zh) * 2017-12-26 2019-02-05 北京百度网讯科技有限公司 Udp数据传输的方法、装置、存储介质及终端设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1411231A (zh) * 2002-10-17 2003-04-16 武汉邮电科学研究院 移动ip中一种数据包传输的方法
CN1574773A (zh) * 2003-06-03 2005-02-02 华为技术有限公司 网关地址和网络地址转换地址池中地址重叠的实现方法
CN1645831A (zh) * 2005-03-04 2005-07-27 北京交通大学 一种基于IPv6的移动互联网络接入技术
US20050220144A1 (en) * 2004-03-31 2005-10-06 Kabushiki Kaisha Toshiba Communication apparatus, name resolution method and program
CN1691664A (zh) * 2004-04-21 2005-11-02 华为技术有限公司 Nat-pt网关中pat模式下icmp差错报文的转换方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1411231A (zh) * 2002-10-17 2003-04-16 武汉邮电科学研究院 移动ip中一种数据包传输的方法
CN1574773A (zh) * 2003-06-03 2005-02-02 华为技术有限公司 网关地址和网络地址转换地址池中地址重叠的实现方法
US20050220144A1 (en) * 2004-03-31 2005-10-06 Kabushiki Kaisha Toshiba Communication apparatus, name resolution method and program
CN1691664A (zh) * 2004-04-21 2005-11-02 华为技术有限公司 Nat-pt网关中pat模式下icmp差错报文的转换方法
CN1645831A (zh) * 2005-03-04 2005-07-27 北京交通大学 一种基于IPv6的移动互联网络接入技术

Also Published As

Publication number Publication date
CN1992675A (zh) 2007-07-04

Similar Documents

Publication Publication Date Title
CN1992675B (zh) 一种保证网络地址转换设备与外网互通的方法
JP3531367B2 (ja) トランスレータ
EP2645679B1 (en) Method and apparatus for message transmission
US6453357B1 (en) Method and system for processing fragments and their out-of-order delivery during address translation
KR100560737B1 (ko) 듀얼스택을 이용한 아이피브이4 - 아이피브이6 전환 장치및 그 방법
US8238336B2 (en) Method for forwarding data packet, system, and device
US8909812B2 (en) Method and device for communication for host device with IPv4 application
US8582599B2 (en) Translator for IP networks, network system using the translator, and IP network coupling method therefor
JPH10247946A (ja) ネットワーク接続方式および方法ならびにネームサーバ
RU2275756C2 (ru) Способ автоматического получения ip адреса для устройства
US10708225B2 (en) Resolving uplink interface overlap for a network switching device
US20230246994A1 (en) Address management method, apparatus, and system
JPH11252172A (ja) パケット生成方法およびその機能を有する情報処理装置並びにパケット生成プログラムを記録した記録媒体
WO2002080494A1 (en) Packet switching networks
CN100479457C (zh) 一种实现虚拟私有网络中数据传输的方法
JP2007081456A (ja) 変換装置
EP3029913A1 (en) Method for processing raw ip packet, and corresponding apparatus
JP2007096539A (ja) 変換装置
JP4151699B2 (ja) 変換装置及び管理方法
JP3900157B2 (ja) トランスレータ
CN115550316B (zh) 容器化网络系统、容器化ipv6通信方法及装置、介质、设备
KR100471791B1 (ko) 맥 어드레스 처리 방법
JP3791496B2 (ja) パケット送受信ノード及びパケット送受信方法
JP2005026897A (ja) ネットワーク間接続装置
JP2005318121A (ja) セッション管理装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100714

Termination date: 20141231

EXPY Termination of patent right or utility model