ICN通信主要包括两种包类型:信息包和数据包。其中信息包是用于记录用户请求的路径,方便内容发布者返回响应数据;数据包是发布者根据用户的请求进行回应的内容。
无论是信息包还是数据包都包含三张表:
1、内容存储表(Content Store,CS)用于半永久性存储接收到的数据包;
2、待定请求表(Pending Interest Table,PIT)储存信息包信息及接收到的匹配信息的接口集;
3、转发信息表(Forwarding Information Base,FIB)转发信息。
当有用户的请求信息包到达内容路由器时,ICN的处理流程如下:
查找CS表,根据匹配前缀的内容对象,查找用户请求的内容。
找到请求内容:立刻通过信息转入接口返回数据信息,并丢弃信息包;
未找到请求内容:查找PIT表;查找PIT表,查找之前是否转发过来自其他节点发起的与该条目的请求内容相同的兴趣包。
找到:转发过,将本次兴趣包的转入接口添加到已经存在的PIT中;
未找到:查找FIB表;查找FIB,查找最长匹配前缀,进行路由寻址,决定转发信息包的路径。
找到:在PIT表中创建信息包转入接口的信息条目,并转发信息包;
未找到:丢弃信息包。
当数据包到达内容路由器时,首先对数据包进行最长前缀匹配,查找CS缓存条目,如果有相同的缓存数据,则为重复数据包,丢弃;若没有,则与PIT表中条目匹配。如果PIT中由匹配条目,则向相应的接口转发数据包,并将数据包缓存在内容存储表中,如果PIT中没有匹配条目,则丢弃数据包。数据包的路由路径与兴趣包的路径刚好相反。
另外,当在发布者或者内容存储表中找到内容对象时,信息被丢弃,响应的信息以数据包的形式原路返回。当一个内容路由器接收到一个数据信息,在匹配PIT表的时候,发现一个条目列表包含多个接口,则复制内容进行多播,直到数据到达用户,然后删除PIT表中的信息包匹配目录。