发明名称 网路位址-埠转换装置及方法
摘要 一种网路位址-埠转换(NAPT)装置及方法,系以硬体电路实作于一网路交换控制器中,该装置包含:一转换表,储存 NAPT连结之相关资讯;一IP表,储存可用之转换IP;一封包解析器,接收欲进行网路位址-埠转换之封包,解析其相关栏位,并依据其传输方向产生部分索引值;以及一封包转换模组,执行NAPT的动作。对于正向封包,本发明系运用转换表与IP表之相关索引值的检索及特殊记录方式,产生转换 IP与埠码,以对该正向封包进行NAPT的动作;对于反向封包,则进行对应该特殊记录方式之还原动作,藉以进一步检验反向封包的合法性及后续网路位址-埠的转换。
申请公布号 TWI232655 申请公布日期 2005.05.11
申请号 TW091109399 申请日期 2002.05.07
申请人 瑞昱半导体股份有限公司 发明人 陈俊儒;刘醇丰
分类号 H04L12/00 主分类号 H04L12/00
代理机构 代理人 何文渊 台北市信义区松德路171号2楼
主权项 1.一种网路位址-埠转换(NAPT)装置,系用于一网路交换控制器中,该装置包含:一转换表,包含一具复数个第一储存元件之阵列,每一第一储存元件具一第一索引値且至少包含一储存位置,每一储存位置具一第三索引値且储存一连结(connection)之相关资讯,该相关资讯至少包含一来源IP与一来源埠;一IP表,包含复数个第二储存元件,每一第二储存元件具一第二索引値且至少储存一转换IP;一封包解析器,接收一欲进行NAPT动作之正向封包,解析出该正向封包之相关栏位,并根据该相关栏位产生一EIDX及一GIDX;以及一封包转换模组,耦接至该IP表、该转换表及该封包解析器,用以执行NAPT的动作,并以该EIDX为索引维护(maintain)该转换表,以使得第一索引値为EIDX之第一储存元件中,有一第三索引値为S之储存位置,储存着该正向封包所属连结的相关资讯,俾进行后续该连结相关资讯之存取,并且,另以该GIDX检索IP表,以取得第二索引値为GIDX的第二储存元件之转换IP;其中该封包转换模组依据EIDX、GIDX及S执行一记录程序,以便封包解析器于收到一反向封包时,可由封包解析器与封包转换模组协力进行一与该记录程序对应之还原程序,以尝试还原出一EIDX2、一GIDX2及一S2,藉以进一步检验该反向封包是否合法,其中由该记录程序可得一转换埠码,封包转换模组并将该正向封包之来源IP与来源埠分别改写为第二索引値为GIDX的第二储存元件之转换IP及该转换埠码。2.如申请专利范围第1项所述之网路位址-埠转换装置,其中该交换控制器位于一内部网路与外部网路之介面上,该正向封包系由该内部网路传往外部网路,该反向封包则由该外部网路传至该内部网路。3.如申请专利范围第1项所述之网路位址-埠转换装置,其中该反向封包为合法之条件包含由该还原程序可还原得该EIDX2、该GIDX2及该S2,以使得第二索引値为GIDX2之第二储存元件所存之转换IP等于该反向封包之目的IP,且第一索引値为EIDX2之第一储存元件中,第三索引値为S2的储存位置之使用位元已设定。4.如申请专利范围第3项所述之网路位址-埠转换装置,其中若该还原程序已因接收该反向封包而执行,且该反向封包经检验系为合法,则封包转换模组即将该反向封包之目的IP与目的埠分别改写为第一索引値为EIDX2之第一储存元件中,第三索引値为S2之储存位置的来源IP与来源埠。5.如申请专利范围第3项所述之网路位址-埠转换装置,其中若由该还原程序无法还原得该GIDX2,则封包转换模组即丢弃该反向封包。6.如申请专利范围第1项所述之网路位址-埠转换装置,其中该阵列之每一储存位置更储存一使用位元,若该使用位元已设定,则代表该储存位置为使用中,若该使用位元未设定,则代表该储存位置为未使用。7.如申请专利范围第6项所述之网路位址-埠转换装置,其中封包转换模组维护该转换表时,系先寻找第一索引値为EIDX之第一储存元件中,是否存在一已设定使用位元之第一储存位置,以使得该第一储存位置所存之来源IP及来源埠分别等于该正向封包之来源IP及来源埠,若是则该第一储存位置之第三索引値即为S,若否则接着寻找第一索引値为EIDX之第一储存元件中,是否存在一未设定使用位元之第二储存位置,若是则设定该第二储存位置之使用位元,且将第二储存位置之来源IP及来源埠分别设为该正向封包之来源IP及来源埠,而第二储存位置之第三索引値即为S。8.如申请专利范围第7项所述之网路位址-埠转换装置,其中该连结之相关资讯更包含一连结时间,若封包转换模组找到该第二储存位置,则将该第二储存位置之连结时间设为一预设之T。9.如申请专利范围第8项所述之网路位址-埠转换装置,其中封包转换模组每隔一预设之单位时间,即将该阵列中已设定使用位元之所有储存位置的连结时间递减一第一値,若有任一第三储存位置之连结时间到达一第一临限値,则将该第三储存位置之使用位元清除。10.如申请专利范围第9项所述之网路位址-埠转换装置,其中T为一正整数,该第一値为1,该第一临限値为0。11.如申请专利范围第3项所述之网路位址-埠转换装置,其中该连结之相关资讯更包含一埠码偏移量(port number offset)。12.如申请专利范围第11项所述之网路位址-埠转换装置,其中IP表之每一第二储存元件更储存一最大埠码偏移量与一最小埠码偏移量。13.如申请专利范围第12项所述之网路位址-埠转换装置,其中若封包转换模组找到该第二储存位置,则进一步检查该第二储存位置之埠码偏移量是否落在第二索引値为GIDX之第二储存元件的最小埠码偏移量与最大埠码偏移量间,若是则将该第二储存位置之埠码偏移量递增一,若否则将该第二储存位置之埠码偏移量设为第二索引値为GIDX之第二储存元件的最小埠码偏移量。14.如申请专利范围第11项所述之网路位址-埠转换装置,其中封包转换模组执行该记录程序之依据更包含第一索引値为EIDX之第一储存元件中,第三索引値为S之储存位置的埠码偏移量。15.如申请专利范围第14项所述之网路位址-埠转换装置,其中封包解析器与封包转换模组协力进行该还原程序之所得更包含一第二埠码偏移量,该反向封包为合法之条件更包含第一索引値为EIDX2之第一储存元件中,第三索引値为S2之储存位置的埠码偏移量等于该第二埠码偏移量。16.如申请专利范围第3项所述之网路位址-埠转换装置,其中该交换控制器更包含一CPU,耦接至该网路位址-埠转换装置,用以接手处理该网路位址-埠转换装置无法转换之封包。17.如申请专利范围第16项所述之网路位址-埠转换装置,其中该阵列之每一第一储存元件更储存一CPU位元。18.如申请专利范围第17项所述之网路位址-埠转换装置,其中若封包转换模组未找到该第一储存位置,则进一步检查第一索引値为EIDX之第一储存元件的CPU位元是否已设定,若是则将该正向封包交给该CPU处理,若否则接续寻找该第二储存位置。19.如申请专利范围第17项所述之网路位址-埠转换装置,其中若封包转换模组未找到该未设定使用位元之第二储存位置,则设定第一索引値为EIDX之第一储存元件的CPU位元,并将该封包交给CPU处理。20.如申请专利范围第17项所述之网路位址-埠转换装置,其中若由该还原程序可还原得该GIDX2,使得第二索引値为GIDX2之第二储存元件的转换IP等于该反向封包之目的IP,且第一索引値为EIDX2之第一储存元件中,第三索引値为S2的储存位置之使用位元未设定,则封包转换模组继续检查第一索引値为EIDX2之第一储存元件的CPU位元是否已设定,若是则将该反向封包交给CPU处理,若否则丢弃该反向封包。21.如申请专利范围第14项所述之网路位址-埠转换装置,其中该正向封包之相关栏位系包含来源IP、来源埠、目的IP以及目的埠。22.如申请专利范围第21项所述之网路位址-埠转换装置,其中该封包解析器系以该正向封包之相关栏位为输入値,利用一第一杂凑函数(hash function)产生该EIDX,并以EIDX之前m个位元为该GIDX,m为大于零之整数。23.如申请专利范围第22项所述之网路位址-埠转换装置,其中由该记录程序所得之转换埠码系由第一索引値为EIDX之第一储存元件中第三索引値为S之储存位置的埠码偏移量、EIDX及S依一特定顺序串列而成。24.如申请专利范围第21项所述之网路位址-埠转换装置,其中该封包解析器系以该正向封包之相关栏位为输入値,利用一第二杂凑函数产生一IDX,且以该正向封包之来源IP为输入値,利用一第三杂凑函数产生该GIDX,并将最高位元至最低位元由GIDX及IDX依序串列而成EIDX。25.如申请专利范围第24项所述之网路位址-埠转换装置,其中由该记录程序所得之转换埠码系由第一索引値为EIDX之第一储存元件中第三索引値为S之储存位置的埠码偏移量、IDX及S依一特定顺序串列而成。26.如申请专利范围第21项所述之网路位址-埠转换装置,其中该封包解析器系以该正向封包之相关栏位为输入値,利用一第四杂凑函数产生该EIDX,并以该正向封包之来源IP为输入値,利用一第五杂凑函数产生该GIDX。27.如申请专利范围第26项所述之网路位址-埠转换装置,其中由该记录程序所得之转换埠码系由第一索引値为EIDX之第一储存元件中第三索引値为S之储存位置的埠码偏移量、GIDX、EIDX及S依一特定顺序串列而成。28.如申请专利范围第26项所述之网路位址-埠转换装置,其中该阵列之每一储存位置均增设一储存第二索引値的栏位。29.如申请专利范围第28项所述之网路位址-埠转换装置,其中由该记录程序所得之转换埠码系由第一索引値为EIDX之第一储存元件中第三索引値为S之储存位置的埠码偏移量、EIDX及S依一特定顺序串列而成,另若封包转换模组找到该第二储存位置,则该记录程序更包含将GIDX存入该第二储存位置中存放第二索引値的栏位。30.一种网路位址-埠转换(NAPT)方法,系用于一网路交换控制器中,该交换控制器包含一转换表及一IP表,该转换表包含复数个第一储存元件,每一第一储存元件具一第一索引値并至少储存一使用位元、一第一IP及一埠码,该IP表包含复数个第二储存元件,每一第二储存元件具一第二索引値且至少储存一第二IP,若交换控制器收到一欲进行NAPT动作之正向封包,则该方法对该正向封包执行下列步骤:(a)依据该正向封包之相关栏位,产生对应之一EIDX及一GIDX;(b)检查该转换表中第一索引値为该EIDX之第一储存元件的使用位元是否已设定,若否则针对第一索引値为EIDX之第一储存元件,设定其使用位元,并将其第一IP及埠码分别设为该正向封包之来源IP及来源埠,并跳至步骤(d),若是则接续以下步骤;(c)检查第一索引値为EIDX之第一储存元件所存之第一IP及埠码是否分别等于该正向封包之来源IP及来源埠,若是则接续以下步骤;(d)以EIDX及GIDX为依据,执行一记录程序,该记录程序具一对应之还原程序,可于收到一欲进行NAPT动作之反向封包时执行,藉以进一步检验该反向封包是否合法,其中由该记录程序可得一转换埠码;(e)将该正向封包之来源IP及来源埠分别改为第二索引値为GIDX之第二储存元件的第二IP及步骤(d)所得之该转换埠码。31.一种网路位址-埠转换(NAPT)方法,系用于一网路交换控制器中,该交换控制器包含一转换表及一IP表,该转换表包含一具复数个第一储存元件之阵列,每一第一储存元件具一第一索引値且至少包含两个储存位置,每一储存位置具一第三索引値且至少储存一使用位元、一第一IP及一埠码,该IP表包含复数个第二储存元件,每一第二储存元件具一第二索引値且至少储存一第二IP,若交换控制器收到一欲进行NAPT动作之正向封包,则该方法系对该正向封包执行下列步骤:(a)依据该正向封包之相关栏位,产生对应之一EIDX及一GIDX;(b)寻找该阵列中第一索引値为EIDX之第一储存元件中,是否存在一已设定使用位元之第一储存位置,以使得该第一储存位置所存之第一IP及埠码分别等于该正向封包之来源IP及来源埠,若是则令一变数S等于该第一储存位置之第三索引値,并跳至步骤(d),若否则接续以下步骤;(c)寻找第一索引値为EIDX之第一储存元件中,是否存在一未设定使用位元之第二储存位置,若是则设定该第二储存位置之使用位元,且将第二储存位置之第一IP及埠码分别设为该正向封包之来源IP及来源埠,并令S等于第二储存位置之第三索引値,接续以下步骤;(d)以EIDX、GIDX及S为依据,执行一记录程序,该记录程序具一对应之还原程序,可于收到一欲进行NAPT动作之反向封包时执行,藉以进一步检验该反向封包是否合法,其中由该记录程序可得一转换埠码;(e)将该正向封包之来源IP及来源埠分别改为第二索引値为GIDX之第二储存元件的第二IP及步骤(d)所得之该转换埠码。32.如申请专利范围第31项所述之网路位址-埠转换方法,其中若交换控制器收到步骤(d)所提到之该反向封包,则跳至步骤(f),继续执行下列步骤:(f)对该反向封包进行该还原程序,以尝试还原出一EIDX2、一GIDX2及一S2,若皆可还原出,则接续以下步骤;(g)若GIDX2并非藉由寻找IP表中,其第二IP与该反向封包之目的IP相等的第二储存元件而取得,则检查第二索引値为GIDX2之第二储存元件的第二IP是否等于反向封包之目的IP,若是则接续以下步骤;(h)检查第一索引値为EIDX2之第一储存元件中,第三索引値为S2之储存位置的使用位元是否已设定,若是则接续以下步骤;(i)将反向封包之目的IP及目的埠分别改为第一索引値为EIDX2之第一储存元件中,第三索引値为S2之储存位置所存之第一IP及埠码。33.如申请专利范围第31项所述之网路位址-埠转换方法,其中该交换控制器位于一内部网路与外部网路之介面上,该正向封包系由该内部网路传往外部网路,该反向封包则由该外部网路传至该内部网路。34.如申请专利范围第31项所述之网路位址-埠转换方法,其中在步骤(a)前更包含一步骤(a0):(a0)解析出该正向封包之相关栏位。35.如申请专利范围第32项所述之网路位址-埠转换方法,其中该正向封包之相关栏位系包含来源IP、来源埠、目的IP及目的埠。36.如申请专利范围第31项所述之网路位址-埠转换方法,其中该阵列之每一储存位置更储存一连结时间,若步骤(c)中找到该第二储存位置,则将该第二储存位置之连结时间设为一预设之T。37.如申请专利范围第36项所述之网路位址-埠转换方法,更包含每隔一预设之单位时间,即将该阵列中已设定使用位元之所有储存位置的连结时间递减一第二値,若有任一第三储存位置之连结时间到达一第二临限値,则将该第三储存位置之使用位元清除。38.如申请专利范围第37项所述之网路位址-埠转换方法,其中T为一正整数,该第二値为1,该第二临限値为0。39.如申请专利范围第32项所述之网路位址-埠转换方法,其中若步骤(g)之检查结果为否,则丢弃该反向封包。40.如申请专利范围第32项所述之网路位址-埠转换方法,其中该交换控制器更包含一CPU,每一第一储存元件更储存一CPU位元。41.如申请专利范围第40项所述之网路位址-埠转换方法,其中若步骤(b)中未找到该第一储存位置,则该方法在步骤(b)后及步骤(c)前更包含一步骤(b1):(b1)检查第一索引値为EIDX之第一储存元件的CPU位元是否已设定,若是则将该正向封包交给CPU处理,若否则接续以下步骤。42.如申请专利范围第40项所述之网路位址-埠转换方法,其中步骤(c)中,若未找到该未设定使用位元之第二储存位置,则设定第一索引値为EIDX之第一储存元件的CPU位元,并将该正向封包交给CPU处理。43.如申请专利范围第40项所述之网路位址-埠转换方法,其中若步骤(h)之检查结果为否,则继续检查第一索引値为EIDX2之第一储存元件的CPU位元是否已设定,若是则将该反向封包交给CPU处理,若否则丢弃该反向封包。44.如申请专利范围第32项所述之网路位址-埠转换方法,其中该阵列之每一储存位置更储存一埠码偏移量。45.如申请专利范围第44项所述之网路位址-埠转换方法,其中每一第二储存元件更储存一最大埠码偏移量与一最小埠码偏移量。46.如申请专利范围第45项所述之网路位址-埠转换方法,其中步骤(c)中若找到该第二储存位置,则进一步检查该第二储存位置之埠码偏移量是否落在第二索引値为GIDX之第二储存元件的最小埠码偏移量与最大埠码偏移量间,若是则将该第二储存位置之埠码偏移量递增一,若否则将该第二储存位置之埠码偏移量设为第二索引値为GIDX之第二储存元件的最小埠码偏移量。47.如申请专利范围第44项所述之网路位址-埠转换方法,其中步骤(d)中执行该记录程序之依据更包含第一索引値为EIDX之第一储存元件中,第三索引値为S之储存位置的埠码偏移量。48.如申请专利范围第47项所述之网路位址-埠转换方法,其中步骤(f)中进行该还原程序之所得更包含一第一埠码偏移量,步骤(h)更包含检查第一索引値为EIDX2之第一储存元件中,第三索引値为S2之储存位置的埠码偏移量是否等于该第一埠码偏移量。49.如申请专利范围35项所述之网路位址-埠转换方法,其中步骤(d)之该记录程序包含:依据GIDX是否为EIDX之一部分(portion)及该阵列之每一储存位置是否增设一储存第二索引値的栏位,选择性地使用GIDX,搭配EIDX与S作为一组输入値,以一函数产生该转换埠码,其中该函数具一反函数(inverse function);以及若该阵列之每一储存位置有增设该储存第二索引値的栏位且执行步骤(c)时有找到该第二储存位置,则将GIDX存入第一索引値为EIDX之第一储存元件中,第三索引値为S之储存位置的第二索引値栏位。50.如申请专利范围第49项所述之网路位址-埠转换方法,其中该函数系将其输入値依一特定顺序串列,以产生该转换埠码。51.如申请专利范围第49项所述之网路位址-埠转换方法,其中步骤(d)中,若GIDX为EIDX之前m个位元,m为大于零之整数,则该记录程序中选择不使用GIDX。52.如申请专利范围第51项所述之网路位址-埠转换方法,其中步骤(f)之该还原程序系包含以反向封包之目的埠为输入値,执行该反函数,以得EIDX2及S2,并以EIDX2之前m个位元为GIDX2。53.如申请专利范围第49项所述之网路位址-埠转换方法,其中步骤(d)中,若GIDX并非EIDX之该部分,且该阵列之每一储存位置未增设储存第二索引値的栏位,则该记录程序中选择使用GIDX。54.如申请专利范围第53项所述之网路位址-埠转换方法,其中步骤(f)之该还原程序系包含以反向封包之目的埠为输入値,执行该反函数,以得该EIDX2、GIDX2及S2。55.如申请专利范围第49项所述之网路位址-埠转换方法,其中步骤(d)中,若GIDX并非EIDX之该部分,且该阵列之每一储存位置有增设储存第二索引値的栏位,则该记录程序中选择不使用GIDX。56.如申请专利范围第55项所述之网路位址-埠转换方法,其中步骤(f)之该还原程序系包含以反向封包之目的埠为输入値,执行该反函数,以得该EIDX2及S2,并以第一索引値为EIDX2之第一储存元件中第三索引値为S2之储存位置所存之第二索引値为GIDX2。57.如申请专利范围第51、53或55项所述之网路位址-埠转换方法,其中步骤(a)中,该EIDX系以该正向封包之相关栏位为输入値,利用一第一杂凑函数所产生。58.如申请专利范围第53或55项所述之网路位址-埠转换方法,其中步骤(a)中,该GIDX系以该正向封包之来源IP为输入値,利用一第二杂凑函数所产生。59.如申请专利范围第35项所述之网路位址-埠转换方法,其中步骤(a)中EIDX与GIDX之产生方式为:以该正向封包之相关栏位为输入値,利用一第一函数产生一IDX,并以该正向封包之来源IP为输入値,利用一第二函数产生GIDX;以及将最高位元至最低位元由GIDX及IDX依序串列而成EIDX。60.如申请专利范围第59项所述之网路位址-埠转换方法,其中该第一与第二函数皆为杂凑函数。61.如申请专利范围第59项所述之网路位址-埠转换方法,其中步骤(d)之该记录程序包含以IDX与S作为输入値,利用一第三函数产生该转换埠码,其中该第三函数具一反函数。62.如申请专利范围第61项所述之网路位址-埠转换方法,其中该第三函数系将其输入値依一特定顺序串列,以产生该转换埠码。63.如申请专利范围第61项所述之网路位址-埠转换方法,其中步骤(f)之该还原程序系包含:以反向封包之目的埠为输入値,执行该第三函数之反函数,以得一IDX2及一S2;以及寻找IP表中,是否存在一第二储存元件使得其所存之第二IP等于该反向封包之目的IP,若是则取该第二储存元件之第二索引値为GIDX2。图式简单说明:图一系内部网路仅具私有IP之节点透过具有NAT/NAPT能力的路由器连到外部网路之示意图。图二系本发明之NAPT装置之较佳实施例的电路连结方块图。图三系图二之转换表所采用的格式之方块图。图四系图二之IP表所采用的格式之方块图。图五系本发明之网路位址-埠转换方法处理一内到外封包的动作流程图。图六系本发明之网路位址-埠转换方法处理一外到内封包的动作流程图。图七系本发明之方法1实施例所使用转换埠码之组成示意图。图八系本发明之方法2实施例所使用之EIDX的组成示意图。图九系本发明之方法2实施例所使用转换埠码之组成示意图。图十系本发明之方法3a实施例所使用转换埠码之组成示意图。图十一系本发明之方法3b实施例所使用之转换表项目的格式方块图。图十二系本发明之方法3b实施例而使用转换埠码之组成示意图。
地址 新竹市新竹科学园区创新二路2号