附图说明
图1是表示在终端2和主机3之间没有IPv6到达性的情况下,在终端的前级设置了FW的情况下的本发明的时序图;
图2是在终端2和主机3之间没有IPv6到达性的网络的例子;
图3是在终端2和主机3之间没有IPv6到达性的网络的例子;
图4是在终端2和主机3之间没有IPv6到达性的网络的例子;;
图5是作为本发明的服务器的FW的装置结构图;
图6是本发明的软件的流程图;
图7是TCP连接状况DB的例子;
图8是在终端15和主机3之间没有IPv4到达性的网络的例子;
图9是在终端15和主机3之间没有IPv4到达性的情况下,在终端的前级设置了FW的情况下的本发明的时序图;
图10是在终端16和主机3之间没有IPv6到达性的网络的例子;
图11是将本发明作为软件而在终端16中具备的情况下的装置结构图;
图12是在终端16和主机3之间不具有IPv6到达性的情况下将本发明作为软件而在终端16中具备的情况下的本发明的时序图;
图13是本发明的软件的流程图;
图14是终端2和主机3之间不具有IPv6到达性的网络的例子;
图15是作为本发明的服务器的FW的装置结构图;
图16是在终端2和主机3之间不具有IPv6到达性的情况下,在终端的前级设置了FW的情况下的本发明的时序图;
图17是本发明的软件的流程图;
图18是在TCP连接状况DB的例子;
图19是在终端2a、2b和主机3之间不具有IPv6到达性的网络的例子;
图20是作为本发明的服务器的FW的装置结构图;
图21是在终端2a、2b和主机3之间不具有IPv6到达性的情况下,在终端的前级设置了FW的情况下的本发明的时序图;
图22是本发明的软件的流程图;
图23是适用终端DB的例子。
具体实施方式
【实施例1】
图2是使用本发明的典型的网络结构的例子。存在IPv4/v6双堆栈的LAN6、网络7、网络9和仅具有IPv4的连接性的网络8,LAN6和网络7经作为本发明的服务器的FW 1a来连接,网络7和网络8经边界路由器a4来连接,网络8和网络9经边界路由器b5来连接。终端2应对IPv4/v6双堆栈,具有首先尝试进行IPv6的通信,在IPv6通信失败的情况下切换到IPv4而尝试进行通信的后退(fallback)功能。在从终端2向主机3进行通信时,需要将网络8作为通信路径来选择,但是终端2-主机3之间不能进行IPv6通信,仅能进行IPv4连接,但是终端2事先不可能知道该情况。
图3是使用本发明的典型的网络结构的另一例。图2中的LAN6和网络7之间存在另一网络11,经在作为本发明的服务器的具有FW功能的BB路由器1b和隧道服务器10之间设置的隧道12,来连接LAN6和网络7。
图4是使用本发明的典型的网络结构的又一例。在这些的例子中,经由在BB路由器13和作为本发明的服务器的具有FW功能的隧道服务器1c之间设置的隧道12,来连接LAN6和网络7。
图1是表示了从终端2向主机3进行TCP连接的情况下的本发明的时序图。从终端2发出的IPv6的TCP SYN(s1)经FW 1a/1b/1c到达边界路由器a4(s2)。因网络8没有IPv6连接性,所以边界路由器a向发送源返回ICMPv6错误“Destination Unreachable:no routeto destination(ICMP类型=1:代码0)”(s3)。接收了该错误的FW确认TCP连接状态,在确认了是SYN_SENT或SYN_RECEIVEERD状态的情况下,将ICMPv6错误“DestinationUnreachable:no route to destination”改写为作为硬件错误的另一ICMPv6错误,例如“Destination Unreachable:communication withdestination administratively prohibited(ICMP类型=1、代码=1)”,而传送到终端(s4)。该改写候选除此之外,还可考虑“DestinationUnreachable:port unreachable(不能到达目标:不能到达端口)(ICMP类型=1,代码=4)”。接收了S4的终端不重复进行超时和重试,而直接进入到IPv4的TCP连接,来继续进行时序(s5~s13)。对于IPv4由于确保了终端2和主机3之间的连接性,所以尤其不会失败,在终端2和主机3之间确立IPv4下的TCP连接并进行通信(S14)。
由于ICMPv6错误“Destination Unreachable:address unreachable(不能到达目标:不能到达地址)(ICMP类型=1:代码=3)”也是软件错误,所以它也与“Destination Unreachable:no route todestination”相同,考虑通过“Destination Unreachable:communicationwith destination administratively prohibited”等来改写。
图5是作为本发明的服务器的FW装置1a/1b/1c的装置结构图。CPU101、存储器102和NIF103是通过总线104相连的一般路由系统。存储器内有分组传送软件1024。作为分组传送软件的一部分有通常的FW功能的软件1021,其一部分是所改造的本发明的软件1022和TCP连接状况管理DB1023。
图6是本发明的软件1022的流程图。将该处理插入到通常的FW功能软件1022的处理的前级或中间。FW1a/1b/1c在接受ICMPv6错误“Destination Unreachable:no route to destination(ICMP类型=1:代码0)”(f1)后,本发明的软件1022检索TCP连接状况DB 1023(f2),判断是否存在与该ICMPv6错误对应的TCP连接(f3)。在对应的TCP连接不存在的情况下,继续进行FW处理(f4)。在对应的TCP连接存在的情况下,接着确认TCP连接状况(f5)。在连接状况不是“SYN_SENT”或“SYN_RECEIVED”的情况下,继续进行FW处理(f6)。在连接状况是“SYN_SENT”或“SYN_RECEIVED”的情况下,将所接受的ICMPv6分组改写为“Destination Unreachable:communication with destination administratively prohibited(ICMP类型=1,代码=1)”等作为硬件错误的ICMPv6错误(f7),而继续进行FW处理(f8)。由此,在通过通常的FW处理软件1021没有拒绝ICMPv6分组的情况下,变为改写后的ICMPv6错误到达终端2,而可以不等待超时而进入到IPv4连接。
图7是TCP连接状况DB 1024的例子。按每个发送源和目标的地址以及端口来保持状况,由此可以确认每个分组的连接状况。
通过以上的实施例,可以避免在IPv4/IPv6双堆栈使用时,对没有IPv6到达性的目标的TCP连接延迟,而不用修改具有IPv6→IPv4后退功能的终端的软件。
【实施例2】
实施例1中,考虑了具有IPv6→IPv4的后退功能的终端在要进行TCP通信的状况下,没有终端-主机间的IPv6到达性的情况,但是还可考虑具有IPv4→IPv6的后退功能的终端在要进行TCP通信的状况下没有终端-主机之间的IPv4到达性的情况。该情况也可通过本发明来加以解决。
图8是在上述状况中使用本发明的典型的网络结构的例子。存在IPv4/IPv6双堆栈的LAN6、网络7、网络9和仅具有IPv6连接性的网络14,LAN6和网络7经作为本发明的服务器的FW 1d连接,网络7和网络14经边界路由器a4来连接,网络14和网络9经边界路由器b5来连接。终端15是应对IPv4/IPv6双堆栈的,具有首先尝试进行IPv4通信,在IPv4通信失败的情况下切换到IPv6而尝试进行通信的后退功能。在从终端15向主机3进行通信时,需要将网络14作为通信路径来选择,所以终端15-主机3之间不能进行IPv4通信,仅可通过IPv6来进行连接,但是终端15事先不可能知道该情况。
图9是表示了从终端15向主机3进行TCP连接的情况下的本发明的时序图。从终端14发出的IPv4的TCP SYN(s21)经FW 1d到达边界路由器a4(s22)。由于网络14没有IPv4连接性,所以边界路由器a向发送源返回ICMPv4错误“Destination Unreachable:network unreachable(不能到达目标:不能到达网络)(ICMP类型=3:代码0)”或“Destination Unreachable:host unreachable(不能到达目标:不能到达主机)(ICMP类型=3:代码1)”(s23)。接受了该错误的FW确认TCP连接状态并在确认了是SYN_SENT或SYN_RECEIVERED状态的情况下,将ICMPv4错误改写为作为硬件错误的其他ICMPv4错误,例如“Destination Unreachable:destinationnetwork administratively prohibited(不能到达目标:目标网络在管理上被禁止)(ICMP类型=3、代码=9)”后传送到终端(s24)。该改写候选除此之外,还可考虑ICMP类型=1且代码是0,1,5之外的所有情况。接受了s24的终端直接进入到IPv6的TCP连接并继续进行时序,而不重复进行超时和重试(s25~s33)。对于IPv6,确保了终端15和主机3之间的连接性,所以尤其不会失败,而在终端15和主机3之间确立IPv6的TCP连接来进行通信(s34)。
由于ICMPv6错误“Destination Unreachable:address unreachable(ICMP类型=1:代码5)”也是软件错误,所以它也与“DestinationUnreachable:network unreachable”或“Destination Unreachable:hostunreachable”相同,也可考虑通过“Destination Unreachable:destinationnetwork administratively prohibited”等来加以改写。
通过以上的实施例,在IPv4/IPv6双堆栈使用时,可以避免对没有IPv4到达性的目标的TCP连接延迟,而不用修改具有IPv4→IPv6的后退功能的终端的软件。
【实施例3】
实施例1中在终端的前级,物理地设置了其他的FW,但是也可通过将FW功能作为软件安装而在终端的分组传送软件的前级设置的结构来实施本发明。
图10是使用本发明的典型的网络结构的例子。存在IPv4/v6双堆栈的LAN6、网络7、网络9和仅具有IPv4的连接性的网络8,LAN6和网络7经边界路由器c17来连接,网络7和网络8经边界路由器a4来连接,网络8和网络9经边界路由器b5来连接。终端16是应对IPv4/IPv6双堆栈的,具有首先尝试进行IPv6的通信,在IPv6通信失败的情况下切换到IPv4而尝试进行通信的后退功能,进一步,具有安装了本发明的软件功能的FW功能来作为软件。在从终端16向主机3进行通信时,需要将网络8作为通信路径来选择,所以终端2-主机3之间不能进行IPv6通信,仅可通过IPv4来进行连接,但是终端16事先不可能知道该情况。
图12是表示了从终端16向主机3进行TCP连接的情况下的本发明的时序图。从终端16的分组传送软件16024发出的IPv6的TCPSYN(s41)经终端16的FW功能软件16021到达边界路由器a4(s42)。由于网络8没有IPv6连接性,所以边界路由器a向发送源返回ICMPv6错误“Destination Unreachable:no route to destination(ICMP类型=1:代码0)”(s43)。接受了该错误的终端16的FW功能软件16021确认TCP连接状态并在确认了是SYN_SENT或SYN_RECEIVERED状态的情况下,将ICMPv6错误“DestinationUnreachable:no route to destination”改写为作为硬件错误的其他ICMPv6错误,例如“Destination Unreachable:communication withdestination administratively prohibited(ICMP类型=1、代码=1)”后传送到终端16的分组传送软件16024(s44)。该改写候选除此之外,还考虑“Destination Unreachable:port unreachable(ICMP类型=1、代码=4)”。接受了s44的终端直接进入到IPv4的TCP连接并继续进行时序,而不重复进行超时和重试(s45~s53)。对于IPv4,确保了终端16和主机3之间的连接性,所以尤其不会失败,而在终端16和主机3之间确立IPv4的TCP连接而进行通信(s54)。
由于ICMPv6错误“Destination Unreachable:address unreachable(ICMP类型=1:代码3)”也是软件错误,所以它也与“DestinationUnreachable:no route to destination”相同,还考虑通过“DestinationUnreachable:communication with destination administrativelyprohibited”等加以改写。
图11是使用本发明的终端16的装置结构图。CPU1601、存储器1602、NIF1603是通过总线1604加以连接的一般网络终端系统。在存储器内有分组传送软件16024、使用该软件的网络通信应用程序16025和通常的FW功能软件16021。通常的FW功能软件1602的一部分为改造后的本发明的软件16022和TCP连接状况管理DB16023。
图13是本发明的软件16022的流程图。该处理插入到通常的FW功能软件16022处理的前级,或中间。终端16在接受ICMPv6错误“Destination Unreachable:no route to destination(ICMP类型=1:代码0)”后(i11),本发明的软件16022检索TCP连接状况DB 16023(f12),并判断是否存在与该ICMPv6错误对应的TCP连接(f13)。在对应的TCP连接不存在的情况下,继续进行FW处理(f14)。在对应的TCP连接存在的情况下,接着确认TCP连接状况(f15)。在连接状况不是“SYN_SENT”或“SYN_RECEIVED”的情况下,继续进行FW处理(f16)。在连接状况是“SYN_SENT”或“SYN_RECEIVED”的情况下,将所接受的ICMPv6分组改写为“Destination Unreachable:communication with destinationadministratively prohibited(ICMP类型=1,代码=1)”等作为硬件错误的ICMPv6错误(f17),而继续进行FW处理(f18)。由此,在通过通常的FW处理软件16021没有拒绝ICMPv6分组的情况下,变为改写后的ICMPv6错误到达通常的分组传送软件16024,可以不等待超时地进入到IPv4连接。
通过以上的实施例,仅通过追加新的软件,而不用修改具有IPv6→IPv4的后退功能的终端的软件本体,就可在IPv4/IPv6双堆栈使用时,避免对没有IPv6到达性的目标的TCP连接延迟。
【实施例4】
实施例1中接受了ICMPv6软件错误的FW装置直接变换到ICMPv6硬件错误而发送到终端,但是也有想要在某种程度上弄清楚是否是作为软件错误的本来含义的“暂时的故障”的要求。因此,也可以是,FW装置以一定次数将ICMPv6软件错误原样送到终端,在超过了一定次数后,才首次进行ICMPv6硬件错误变换,以这样的形式来实施本发明。
图14是使用本发明的典型网络结构图。与实施例1的图2相比,FW装置替换为具有在一定次数之前将ICMPv6软件错误原样送到终端的功能的FW装置1e。
图15是作为本发明的服务器的FW装置1e的装置结构图。与实施例1的图5相比,本发明的软件替换为具有检查软件错误发送次数的功能1025。另外,TCP连接状况DB替换为具有计数器的1026。
图16是表示了从终端2向主机3进行TCP连接的情况下的本发明的时序图。与实施例1的图1相比,将ICMPv6软件错误原样发送到终端,在进行重试的时序(s61-x、s62-x、s63-x、s64-x)进行了n-1次(1<n<m:m是在终端侧进行IPv4后退的重试次数)后,进行从软件错误向硬件错误的变换(s65)。
图17是本发明的软件1025的流程图。与实施例1的图6相比,在检查了TCP连接状况的f5之后,追加检查重试计数器的次数的处理f19。在f19中检查的结果为计数器的值小于n的情况下,在进行了将计数器值增加1的处理f20后,继续进行FW处理(f21)。
图18是TCP连接状况DB 1026的例子。与实施例1的图7相比,追加重试计数器。
通过以上的实施例,与任由终端进行IPv4后退相比,可以迅速地促使终端进行IPv4后退,进一步,与实施例1相比可以更准确地检测网络的暂时故障。
【实施例5】
实施例1中将来自所有终端的ICMPv6软件错误变换为ICMPv6硬件错误后加以发送,但是,还有想要按每个终端,来选择是弄清楚是否是作为软件错误的本来的含义的“暂时故障”、还是快速进行后退的要求。因此,也可以是,FW装置具有终端的列表,选择是将ICMPv6软件错误原样发送到终端、还是进行ICMPv6硬件错误变换,以这样的形式实施本发明。
图19是使用本发明的典型的网络结构图。与实施例1的图2相比,FW装置按每个终端替换为FW装置1f。另外,终端为适用软件错误→硬件错误变换的2a和不适用的2b这两者。
图20是作为本发明的服务器的FW装置1f的装置结构图。与实施例1的图5相比,追加记录了按每个终端的软件错误→硬件错误变换是否适用的终端适用DB 1028,本发明的软件替换为具有检查终端适用DB 1028的功能的1027。
图21是表示了从终端2a、2b向主机3进行TCP连接的情况下的本发明的时序图。从终端2a的连接与实施例1的图1完全相同地进行,但是来自终端2b的连接将ICMPv6软件错误原样发送到终端,在进行重试的时序(s101-x、s102-x、s103-x、s104-x)进行了m次(m是在终端侧进行IPv4后退的重试次数)后,在终端侧进行IPv4后退后加以连接(s105~s114)。
图22是本发明的软件1027的流程图。与实施例1的图6相比,在检索TCP连接状况的f2之前,检索适用终端DB 1028(f22),追加检查是否是适用软件错误→硬件错误变换的终端的处理f23。在f23中检查后的结果是非适用终端的情况下,继续进行FW处理(f24)。
图23是适用终端DB 1028的例子。可以按每个终端的地址来选择适用/非适用。
通过以上的实施例,可以按每个终端来选择是任由终端自身进行IPv4后退、还是或通过软件错误→硬件错误变换来迅速地促使终端进行IPv4后退。