Files
2020-02-23 20:44:48 +08:00
..
2020-02-23 20:44:48 +08:00
2020-02-23 20:44:48 +08:00
2020-02-23 20:44:48 +08:00
2020-02-23 20:44:48 +08:00

http-vpn ("http-ndn-http")

运行环境: 1、安装NFD 2、配置: $ sudo vim /usr/local/etc/ndn/nfd.conf 查找到以下行: cs_unsolicited_policy XXX (XXX表示任意值) 改为: cs_unsolicited_policy admit-local 3、重启NFD $ nfd-stop $ nfd-start

运行方法: 1、打开client: 1)进入client文件夹 2$ make 3$ ./client -s /aaa/nfd/vpn/server -c /aaa/nfd/vpn/client

2、打开server 1)进入server文件夹 2$ make 3$ ./server -s /aaa/nfd/vpn/server

测试方法: 1、命令行: curl -v --socks5 127.0.0.1:8888 https://www.baidu.com curl -v --socks5 127.0.0.1:8888 https://dlie.sogoucdn.com/se/sogou_explorer_8.6_0903.exe -o test.exe http://mirrors.huaweicloud.com/ubuntukylin/ubuntukylin-19.04-enhanced-amd64.iso

2、浏览器: 设置浏览器socks代理端口为8888

已经修复的bug或做出的改进: 1、ctrl+c终止程序之后bind不通的问题; 2、修改了接收函数里面的数据存储数组的定义方式【new方式分配】; 3、将原来的r_queue升级为QueuePool,使得数据段顺序接收; 4、2019.12.04 将buff_size调整到8000,无内存溢出; 5、2019.12.05 ndn_socket可以接收不同地址的数据(重置QueuePool的wantSeq), 也可以向不同地址发送数据(重置本身的seq属性); 6、2019.12.05 在使用curl命令请求百度页面时概率随机性请求到; 测试情况:握手阶段请求到的协议信息是数据传输前建立ccn_p2p连接发送的消息'/aaa/nfd/vpn/client0' 推测原因: 1.1 兴趣包前缀混乱: client端的ndn_socket的预兴趣包声明周期较长,这个预兴趣包有一定概率发送到server端 新建的ndn_socket建立的兴趣监听中。 1.2 或ccn_p2p的read()函数出现BUG 或r_queue中读取数据之后进行rev_n操作这两个操作不是原子性质的操作, 导致server方接收数据之后立即进行再次读取数据,会将原来已经读过的数据再次读取, 不过这种猜测的问题在于,server方进行协议握手的ndn_socket并非是原来接收prefix的ndn_socket。。。 1.3 改造问题 由于我们在发送数据段的时候编号进行了回卷,即同一个ndn_socket发送的前后两个数据,如果是发送给两个ndn_socket目的地址的话,这两个数据的预兴趣包及数据包的名称是一致的。这出现了冲突。 解决方法: first try 如果是1.1的错误,那末错误出现的最大可能是因为“最长前缀匹配原则”,由于'/aaa/nfd/vpn/server0'和 '/aaa/nfd/vpn/server'对'/aaa/nfd/vpn/client0'发出的预兴趣包'/aaa/nfd/vpn/server'的匹配长度一致,因此两个ndn_socket都可能接收到缓存中的兴趣包。 这里作如下改进以避免以上问题,设置主监听ndn_socket的兴趣前缀为'/aaa/nfd/vpn/client_base'和'/aaa/nfd/vpn/server_base',以使得前缀匹配更加精准。 failed。 second try 直接写死主监听的兴趣前缀:/server_base /client_base 【当然这么搞在参数意义上看不大通顺,先这么测试一把】 failed。成功验证了不是前缀的问题。 将代码回卷到first try,来保证参数意义的合理性。 thrid try 根据1.3的改造问题所述。 我们可以在修改特定ndn_socket目的地址之后,不仅将该特定ndn_socket的seq重置为0,并将其start_ts进行重置,以保证后续的数据的预兴趣包Block字段及数据段的命名,均不与之前产生的数据发生冲突。 success.

尚未解决bug: 1、ndn_p2p中的丢包问题的解决(需要进行丢包测试方法的设计);