Repository files navigation

MAP

MAP is an open source CPE implementation of draft-ietf-softwire-map and draft-ietf-softwire-map-t. It runs on Linux and Openwrt.

MAP is a mechanism for transporting IPv4 packets across an IPv6 network using IP translation (MAP-T) or encapsulation (MAP-E), and a generic mechanism for mapping between IPv6 addresses and IPv4 addresses and transport layer ports. It is defined in https://datatracker.ietf.org/doc/draft-ietf-softwire-map/ and https://datatracker.ietf.org/doc/draft-ietf-softwire-map-t/

A typical MAP use case is shown in the Figure below.

 User N
Private IPv4
| Network
|
o--+---------------O
| | MAP CE |
| +-----+--------+ |
| NAPT44| MAP | |
| +-----+ | | |\ ,--------, ,~-----------,
| +--------+ | \ ,' '. ,' `,
O------------------O / \ O---------O / \ | IPv6 only | | MAP | / Public \
| Network |--+ Border +- ( IPv4 )
| (MAP Domain) | | Relay | \ Network /
O------------------O \ / O---------O \ /
| MAP CE | /". ,' `. ,'
| +-----+--------+ | / `----+--'` '-----------'
| NAPT44| MAP | |/
| +-----+ | |
| | +--------+ |
O---.--------------O
|
User M
Private IPv4
Network

Interoperation and Backwards Compatibility

This implementation is used on MAP CE and can be configured with/without NAPT44 function. The interoperation between this implementation and Cisco ASR 1K/9K has been tested successfully with either encapsulation mode or translation mode. See http://blogs.cisco.com/sp/real-world-demonstration-of-map-for-ipv6/ for more details.

Moreover, we have tested the CE implementation in CERNET/CERNET2 environment and the result shows that a unified MAP CE can be configured to support MAP-T, MAP-E, and backward compatible with stateless NAT64, stateful NAT64 and dual-stack lite. Please refer to http://datatracker.ietf.org/doc/draft-xli-softwire-map-testing for further reading.

A Short Instruction on the Usage of MAP

In the repository, the directory 'modules' contains the code for generating the MAP kernel module, while the directory 'utils' contains an utility to configure MAP parameters. You can read 'readme' for the detailed usage of the utility.

As four examples, script files 'zyhgw-T44' and 'zyhgw-T' show how to configure the translation mode with/without NAT44; while 'zyhgw-E44' and 'zyhgw-E' show how to configure the encapsulation mode with/without NAT44. To stop the module, just execute the script file 'stopall'.

About

An open source CPE implementation of MAP-E/MAP-T which can be run on Linux and Openwrt.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

MAP

MAP is an open source CPE implementation of draft-ietf-softwire-map and draft-ietf-softwire-map-t. It runs on Linux and Openwrt.

MAP is a mechanism for transporting IPv4 packets across an IPv6 network using IP translation (MAP-T) or encapsulation (MAP-E), and a generic mechanism for mapping between IPv6 addresses and IPv4 addresses and transport layer ports. It is defined in https://datatracker.ietf.org/doc/draft-ietf-softwire-map/ and https://datatracker.ietf.org/doc/draft-ietf-softwire-map-t/

A typical MAP use case is shown in the Figure below.

 User N
Private IPv4
| Network
|
o--+---------------O
| | MAP CE |
| +-----+--------+ |
| NAPT44| MAP | |
| +-----+ | | |\ ,--------, ,~-----------,
| +--------+ | \ ,' '. ,' `,
O------------------O / \ O---------O / \ | IPv6 only | | MAP | / Public \
| Network |--+ Border +- ( IPv4 )
| (MAP Domain) | | Relay | \ Network /
O------------------O \ / O---------O \ /
| MAP CE | /". ,' `. ,'
| +-----+--------+ | / `----+--'` '-----------'
| NAPT44| MAP | |/
| +-----+ | |
| | +--------+ |
O---.--------------O
|
User M
Private IPv4
Network

Interoperation and Backwards Compatibility

This implementation is used on MAP CE and can be configured with/without NAPT44 function. The interoperation between this implementation and Cisco ASR 1K/9K has been tested successfully with either encapsulation mode or translation mode. See http://blogs.cisco.com/sp/real-world-demonstration-of-map-for-ipv6/ for more details.

Moreover, we have tested the CE implementation in CERNET/CERNET2 environment and the result shows that a unified MAP CE can be configured to support MAP-T, MAP-E, and backward compatible with stateless NAT64, stateful NAT64 and dual-stack lite. Please refer to http://datatracker.ietf.org/doc/draft-xli-softwire-map-testing for further reading.

A Short Instruction on the Usage of MAP

In the repository, the directory 'modules' contains the code for generating the MAP kernel module, while the directory 'utils' contains an utility to configure MAP parameters. You can read 'readme' for the detailed usage of the utility.

As four examples, script files 'zyhgw-T44' and 'zyhgw-T' show how to configure the translation mode with/without NAT44; while 'zyhgw-E44' and 'zyhgw-E' show how to configure the encapsulation mode with/without NAT44. To stop the module, just execute the script file 'stopall'.

About

An open source CPE implementation of MAP-E/MAP-T which can be run on Linux and Openwrt.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

MAP

MAP is an open source CPE implementation of draft-ietf-softwire-map and draft-ietf-softwire-map-t. It runs on Linux and Openwrt.

MAP is a mechanism for transporting IPv4 packets across an IPv6 network using IP translation (MAP-T) or encapsulation (MAP-E), and a generic mechanism for mapping between IPv6 addresses and IPv4 addresses and transport layer ports. It is defined in https://datatracker.ietf.org/doc/draft-ietf-softwire-map/ and https://datatracker.ietf.org/doc/draft-ietf-softwire-map-t/

A typical MAP use case is shown in the Figure below.

 User N
Private IPv4
| Network
|
o--+---------------O
| | MAP CE |
| +-----+--------+ |
| NAPT44| MAP | |
| +-----+ | | |\ ,--------, ,~-----------,
| +--------+ | \ ,' '. ,' `,
O------------------O / \ O---------O / \ | IPv6 only | | MAP | / Public \
| Network |--+ Border +- ( IPv4 )
| (MAP Domain) | | Relay | \ Network /
O------------------O \ / O---------O \ /
| MAP CE | /". ,' `. ,'
| +-----+--------+ | / `----+--'` '-----------'
| NAPT44| MAP | |/
| +-----+ | |
| | +--------+ |
O---.--------------O
|
User M
Private IPv4
Network

Interoperation and Backwards Compatibility

This implementation is used on MAP CE and can be configured with/without NAPT44 function. The interoperation between this implementation and Cisco ASR 1K/9K has been tested successfully with either encapsulation mode or translation mode. See http://blogs.cisco.com/sp/real-world-demonstration-of-map-for-ipv6/ for more details.

Moreover, we have tested the CE implementation in CERNET/CERNET2 environment and the result shows that a unified MAP CE can be configured to support MAP-T, MAP-E, and backward compatible with stateless NAT64, stateful NAT64 and dual-stack lite. Please refer to http://datatracker.ietf.org/doc/draft-xli-softwire-map-testing for further reading.

A Short Instruction on the Usage of MAP

In the repository, the directory 'modules' contains the code for generating the MAP kernel module, while the directory 'utils' contains an utility to configure MAP parameters. You can read 'readme' for the detailed usage of the utility.

As four examples, script files 'zyhgw-T44' and 'zyhgw-T' show how to configure the translation mode with/without NAT44; while 'zyhgw-E44' and 'zyhgw-E' show how to configure the encapsulation mode with/without NAT44. To stop the module, just execute the script file 'stopall'.

About

An open source CPE implementation of MAP-E/MAP-T which can be run on Linux and Openwrt.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

MAP

MAP is an open source CPE implementation of draft-ietf-softwire-map and draft-ietf-softwire-map-t. It runs on Linux and Openwrt.

MAP is a mechanism for transporting IPv4 packets across an IPv6 network using IP translation (MAP-T) or encapsulation (MAP-E), and a generic mechanism for mapping between IPv6 addresses and IPv4 addresses and transport layer ports. It is defined in https://datatracker.ietf.org/doc/draft-ietf-softwire-map/ and https://datatracker.ietf.org/doc/draft-ietf-softwire-map-t/

A typical MAP use case is shown in the Figure below.

 User N
Private IPv4
| Network
|
o--+---------------O
| | MAP CE |
| +-----+--------+ |
| NAPT44| MAP | |
| +-----+ | | |\ ,--------, ,~-----------,
| +--------+ | \ ,' '. ,' `,
O------------------O / \ O---------O / \ | IPv6 only | | MAP | / Public \
| Network |--+ Border +- ( IPv4 )
| (MAP Domain) | | Relay | \ Network /
O------------------O \ / O---------O \ /
| MAP CE | /". ,' `. ,'
| +-----+--------+ | / `----+--'` '-----------'
| NAPT44| MAP | |/
| +-----+ | |
| | +--------+ |
O---.--------------O
|
User M
Private IPv4
Network

Interoperation and Backwards Compatibility

This implementation is used on MAP CE and can be configured with/without NAPT44 function. The interoperation between this implementation and Cisco ASR 1K/9K has been tested successfully with either encapsulation mode or translation mode. See http://blogs.cisco.com/sp/real-world-demonstration-of-map-for-ipv6/ for more details.

Moreover, we have tested the CE implementation in CERNET/CERNET2 environment and the result shows that a unified MAP CE can be configured to support MAP-T, MAP-E, and backward compatible with stateless NAT64, stateful NAT64 and dual-stack lite. Please refer to http://datatracker.ietf.org/doc/draft-xli-softwire-map-testing for further reading.

A Short Instruction on the Usage of MAP

In the repository, the directory 'modules' contains the code for generating the MAP kernel module, while the directory 'utils' contains an utility to configure MAP parameters. You can read 'readme' for the detailed usage of the utility.

As four examples, script files 'zyhgw-T44' and 'zyhgw-T' show how to configure the translation mode with/without NAT44; while 'zyhgw-E44' and 'zyhgw-E' show how to configure the encapsulation mode with/without NAT44. To stop the module, just execute the script file 'stopall'.

About

An open source CPE implementation of MAP-E/MAP-T which can be run on Linux and Openwrt.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

MAP

MAP is an open source CPE implementation of draft-ietf-softwire-map and draft-ietf-softwire-map-t. It runs on Linux and Openwrt.

MAP is a mechanism for transporting IPv4 packets across an IPv6 network using IP translation (MAP-T) or encapsulation (MAP-E), and a generic mechanism for mapping between IPv6 addresses and IPv4 addresses and transport layer ports. It is defined in https://datatracker.ietf.org/doc/draft-ietf-softwire-map/ and https://datatracker.ietf.org/doc/draft-ietf-softwire-map-t/

A typical MAP use case is shown in the Figure below.

 User N
Private IPv4
| Network
|
o--+---------------O
| | MAP CE |
| +-----+--------+ |
| NAPT44| MAP | |
| +-----+ | | |\ ,--------, ,~-----------,
| +--------+ | \ ,' '. ,' `,
O------------------O / \ O---------O / \ | IPv6 only | | MAP | / Public \
| Network |--+ Border +- ( IPv4 )
| (MAP Domain) | | Relay | \ Network /
O------------------O \ / O---------O \ /
| MAP CE | /". ,' `. ,'
| +-----+--------+ | / `----+--'` '-----------'
| NAPT44| MAP | |/
| +-----+ | |
| | +--------+ |
O---.--------------O
|
User M
Private IPv4
Network

Interoperation and Backwards Compatibility

This implementation is used on MAP CE and can be configured with/without NAPT44 function. The interoperation between this implementation and Cisco ASR 1K/9K has been tested successfully with either encapsulation mode or translation mode. See http://blogs.cisco.com/sp/real-world-demonstration-of-map-for-ipv6/ for more details.

Moreover, we have tested the CE implementation in CERNET/CERNET2 environment and the result shows that a unified MAP CE can be configured to support MAP-T, MAP-E, and backward compatible with stateless NAT64, stateful NAT64 and dual-stack lite. Please refer to http://datatracker.ietf.org/doc/draft-xli-softwire-map-testing for further reading.

A Short Instruction on the Usage of MAP

In the repository, the directory 'modules' contains the code for generating the MAP kernel module, while the directory 'utils' contains an utility to configure MAP parameters. You can read 'readme' for the detailed usage of the utility.

As four examples, script files 'zyhgw-T44' and 'zyhgw-T' show how to configure the translation mode with/without NAT44; while 'zyhgw-E44' and 'zyhgw-E' show how to configure the encapsulation mode with/without NAT44. To stop the module, just execute the script file 'stopall'.

About

An open source CPE implementation of MAP-E/MAP-T which can be run on Linux and Openwrt.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

MAP

MAP is an open source CPE implementation of draft-ietf-softwire-map and draft-ietf-softwire-map-t. It runs on Linux and Openwrt.

MAP is a mechanism for transporting IPv4 packets across an IPv6 network using IP translation (MAP-T) or encapsulation (MAP-E), and a generic mechanism for mapping between IPv6 addresses and IPv4 addresses and transport layer ports. It is defined in https://datatracker.ietf.org/doc/draft-ietf-softwire-map/ and https://datatracker.ietf.org/doc/draft-ietf-softwire-map-t/

A typical MAP use case is shown in the Figure below.

 User N
Private IPv4
| Network
|
o--+---------------O
| | MAP CE |
| +-----+--------+ |
| NAPT44| MAP | |
| +-----+ | | |\ ,--------, ,~-----------,
| +--------+ | \ ,' '. ,' `,
O------------------O / \ O---------O / \ | IPv6 only | | MAP | / Public \
| Network |--+ Border +- ( IPv4 )
| (MAP Domain) | | Relay | \ Network /
O------------------O \ / O---------O \ /
| MAP CE | /". ,' `. ,'
| +-----+--------+ | / `----+--'` '-----------'
| NAPT44| MAP | |/
| +-----+ | |
| | +--------+ |
O---.--------------O
|
User M
Private IPv4
Network

Interoperation and Backwards Compatibility

This implementation is used on MAP CE and can be configured with/without NAPT44 function. The interoperation between this implementation and Cisco ASR 1K/9K has been tested successfully with either encapsulation mode or translation mode. See http://blogs.cisco.com/sp/real-world-demonstration-of-map-for-ipv6/ for more details.

Moreover, we have tested the CE implementation in CERNET/CERNET2 environment and the result shows that a unified MAP CE can be configured to support MAP-T, MAP-E, and backward compatible with stateless NAT64, stateful NAT64 and dual-stack lite. Please refer to http://datatracker.ietf.org/doc/draft-xli-softwire-map-testing for further reading.

A Short Instruction on the Usage of MAP

In the repository, the directory 'modules' contains the code for generating the MAP kernel module, while the directory 'utils' contains an utility to configure MAP parameters. You can read 'readme' for the detailed usage of the utility.

As four examples, script files 'zyhgw-T44' and 'zyhgw-T' show how to configure the translation mode with/without NAT44; while 'zyhgw-E44' and 'zyhgw-E' show how to configure the encapsulation mode with/without NAT44. To stop the module, just execute the script file 'stopall'.

About

An open source CPE implementation of MAP-E/MAP-T which can be run on Linux and Openwrt.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

MAP

MAP is an open source CPE implementation of draft-ietf-softwire-map and draft-ietf-softwire-map-t. It runs on Linux and Openwrt.

MAP is a mechanism for transporting IPv4 packets across an IPv6 network using IP translation (MAP-T) or encapsulation (MAP-E), and a generic mechanism for mapping between IPv6 addresses and IPv4 addresses and transport layer ports. It is defined in https://datatracker.ietf.org/doc/draft-ietf-softwire-map/ and https://datatracker.ietf.org/doc/draft-ietf-softwire-map-t/

A typical MAP use case is shown in the Figure below.

 User N
Private IPv4
| Network
|
o--+---------------O
| | MAP CE |
| +-----+--------+ |
| NAPT44| MAP | |
| +-----+ | | |\ ,--------, ,~-----------,
| +--------+ | \ ,' '. ,' `,
O------------------O / \ O---------O / \ | IPv6 only | | MAP | / Public \
| Network |--+ Border +- ( IPv4 )
| (MAP Domain) | | Relay | \ Network /
O------------------O \ / O---------O \ /
| MAP CE | /". ,' `. ,'
| +-----+--------+ | / `----+--'` '-----------'
| NAPT44| MAP | |/
| +-----+ | |
| | +--------+ |
O---.--------------O
|
User M
Private IPv4
Network

Interoperation and Backwards Compatibility

This implementation is used on MAP CE and can be configured with/without NAPT44 function. The interoperation between this implementation and Cisco ASR 1K/9K has been tested successfully with either encapsulation mode or translation mode. See http://blogs.cisco.com/sp/real-world-demonstration-of-map-for-ipv6/ for more details.

Moreover, we have tested the CE implementation in CERNET/CERNET2 environment and the result shows that a unified MAP CE can be configured to support MAP-T, MAP-E, and backward compatible with stateless NAT64, stateful NAT64 and dual-stack lite. Please refer to http://datatracker.ietf.org/doc/draft-xli-softwire-map-testing for further reading.

A Short Instruction on the Usage of MAP

In the repository, the directory 'modules' contains the code for generating the MAP kernel module, while the directory 'utils' contains an utility to configure MAP parameters. You can read 'readme' for the detailed usage of the utility.

As four examples, script files 'zyhgw-T44' and 'zyhgw-T' show how to configure the translation mode with/without NAT44; while 'zyhgw-E44' and 'zyhgw-E' show how to configure the encapsulation mode with/without NAT44. To stop the module, just execute the script file 'stopall'.

About

An open source CPE implementation of MAP-E/MAP-T which can be run on Linux and Openwrt.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

MAP

MAP is an open source CPE implementation of draft-ietf-softwire-map and draft-ietf-softwire-map-t. It runs on Linux and Openwrt.

MAP is a mechanism for transporting IPv4 packets across an IPv6 network using IP translation (MAP-T) or encapsulation (MAP-E), and a generic mechanism for mapping between IPv6 addresses and IPv4 addresses and transport layer ports. It is defined in https://datatracker.ietf.org/doc/draft-ietf-softwire-map/ and https://datatracker.ietf.org/doc/draft-ietf-softwire-map-t/

A typical MAP use case is shown in the Figure below.

 User N
Private IPv4
| Network
|
o--+---------------O
| | MAP CE |
| +-----+--------+ |
| NAPT44| MAP | |
| +-----+ | | |\ ,--------, ,~-----------,
| +--------+ | \ ,' '. ,' `,
O------------------O / \ O---------O / \ | IPv6 only | | MAP | / Public \
| Network |--+ Border +- ( IPv4 )
| (MAP Domain) | | Relay | \ Network /
O------------------O \ / O---------O \ /
| MAP CE | /". ,' `. ,'
| +-----+--------+ | / `----+--'` '-----------'
| NAPT44| MAP | |/
| +-----+ | |
| | +--------+ |
O---.--------------O
|
User M
Private IPv4
Network

Interoperation and Backwards Compatibility

This implementation is used on MAP CE and can be configured with/without NAPT44 function. The interoperation between this implementation and Cisco ASR 1K/9K has been tested successfully with either encapsulation mode or translation mode. See http://blogs.cisco.com/sp/real-world-demonstration-of-map-for-ipv6/ for more details.

Moreover, we have tested the CE implementation in CERNET/CERNET2 environment and the result shows that a unified MAP CE can be configured to support MAP-T, MAP-E, and backward compatible with stateless NAT64, stateful NAT64 and dual-stack lite. Please refer to http://datatracker.ietf.org/doc/draft-xli-softwire-map-testing for further reading.

A Short Instruction on the Usage of MAP

In the repository, the directory 'modules' contains the code for generating the MAP kernel module, while the directory 'utils' contains an utility to configure MAP parameters. You can read 'readme' for the detailed usage of the utility.

As four examples, script files 'zyhgw-T44' and 'zyhgw-T' show how to configure the translation mode with/without NAT44; while 'zyhgw-E44' and 'zyhgw-E' show how to configure the encapsulation mode with/without NAT44. To stop the module, just execute the script file 'stopall'.

About

An open source CPE implementation of MAP-E/MAP-T which can be run on Linux and Openwrt.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages